Add support for Stripe Terminal (physical smart-readers, with the JavaScript SDK support)
I'm testing Stripe physical terminals. Here is what I think is required to make it work in the Stripe CiviCRM extension:
-
Admin setting for selecting the terminal's Location (a Location being a Stripe object, that can be defined either via API, or by the Stripe Terminal admin interface; simpler for now to ask admins to to do initial Location setup in the Stripe UI)Not necessary, this can be done from the Stripe Dashboard: go to the Readers, then Location, then you can add a terminal. -
Code for connecting to the terminal using a New Contribution backend form (make sure the device is available, list devices) -
Code for doing the Payment Intent, and processing the transaction -
Make sure that CiviCRM stores whatever relevant information -
Make sure that Credit Cards and Debit Cards both work
Note that:
- This would only support the "smart" readers, such as the BBPOS WisePad 3 (which I'm testing) or maybe the Verifone P400. The cheaper US-only Stripe T2 would not work, because it is bluetooth-only and requires developing a mobile app (or using a third-party app). The smart-readers are basically stripped-down Android devices, with wifi and bluetooth, so they connect over the Internet to talk to Stripe, and CiviCRM talks to Stripe. It does not really talk directly to the reader.
- This work is unfunded. I mostly wanted to do a quick proof of concept. If this could be useful to your organisation, please consider funding the work).