Top commit at collab/phasefx/lp1774892-stripe-v3 in the working repo. https://git.evergreen-ils.org/?p=working/Evergreen.git;a=commitdiff;h=734dd176ce8075fafa8c9227af99e34a3d2d790d This commmit changes the OPAC to use https://js.stripe.com/v3/ instead of https://js.stripe.com/v2/ for processing payments through Stripe. Additionally, it disables the "internal" credit card form in the staff client when Stripe is the payment processor (or if the processor is not set at all), as that does not currently work. It also does not replace Business::Stripe's use of the "Charges API" with the newer "Payment Intents" API on the backend, but credit card details are still not sent to the Evergreen server. It's easy to get test environment keys from Stripe without needing to provide credit card details, etc.: https://dashboard.stripe.com/register Once registered, go to https://dashboard.stripe.com/test/apikeys The Publishable key should go into Evergreen's "Stripe publishable key" library setting (credit.processor.stripe.pubkey) The Secret key should go into the "Stripe secret key" setting (credit.processor.stripe.secretkey). You should also set "Enable Stripe payments" (credit.processor.stripe.enabled) and "Allow Credit Card Payments" (credit.payments.allow) to True, and "Name default credit processor" (credit.processor.default) to Stripe. For my test system, I used the CONS org for all these settings. Test plan using Concerto: In the staff client, go to /eg/staff/circ/patron/71/bills (or use patron barcode 99999376864) Bill the patron $20. Log out of the staff client or use an incognito window for the public OPAC. Log into the OPAC as patron 99999376864 (password leona1234). The Account Summary with the $20 billing should come right up. Click Pay selected charges. For the card number, use 4242424242424242, which should show up as Visa. For the MM/YY, CVC, and ZIP fields, any valid looking data should work, and the form will warn you about expired dates realtime. Click Submit payment. The bill should be paid and a receipt generated. I noticed that the charges summary in the upper right does not change until after a new page load, but that's an existing bug. If you go to https://dashboard.stripe.com/test/logs?method[]=post&method[]=delete&direction[]=connect_in&direction[]=self you should see an entry for POST /v1/tokens and one for POST /v1/charges corresponding to your test activity. Log out of the OPAC and back into the staff client. Bill the same patron another $20. Change the "Name default credit processor" (credit.processor.default) library setting to PayPal. Log out of the staff client or use an incognito window for the public OPAC. Log into the OPAC as patron 99999376864 (password leona1234). Click Pay selected charges. At this point, you should get the original credit card form and not the one you used for Stripe. I haven't actually tested this with PayPal credentials, but bonus points for anyone giving this area extra scrutiny. Proceeding with the same credit card details and submitting the payment should result in "Credit card processor not enabled" (assuming no PayPal credentials have been configured). Log out of the OPAC and back into the staff client. Go back to the patron's account and attempt a credit card payment there. The Credit Card Information dialog should pop-up with the Process Where? field defaulting to "Process payment through Evergreen" (because we're still partially setup for PayPal). Following through with the payment should result in a CREDIT_PROCESSOR_NOT_ENABLED error. Change the "Name default credit processor" (credit.processor.default) library setting to Stripe. Log out of and back into the staff client for the setting to register with the client. Try to pay the patron's bill with the example credit card again in the staff client. The Credit Card Information dialog should default to "Record externally processed payment", and the other other option should be disabled. Delete the "Name default credit processor" (credit.processor.default) library setting altogether, log out, log in, and try the experiment again. The Credit Card Information dialog should default to "Record externally processed payment", and the other other option should be disabled.