Create a Subscription in the Server
Add a Subscribe Button on checkout
Verify checkout response and signature on the server
Verify payment status
Use your server and Glomopay secret keys to create a subscription via the Create Subscription API.
POST https://api.glomopay.com/api/v1/subscriptionscurl -i -X POST \
https://api.glomopay.com/api/v1/subscriptions \
-H 'Authorization: Bearer <YOUR_JWT_HERE>' \
-H 'Content-Type: application/json' \
-d '{
"customer_id": "cust_5JU9yv0lGSUP",
"product_name": "ShieldGuard Insurance",
"product_description": "Flexible, monthly insurance for belongings, travel, and digital assets; easy to manage",
"plan_name": "ShieldGuard Lite",
"plan_description": "Simple, monthly insurance plan that covers your basic belongings and key digital assets",
"amount": 1000,
"currency": "USD",
"interval_type": "month",
"interval_count": 1,
"billing_cycles": 12,
"start_date": "2025-01-01",
"expires_at": "2025-01-07",
"notify_customer": true,
"notes": {
"key1": "value1",
"key2": "value2"
},
"reference_number": "R0001",
"starts_with_first_payment": true
}'{
"id": "sub_5JU9yv0lGSUP",
"customer_id": "cust_5JU9yv0lGSUP",
"product_name": "ShieldGuard Insurance",
"product_description": "Flexible, monthly insurance for belongings, travel, and digital assets, easy to manage",
"plan_name": "ShieldGuard Lite",
"plan_description": "Simple, monthly insurance plan that covers your basic belongings and key digital assets",
"reference_number": "R0001",
"status": "active",
"amount": 1000,
"currency": "USD",
"interval_type": "month",
"interval_count": 1,
"billing_cycles": 12,
"start_date": "2025-01-01",
"end_date": "2025-12-01",
"expires_at": "2025-01-07",
"next_payment_date": "2025-02-01",
"subscription_link_url": "https://checkout.glomopay.com/subscription/sub_5JU9yv0lGSUP",
"cancelled_at": "2025-01-15",
"notes": {
"key1": "value1",
"key2": "value2"
}
}You will receive an “id” in the response. This id should be passed to the Checkout SDK.
Add a "Subscribe" button to your website and integrate the Glomo Checkout SDK as shown below:
<button id="buy-button" class="buy-button">Buy Now</button>
<script type="module">
import { GlomoCheckoutApi } from 'https://glomopay-checkout-sdk.web.app/index.js';
const checkout = new GlomoCheckoutApi({
SubscriptionId: 'sub_679a16457aP6K', // Pass the order_id received from the server in step 1
publicKey: 'live_687b0151Bid24PAI', // Pass the public key received from the dashboard
callbackUrl: 'https://yourwebsite.com/payment-result', // Optional: URL to redirect after payment completion
});
document.getElementById('buy-button').addEventListener('click', () => {
checkout.open();
});
checkout.on('payment.success', function (response) {
// Handle payment success
});
checkout.on('payment.failure', function (response) {
// Handle payment failure
});
</script>- The code snippet will create a checkout instance and open the checkout form when the user clicks on the subscribe button.
- The subscription created via your server in Step 1 should be passed to the checkout instance.
- Handle the payment success and failure events, in the handlers function you will get payment object or error object based on the payment status. Collect these and send them to your server and retry accordingly in case payment fails.
- If a callbackUrl is provided, users will be redirected to that URL after payment completion. In this case, the success and failure event handlers will not be triggered.
When you provide a callbackUrl, the user will be automatically redirected to that URL after payment completion with the following parameters:
https://yourwebsite.com/payment-result?status=success&orderId=123456&signature=abc123def456https://yourwebsite.com/payment-result?status=failed&orderId=123456&signature=abc123def456This allows server-side handling of payment results in addition to the client-side event handlers.
In the payment response, you will receive a payment_id, subscription_id, status, and a signature. You must validate the signature using your Glomo secret key to confirm payment authenticity.
<?php
function generate_signature($order_id, $payment_id, $status, $secret) {
$data = $order_id . "|" . $payment_id . "|" . $status;
return hash_hmac('sha256', $data, $secret);
}
// Example Usage
$subscription_id = "sub_679a16457aP6K";
$payment_id = "payment_679a16457an6K";
$status = "success";
$secret = "your_secret_key";
echo generate_signature($order_id, $payment_id, $status, $secret);
?>Payment's status can be tracked in the following ways
- You can track the payments linked to your sub_id via dashboard.
- You can also track the payment status via polling the Payment APIs.
- You can also track the payment status via Webhooks which will notify you about the payment status.