Apple Pay Integration Steps
Learn how you can integrate with Pine Labs Online APIs to start accepting payments on your website using the Apple Pay payment option.
Learn how you can integrate with Pine Labs Online APIs to start accepting payments on your website using the Apple Pay payment option.
Follow the below steps to integrate with Pine Labs Online seamless checkout APIs in your application.
- [Prerequisite] Generate Token
- Create Order
- Apple Pay Integration via Web SDK
- Handle Payment
- Get Order by Order ID
๐ Note
- Ensure you store your Client ID and Secret in your Backend securely.
- Integrate our APIs on your backend system.
- We strictly recommend not to call our APIs from the frontend.
- Failure to adhere to the above guidelines may result in legal implications. In such cases, you will be held responsible for any damage or loss arising from non-compliance.
1. [Prerequisite] Generate Token
Integrate our Generate Token API in your backend servers to generate the access token. Use the token generated to authenticate Pine Labs Online APIs.
Below are the sample requests and response for the Generate Token API.
curl --request POST \
--url https://pluraluat.v2.pinepg.in/api/auth/v1/token \
--header 'accept: application/json' \
--header 'content-type: application/json' \
--header 'Request-Timestamp: 2024-07-09T07:57:08.022Z' \
--header 'Request-ID: c17ce30f-f88e-4f81-ada1-c3b4909ed235' \
--data '
{
"client_id": "a17ce30e-f88e-4f81-ada1-c3b4909ed232",
"client_secret": "fgwei7egyhuggwp39w8rh",
"grant_type": "client_credentials"
}
'
Refer to our Generate Token API documentation to learn more.
2. Create Order
To create an Order, use our Create Order API, for authentication use the generated access token in the headers of the API request.
Below are the sample requests and response for a Create Order API.
curl --location 'https://pluraluat.v2.pinepg.in/api/pay/v1/orders' \
--header 'Authorization: Bearer {token}' \
--header 'Content-Type: application/json' \
--header 'Request-ID: c17ce30f-f88e-4f81-ada1-c3b4909ed235' \
--header 'Request-Timestamp: 2024-07-09T07:57:08.022Z' \
--header 'accept: application/json' \
--data '
{
"merchant_order_reference": "112345",
"order_amount": {
"value": 1100,
"currency": "INR"
},
"pre_auth": false,
"allowed_payment_methods": [
"CARD",
"UPI",
"NETBANKING",
"POINTS",
"WALLET"
],
"notes": "order1",
"callback_url":"https://sample-callback-url",
"failure_callback_url": "https://sample-failure-callback-url",
"purchase_details": {
"customer": {
"email_id": "kevin.bob@example.com",
"first_name": "Kevin",
"last_name": "Bob",
"customer_id": "123456",
"mobile_number": "9876543210",
"country_code": "91",
"billing_address": {
"address1": "10 Downing Street Westminster London",
"address2": "Oxford Street Westminster London",
"address3": "Baker Street Westminster London",
"pincode": "51524036",
"city": "Westminster",
"state": "Westminster",
"country": "London",,
"full_name": "Kevin Bob",
"adddress_type": "Home",
"address_category": "billing"
},
"shipping_address": {
"address1": "10 Downing Street Westminster London",
"address2": "Oxford Street Westminster London",
"address3": "Baker Street Westminster London",
"pincode": "51524036",
"city": "Westminster",
"state": "Westminster",
"country": "London",,
"full_name": "Kevin Bob",
"adddress_type": "Home",
"address_category": "shipping"
}
},
"merchant_metadata": {
"key1": "DD",
"key2": "XOF"
}
}
}
'
Refer to our Create Order API documentation to learn more.
3. Apple Pay Integration via Web SDK
You can integrate Apple Pay using one of the following approaches:
3.1. Option 1: Integrate Apple Pay Web JS SDK
๐ง Pre-requisites:
- Before proceeding, ensure that all prerequisites listed in the Quick Guide are fully completed. The required prerequisites may differ depending on the implementation type you choose, so review them carefully for a smooth and seamless experience.
- A PCI compliance certificate is required if you are using self-managed decryption of the Apple payment token.
- [Prerequisite] Integrate APIs in your Backend: If you are using the Apple Pay JS Web SDK with self-decryption, you must also integrate the following additional APIs.
- Invoke the Apple Pay SDK: Integrate the Apple Pay Web JavaScript SDK to present Apple Pay as a payment option on your checkout page.
- Decrypt the Card Token Details: Once the customer completes authentication, Apple Pay returns encrypted card token details in the callback response.
- You are responsible for decrypting these details securely on your server.
- Process the Payment: Use Pine Labsโ Authorize Payment API to send the decrypted card token details and complete the payment authorization.
Refer to Apple Restoring the Symmetric Key documentation to learn more.
Refer to Apple Payment Token Format Reference documentation to learn more.
[Prerequisite] Integrate APIs in your Backend
3.1.1. Create Payment
To create a payment, use our Create Payment API, use the order_id returned in the response of a Create Order API to link the payment against an order.
Below are the sample requests and sample response for Create Payment API.
curl --location 'https://pluraluat.v2.pinepg.in/api/pay/v1/orders/{order_id}/payments' \
--header 'Authorization: Bearer {token}' \
--header 'Content-Type: application/json' \
--header 'Request-ID: c17ce30f-f88e-4f81-ada1-c3b4909ed235' \
--header 'Request-Timestamp: 2024-07-09T07:57:08.022Z' \
--header 'accept: application/json' \
--data '
{
"payments": [
{
"merchant_payment_reference": "d6c3812a-ad9c-4a03-aace-89546c38ac6f",
"payment_method": "WALLET",
"payment_amount": {
"value": 1000,
"currency": "INR"
},
"payment_option": {
"wallet_details": {
"wallet_code": "APPLE_PAY"
}
},
"device_info": {
"device_type": "WEB",
"browser_type": "CHROME",
"source_ip_address": "10.10.10.10",
"browser_user_agent": "Mozilla/5.0 (WindowsNT 10.0 WOW64; rv:51.0)"
}
}
]
}
'
Refer to our Create Payment API documentation to learn more.
๐ Note:
When the pre-authorization is set to true you can capture the payment after successful delivery or service.
3.1.2. Authorize Payment
Use this API to authorize payments initiated through Apple Pay..
Below are the sample requests and response for the Authorize Payment API.
curl --request POST \
--url https://pluraluat.v2.pinepg.in/api/pay/v1/orders/{order_id}/payments/{payment_id}/authorize \
--header 'accept: application/json' \
--header 'content-type: application/json' \
--header 'Request-Timestamp: 2024-07-09T07:57:08.022Z' \
--header 'Request-ID: c17ce30f-f88e-4f81-ada1-c3b4909ed235' \
--data '
{
"decrypted_card_details": {
"token": "4111111111111111",
"expiration_month": "12",
"expiration_year": "2031",
"cryptogram": "AceY+igABPs3jdwNaDg3MAACAAA=",
"cavv": "AceY+igABPs3jdwNaDg3MAACAAA=",
"eci": "05",
"card_meta_data": {
"card_type": "DEBIT",
"network_name": "VISA"
}
}
}
'
Refer to our Authorize Payment API documentation to learn more.
Refer to Apple Inteface Guidelines documentation to learn more.
3.2. Option 2: Use Pine Labs Payment Handler
๐ง Pre-requisites:
- Before proceeding, ensure that all prerequisites listed in the Quick Guide are fully completed. The required prerequisites may differ depending on the implementation type you choose, so review them carefully for a smooth and seamless experience.
Alternatively, you can install the Pine Labs Payment Handler, which simplifies the process:
- Pine Labs automatically invokes the Apple Pay Web JS SDK.
- Handles decryption of the card token details.
- Processes the payment on your behalf.
You simply need to wait for the payment callbacksโno additional handling required.
Follow the below steps to Instal the Pine Labs Payment Handler.
- Include the Apple Pay SDK
- Include the Pine Labs Apple Pay Integration Script
- Initialize ApplePayHandler
- Add a Hidden Apple Pay Button
- Check Apple Pay Availability
- Handle Button Click & Trigger Payment Flow
1. Include the Apple Pay SDK
Add the official Apple Pay JavaScript SDK to your HTML page to enable Apple Pay APIs.
<script
crossorigin
src="https://applepay.cdn-apple.com/jsapi/1.latest/apple-pay-sdk.js"
></script>
2. Include the Pine Labs Apple Pay Integration Script
Add the Pine Labs Apple Pay integration script depending on your environment.
<script
crossorigin
src="https://checkout.pluralonline.com/v3/apple-pay-sdk.js"
></script>
This script globally exposes the window.ApplePayHandler class, which provides methods for Apple Pay handling and payment flow management.
3. Initialize ApplePayHandler
Initializes the ApplePayHandler class to set up Apple Pay processing. Use the sample code below to initialize the ApplePayHandler.
const paymentDatObj = {
paymentAmount: paymentAmount,
currency: currency,
merchantId: merchantId,
merchantDisplayName: displayName,
mobileNo: mobileNo,
emailId: emailId,
};
// Instantiate ApplePayHandler with all required config and data
const applePayRequest = {
merchantIdentifier:
paymentData?.merchantInfo?.applePayMerchantIdentifier || "",
env:'production', //production|uat
orderToken,
paymentData: paymentDatObj,
};
const applePayHandler = new ApplePayHandler(applePayRequest);
4. Add a Hidden Apple Pay Button
Add the <apple-pay-button> element to your page. It is automatically displayed when Apple Pay is available on the userโs device.
import React, { useEffect, useRef } from "react";
const ApplePayButtonPlacement = () => {
const buttonContainerRef = useRef(null);
useEffect(() => {
// Only works in a secure HTTPS context
if (!window.isSecureContext || window.location.protocol !== "https:") return;
if (buttonContainerRef.current) {
const button = document.createElement("apple-pay-button");
button.setAttribute("buttonstyle", "black"); // black | white | white-outline
button.setAttribute("type", "pay"); // plain | buy | donate | set-up | checkout
button.setAttribute("locale", "en-US");
button.style.display = "none";
buttonContainerRef.current.appendChild(button);
const root = document.getElementById("root");
root?.style.setProperty("--apple-pay-button-height", "54px");
button.addEventListener("click", () => {
console.log("Apple Pay button clicked");
});
}
}, []);
return <div ref={buttonContainerRef}></div>;
};
export default ApplePayButtonPlacement;
Customizable Attributes
The table below shows the customizable attributes for the apple pay payment buton.
| Attribute | Description | Example |
|---|---|---|
type | Defines button type. | plain, buy, donate, set-up, checkout |
buttonstyle | Controls button color. | black, white, white-outline |
locale | Sets language/region. | en-US |
โ๏ธ Important:
- The Apple Pay button only works in a secure HTTPS context.
- Refer to Apple Pay on the Web and Apple Pay JS Reference for more details.
5. Check Apple Pay Availability
Use the below method to verify if Apple Pay is available for your user.
applePayHandler.checkApplePayAvailability();
If available, the Apple Pay button will automatically become visible.
6. Handle Button Click & Trigger Payment Flow
Add a click event listener to initiate the Apple Pay session.
const applePayButton = document.querySelector("apple-pay-button");
if (applePayButton) {
applePayButton.addEventListener("click", () => {
applePayHandler.onApplePayButtonClicked({
request: {
countryCode: "US",
currencyCode: "USD",
merchantCapabilities: ["supports3DS"],
supportedNetworks: ["visa", "masterCard"],
total: {
label: "Merchant Name",
type: "final",
amount: "1.00",
},
},
onCompletePayment: ({ status }) => {
//ApplePaySession.STATUS_SUCCESS , ApplePaySession.STATUS_FAILURE
if (status==ApplePaySession.STATUS_SUCCESS) {
// โ
Redirect to success page
} else {
// โ Handle failure or retry
}
},
});
});
}
๐ Note:
- Currently, only Visa and Mastercard card networks are supported.
4. Handle Payment
In create payment API response we return a challenge_url, use this challenge url to navigate your customers to the checkout page to accept payment.
๐ Note:
- On successful payment we send the webhook event
ORDER_AUTHORIZEDand the status of the payment is updated toauthorized.- You can capture or cancel an order only when the order status is
authorized.
4.1 Store Payment Details on Your Server
On a successful and failed payment we return the following fields to the return url.
- We recommend you to store the payment details on your server.
- You must validate the authenticity of the payment details returned. You can authenticate by verifying the signature.
{
"order_id": "v1-4405071524-aa-qlAtAf",
"status": "AUTHORIZED",
"signature": "ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad"
}
4.2 Verify Payment Signature
Ensure you follow this as a mandatory step to verify the authenticity of the details returned to the checkout form for successful payments.
Follow the below steps to verify the signature.
- Create a signature on your server using the following parameters using the SHA256 algorithm.
order_id: Unique Identifier generated for an order request on Pine Labs Online database.payment_status: Payment status.error_code: Short code for the error returned.error_message: Corresponding error message for the code.secret_key: The Onboarding team has provided you with this information as part of the onboarding process.
Use the below sample code to construct HashMap signature using the SHA256 algorithm.
import java.io.UnsupportedEncodingException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
public class hash {
public static void main(String[] args) {
// Test the GenerateHash method
String input = "<string>";
String secretKey = "<secret_key>"; // Example key in hex
String hash = GenerateHash(input, secretKey);
System.out.println("Generated Hash: " + hash);
}
public static String GenerateHash(String input, String strSecretKey) {
String strHash = "";
try {
if (!isValidString(input) || !isValidString(strSecretKey)) {
return strHash;
}
byte[] convertedHashKey = new byte[strSecretKey.length() / 2];
for (int i = 0; i < strSecretKey.length() / 2; i++) {
convertedHashKey[i] =
(byte)Integer.parseInt(strSecretKey.substring(i * 2, (i*2)+2),16); //hexNumber radix
}
strHash = hmacDigest(input.toString(), convertedHashKey,
"HmacSHA256");
} catch (Exception ex) {
strHash = "";
}
return strHash.toUpperCase();
}
private static String hmacDigest(String msg, byte[] keyString, String algo) {
String digest = null;
try {
SecretKeySpec key = new SecretKeySpec(keyString, algo);
Mac mac = Mac.getInstance(algo);
mac.init(key);
byte[] bytes = mac.doFinal(msg.getBytes("UTF-8"));
StringBuffer hash = new StringBuffer();
for (int i = 0; i < bytes.length; i++) {
String hex = Integer.toHexString(0xFF & bytes[i]);
if (hex.length() == 1) {
hash.append('0');
}
hash.append(hex);
}
digest = hash.toString();
} catch (UnsupportedEncodingException e) {
// logger.error("Exception occured in hashing the pine payment gateway request"+e);
} catch (InvalidKeyException e) {
// logger.error("Exception occured in hashing the pine payment gateway request"+e);
} catch (NoSuchAlgorithmException e) {
// logger.error("Exception occured in hashing the pine payment gateway request"+e);
}
return digest;
}
public static boolean isValidString(String str){
if(str != null && !"".equals(str.trim())){
return true;
}
return false;
}
}
๐ Note:
To create a request string, format the key-value pairs of data returned to the return URL. The pairs are separated by
&and arranged in ascending order based on a lexicographical comparison of the keys.
Shown below is a example to create a request string.
"key1=value1&key2=value2", ["order_id=random_order_id&status=AUTHORIZED"]
- If the signature generated on your server matches the Pine Labs Online signature returned in the return URL, it confirms that the payment details are from Pine Labs Online.
- Capture the status returned on your database. Once the payment status is
AUTHORIZEDyou can either capture or cancel an order.
๐ Important:
- With pre-authorization set to true, you can capture or cancel a payment for an order.
5. Get Order by Order ID
Use this API to retrieve the order by order ID.
Use the below endpoint to capture the payment against the order.
GET: https://pluraluat.v2.pinepg.in/api/pay/v1/orders/{order_id}
Shown below is a sample request and sample response for a Get Order by Order ID API.
{
"data":{
"order_id":"v1-250124055307-aa-6OZ8sm",
"merchant_order_reference":"53cf1451-4dfd-417d-a1c8-c8bd603d5200",
"type":"CHARGE",
"status":"PENDING",
"challenge_url":"https://pluraluat.v2.pinepg.in/web/auth/landing/?token=S50f2FXi%2FYAGe2bLZEW%2FA2VHzXthz0m9igmtsP61ODtY5u4pR6RYB5IlJwK0%2Fuo%2FBs9",
"merchant_id":"111163",
"order_amount":{
"value":1600000,
"currency":"INR"
},
"pre_auth":false,
"callback_url":"https://sample-callback-url",
"failure_callback_url": "https://sample-failure-callback-url",
"allowed_payment_methods":[
"CARD",
"UPI",
"NETBANKING",
"POINTS",
"WALLET"
],
"purchase_details":{
"customer":{
"country_code":"91",
"billing_address":{
},
"shipping_address":{
},
"is_edit_customer_details_allowed":false
}
},
"payments":[
{
"id":"v1-250124055307-aa-6OZ8sm-ce-a",
"merchant_payment_reference":"c7a7f778-b68f-462b-a6af-50698df12a4a",
"status":"FAILED",
"payment_amount":{
"value":1550000,
"currency":"INR"
},
"payment_method":"CREDIT_EMI",
"offer_data":{
"offer_details":{
"id":"6",
"name":"HDFC CC",
"issuer_type":"CC_BANK",
"priority":1,
"tenure":{
"tenure_id":"1",
"name":"3 Months",
"tenure_type":"MONTH",
"tenure_value":3,
"issuer_offer_parameters":[
{
"program_type":"BANK_EMI",
"offer_id":"1803",
"offer_parameter_id":"72559"
},
{
"program_type":"MERCHANT_BANK_OFFER",
"offer_id":"1523",
"offer_parameter_id":"63566"
}
],
"details":[
],
"discount":{
"discount_type":"INSTANT",
"amount":{
"currency":"INR",
"value":50000
},
"breakup":{
"merchant":{
},
"issuer":{
},
"brand":{
},
"dealer":{
}
}
},
"auth_amount":{
"currency":"INR",
"value":1550000
},
"loan_amount":{
"currency":"INR",
"value":1550000
},
"total_discount_amount":{
"currency":"INR",
"value":50000
},
"net_payment_amount":{
"currency":"INR",
"value":1601952
},
"monthly_emi_amount":{
"currency":"INR",
"value":533984
},
"total_emi_amount":{
"currency":"INR",
"value":1601952
},
"interest_amount":{
"currency":"INR",
"value":51952
},
"interest_rate_percentage":20,
"processing_fee_details":{
"amount":{
"currency":"INR",
"value":19900
}
},
"processing_fee_amount":{
"currency":"INR",
"value":19900
},
"emi_type":"STANDARD"
}
}
},
"error_detail":{
"code":"INTERNAL_ERROR",
"message":"Payment processor is unavailable"
},
"created_at":"2025-01-24T05:53:24.476Z",
"updated_at":"2025-01-24T05:53:25.492Z"
},
{
"id":"v1-250124055307-aa-6OZ8sm-ce-b",
"merchant_payment_reference":"32e3ba62-bb95-41bb-be81-1b87ab96c0ed",
"status":"PENDING",
"payment_amount":{
"value":1550000,
"currency":"INR"
},
"payment_method":"CREDIT_EMI",
"payment_option":{
"card_data":{
"card_type":"CREDIT",
"network_name":"VISA",
"issuer_name":"INTL HDQTRS-CENTER OWNED",
"card_category":"Consumer",
"country_code":"IND",
"token_txn_type":"ALT_TOKEN",
"save":false
}
},
"acquirer_data":{
"approval_code":"",
"acquirer_reference":"",
"rrn":"",
"is_aggregator":true
},
"offer_data":{
"offer_details":{
"id":"6",
"name":"HDFC CC",
"issuer_type":"CC_BANK",
"priority":1,
"tenure":{
"tenure_id":"1",
"name":"3 Months",
"tenure_type":"MONTH",
"tenure_value":3,
"issuer_offer_parameters":[
{
"program_type":"BANK_EMI",
"offer_id":"1803",
"offer_parameter_id":"72559"
},
{
"program_type":"MERCHANT_BANK_OFFER",
"offer_id":"1523",
"offer_parameter_id":"63566"
}
],
"details":[
],
"discount":{
"discount_type":"INSTANT",
"amount":{
"currency":"INR",
"value":50000
},
"breakup":{
"merchant":{
},
"issuer":{
},
"brand":{
},
"dealer":{
}
}
},
"auth_amount":{
"currency":"INR",
"value":1550000
},
"loan_amount":{
"currency":"INR",
"value":1550000
},
"total_discount_amount":{
"currency":"INR",
"value":50000
},
"net_payment_amount":{
"currency":"INR",
"value":1601952
},
"monthly_emi_amount":{
"currency":"INR",
"value":533984
},
"total_emi_amount":{
"currency":"INR",
"value":1601952
},
"interest_amount":{
"currency":"INR",
"value":51952
},
"interest_rate_percentage":20,
"processing_fee_details":{
"amount":{
"currency":"INR",
"value":19900
}
},
"processing_fee_amount":{
"currency":"INR",
"value":19900
},
"emi_type":"STANDARD"
}
}
},
"created_at":"2025-01-24T05:53:58.092Z",
"updated_at":"2025-01-24T05:53:59.679Z"
}
],
"created_at":"2025-01-24T05:53:07.740Z",
"updated_at":"2025-01-24T05:53:59.680Z",
"integration_mode":"SEAMLESS",
"payment_retries_remaining":8
}
}
Refer to our Get Order by Order ID API documentation to learn more.
Pre Authorization Flow - Apple Pay
Our Orders API includes an optional pre-authorization feature. When pre-authorization is enabled (pre_auth = true), you can capture payment for an order after successful delivery, ensuring that settlement remains on hold until then.
Once pre-authorization is enabled and the payment is successfully processed, you have the following options:
Capture Order: Utilize the Pine Labs Online capture order API in your backend to capture the payment against an order.
Cancel Order: Use the Pine Labs Online cancel order API in your backend to cancel the payment against an order.
๐ Note:
- On successful payment we send the webhook event
ORDER_AUTHORIZEDand the status of the payment is updated toauthorized.- You can capture or cancel an order only when the order status is
authorized.
1. Capture Order
Use this API to capture the payment against an order. On successful capture of an order the order status is updated as processed.
Shown below are the sample requests and sample response for a Capture Order API.
curl --request PUT \
--url https://pluraluat.v2.pinepg.in/api/pay/v1/orders/order_id/capture \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c' \
--header 'Content-Type: application/json' \
--header 'Request-ID: c17ce30f-f88e-4f81-ada1-c3b4909ed235' \
--header 'Request-Timestamp: 2024-07-09T07:57:08.022Z' \
--header 'accept: application/json' \
--data '
{
"merchant_capture_reference": "merchant-capture-ref-r4y",
"capture_amount": {
"value": 4000,
"currency": "INR"
}
}
'
Refer to our Capture Order API documentation to learn more.
2. Cancel Order
Use this API to cancel the payment against an order.
Use the below endpoint to cancel the payment against the order.
PUT: https://pluraluat.v2.pinepg.in/api/pay/v1/orders/{order_id}/cancel
Shown below is a sample request and sample response for a Cancel Order API.
{
"data":{
"order_id":"v1-5757575757-aa-hU1rUd",
"merchant_order_reference":"2177120b-3be1-4330-a15f-53ce14d19841",
"type":"CHARGE",
"status":"CANCELLED",
"merchant_id":"123456",
"order_amount":{
"value":50000,
"currency":"INR"
},
"pre_auth":true,
"allowed_payment_methods":[
"CARD",
"UPI",
"NETBANKING",
"POINTS",
"WALLET"
],
"notes":"order1",
"callback_url":"https://sample-callback-url",
"failure_callback_url": "https://sample-failure-callback-url",
"purchase_details":{
"customer":{
"email_id":"kevin.bob@example.com",
"first_name":"Kevin",
"last_name":"Bob",
"customer_id":"232323",
"mobile_number":"9876543210",
"country_code": "91",
"billing_address": {
"address1": "10 Downing Street Westminster London",
"address2": "Oxford Street Westminster London",
"address3": "Baker Street Westminster London",
"pincode": "51524036",
"city": "Westminster",
"state": "Westminster",
"country": "London",,
"full_name": "Kevin Bob",
"adddress_type": "Home",
"address_category": "billing"
},
"shipping_address": {
"address1": "10 Downing Street Westminster London",
"address2": "Oxford Street Westminster London",
"address3": "Baker Street Westminster London",
"pincode": "51524036",
"city": "Westminster",
"state": "Westminster",
"country": "London",,
"full_name": "Kevin Bob",
"adddress_type": "Home",
"address_category": "shipping"
}
},
"merchant_metadata":{
"key1":"DD",
"key2":"XOF"
}
},
"payments":[
{
"id":"v1-2711071924-aa-VxIzq1-cc-Z",
"status":"CANCELLED",
"payment_amount":{
"value":1100,
"currency":"INR"
},
"payment_method":"CARD",
"payment_option":{
"card_data":{
"card_type":"CREDIT",
"network_name":"VISA",
"issuer_name":"NONE",
"card_category":"CONSUMER",
"country_code":"IND",
"token_txn_type":"ALT_TOKEN"
}
},
"acquirer_data":{
"approval_code":"000000",
"acquirer_reference":"202456644249243",
"rrn":"420123000239"
},
"created_at":"2024-07-19T11:27:55.664Z",
"updated_at":"2024-07-19T11:28:52.487Z"
}
],
"created_at":"2024-07-19T11:27:55.664Z",
"updated_at":"2024-07-19T11:28:52.487Z"
}
}
Cancel Order
Refer to our Cancel Order API documentation to learn more.
