Build your own Jovvie Checkout integration
Jovvie Checkout adds in-person card payments to any app, website, or platform. If your platform does not have a ready-made Jovvie integration, you can build your own with the Jovvie PHP SDKs. This section is for developers and agencies doing that work for a merchant.
Anyone can build an integration. The ready-made integrations for WooCommerce, GiveWP, Gravity Forms, and Event Tickets work the same way as the one you will build.
What you can build
Section titled “What you can build”Your integration runs on your server and lets the merchant’s staff take a card payment on a card reader from inside your app. For example, you can add in-person payments to:
- A booking or appointment system
- A membership, class, or club platform
- An event check-in or ticketing app
- A custom online store that also sells in person
With the SDKs, your integration can:
- Create one-time payments and send staff to the Jovvie payment page to take them.
- Create recurring payments (Stripe only).
- Give staff access to the merchant’s card readers (Stripe only).
- Send a payment straight to a registered NMI terminal (NMI only).
- Check a payment’s status and receive webhooks when it changes.
Refunds are not available in the SDKs yet. SDK support for refunds is planned. Merchants refund in their Stripe Dashboard or in the NMI portal. See Refunds.
How a payment works
Section titled “How a payment works”A typical payment goes like this:
- A staff member starts a checkout in your app.
- Your server creates a payment with the SDK. You give the amount, currency, description, and the addresses to send the browser back to afterward. Jovvie returns the payment with its ID and a checkout link.
- Your server saves the payment ID with your order.
- Your app sends the staff member’s browser to the checkout link. This opens the Jovvie payment page.
- On the payment page, staff choose a card reader. The customer taps, inserts, or swipes their card on the reader.
- After checkout, the payment page sends the browser to your return URL. If staff click ← Back while the payment is still
pending, Jovvie marks itcancelled. ← Back then goes to your cancel URL when the payment iscancelled, and to your return URL for any other status. Closing the browser tab does not redirect the browser. - Your server confirms the result. It fetches the payment with the SDK and checks its status, and it listens for webhooks about later changes.
- Your app marks the order as paid.
For what staff see in step 5, see Take a payment on the Jovvie payment page.
Who can use the card readers
Section titled “Who can use the card readers”The payment page only lists the merchant’s card readers on a device that is allowed to use them. With the Stripe SDK, your server can create an authorization link that unlocks the readers in a staff member’s browser. Only give these links to the merchant’s staff, never to customers or anonymous visitors. See Unlock card readers for staff.
Stripe or NMI
Section titled “Stripe or NMI”Jovvie has one SDK for each payment processor. Use the one that matches the merchant’s account. The ready-made Checkout plugins are Stripe only, but your own integration can use either processor.
| Stripe | NMI | |
|---|---|---|
| Composer package | bizswoop/jovvie-payments |
bizswoop/jovvie-payments-gateway |
| Client class | JovviePayments\JovviePaymentsClient |
JovviePaymentsGateway\JovviePaymentsGatewayClient |
| Platform provider ID | Required | Not used |
| Test mode | Yes | No. Every payment is real |
| One-time payments | Yes | Yes |
| Recurring payments | Yes | No |
| Authorization links for staff | Yes | No |
| Register and list terminals | No | Yes |
| Webhook event names start with | jovvie. |
jovvie-gateway. |
| Refunds | In the Stripe Dashboard | In the NMI portal |
For the merchant-facing differences, see Stripe and NMI: what’s different.
What you need
Section titled “What you need”- A platform provider ID from Jovvie support (Stripe SDK only). Your integration must pass it explicitly. Without the right ID, an integration can work in test mode and fail in live mode.
- A merchant account with Stripe or NMI connected.
- A server application in the merchant’s Payments Dashboard, with its public key, secret key, and webhook key.
- A server that runs PHP 7.4 or later with Composer.
- An HTTPS address on your server to receive webhooks.
Get started walks you through each of these.
Pages in this section
Section titled “Pages in this section”- Get started
- Install the SDK
- Create a payment (Stripe)
- Unlock card readers for staff
- Take payments with NMI
- Handle webhooks
- Check a payment’s status
- Recurring payments
- Refunds
- Test your integration
- Handle errors
Need help?
Section titled “Need help?”To get a platform provider ID or ask about your integration, contact Jovvie support.