Initialize and authorize Apple Pay payments or Apple Business Chat payments.
Note:
- These API requests/interactions are not needed when using the provided menu by CM.com.
- Authentication is not required for these API resources.
For more details see Apple Pay and Apple Messages for Business.
Initialize Apple Pay Session
Initialize a new merchant session for a payment with Apple Pay. The session is only valid for 5 minutes and should be started when the shopper clicks on the Apple Pay button.
POST /mobile/applepay/merchants/{merchant_key}/payments/{order_key}/initialize
Identifiers
| Name | Type | Description | 
|---|---|---|
| merchant_key | MerchantKey | The key of the merchant. | 
| order_key | OrderKey | The key of the order. | 
Parameters
Not applicable.
Request
| Field | Type | M | Description | 
|---|---|---|---|
| validationUrl | Url | M | The validation URL that is generated by the Apple device. | 
| displayName | String(1, 255) | M | The name to display on the the payment sheet. | 
| domainName | String(1, 255) | M | The domain of the website on which the payment will occur. The value must match the domain from which the request is started. If there is a mismatch between this field and the domain that the Apple device determined, then the Apple Pay session will be terminated by the Apple device (with a generic error message or nothing happens). | 
Response
The returned response is the opaque Apple Pay merchant session in string format. This string needs to be converted to a JavaScript object before it can be passed to the Apple device.
HTTP Status
| Status | Meaning | 
|---|---|
| 201 (Created) | Apple Pay merchant session was created successfully. | 
| 400 (Bad Request) | The request was not valid or no certificate for registration was found. | 
| 503 (Service Unavailable) | The merchant key and/or order key was incorrect, or requesting the payment session using the validation url failed. | 
Initialize Apple Pay example
Command line:
>  curl \
    -X POST \
    --header 'Content-Type: application/json' \
    https://testsecure.docdatapayments.com/mobile/applepay/merchants/4ef08825-993a-424d-a769-3ee97116a1b6/payments/94D261BBF80E4AC7212B127D3BD2E279/initialize \
    -d '{
        "validationUrl" : "https://...",
        "displayName"   : "My Shop",
        "domainName"    : "www.myshop.com"
    }'
 
< Http 201 Created
<    '{
          "..." : "...",
    }'
JavaScript:
function initializeSession(event) {
        var xhttp = new XMLHttpRequest();
        xhttp.onreadystatechange = function() {
            if (this.readyState === 4) {
                if (this.status === 201) {
                    session.completeMerchantValidation(JSON.parse(this.responseText));
                } else {
                    session.abort();
                }
            }
        };
        xhttp.open("POST", "https://testsecure.docdatapayments.com/mobile/applepay/merchants/4ef08825-993a-424d-a769-3ee97116a1b6/payments/94D261BBF80E4AC7212B127D3BD2E279/initialize", true);
        xhttp.setRequestHeader("Content-type", "application/json");
        xhttp.send('{ "validationUrl":"' + event.validationURL + '"' +
                   ', "displayName": "' + merchantDisplayName + '"' +
                   ', "domainName": "' + window.location.hostname + '"}');
}
Authorize Apple Pay Payment
Performs the authorization via the Payment Service to complete the payment.
POST /mobile/applepay/merchants/{merchant_key}/payments/{order_key}/authorize
Identifiers
| Name | Type | Description | 
|---|---|---|
| merchant_key | MerchantKey | The key of the merchant. | 
| order_key | OrderKey | The key of the order. | 
Parameters
Not applicable.
Request
The request data is passed on as-is received from the Apple device in the on authorize payment event.
Modifications are not allowed.
Response
Not applicable.
HTTP Status
| Status | Meaning | 
|---|---|
| 200 (OK) | The payment is successfully authorized. | 
| 400 (Bad Request) | The request was not valid or no payment could not be authorized. | 
Authorize Apple Pay example
Command Line:
> curl \
    -X POST \
    --header 'Content-Type: application/json' \
    https://testsecure.docdatapayments.com/mobile/applepay/merchants/4ef08825-993a-424d-a769-3ee97116a1b6/payments/94D261BBF80E4AC7212B127D3BD2E279/authorize \
    -d '{
        "..." : "...",
    }'
 
< Http 200 Ok
JavaScript:
function authorizePayment(event) {
        var xhttp = new XMLHttpRequest();
        xhttp.onreadystatechange = function() {
            if (this.readyState === 4) {
                if (this.status === 200) {
                    session.completeMerchantValidation(JSON.parse(this.responseText));
                } else {
                    session.abort();
                }
            }
        };
        xhttp.open("POST", "https://testsecure.docdatapayments.com/mobile/applepay/merchants/4ef08825-993a-424d-a769-3ee97116a1b6/payments/94D261BBF80E4AC7212B127D3BD2E279/authorize", true);
        xhttp.setRequestHeader("Content-type", "application/json");
        xhttp.send('{ "validationUrl":"' + event.validationURL + '"' +
                   ', "displayName": "' + merchantDisplayName + '"' +
                   ', "domainName": "' + window.location.hostname + '"}');
}
Initialize Apple Business Chat Session
Initialize a new merchant session for a payment with Apple Business Chat. The session is only valid for 5 minutes and should be started when the shopper requests payment via Apple Business Chat.
POST /mobile/applepay/business/merchants/{merchant_key}/payments/{order_key}/initialize
Identifiers
| Name | Type | Description | 
|---|---|---|
| merchant_key | MerchantKey | The key of the merchant. | 
| order_key | OrderKey | The key of the order. | 
Parameters
Not applicable.
Request
| Field | Type | M | Description | 
|---|---|---|---|
| displayName | String(1, 255) | M | The name to display on the the payment sheet. | 
Response
| Field | Type | M | Description | 
|---|---|---|---|
| merchantSessionAsString | String(1, 4096) | M | The returned response is the opaque Apple Pay merchant session in string format. | 
| paymentGatewayUrl | Url | M | The URL called by Apple Pay to process the payment through the payment provider. | 
| merchantIdentifier | String(1, 255) | M | A unique identifier that represents a merchant for Apple Pay. | 
HTTP Status
| Status | Meaning | 
|---|---|
| 201 (Created) | Apple Pay merchant session was created successfully. | 
| 400 (Bad Request) | The request was not valid or no certificate for registration was found. | 
| 503 (Service Unavailable) | The merchant key and/or order key was incorrect, or requesting the payment session using the validation url failed. | 
Initialize Apple Pay example
Command line:
>  curl \
    -X POST \
    --header 'Content-Type: application/json' \
    https://testsecure.docdatapayments.com/mobile/applepay/business/merchants/4ef08825-993a-424d-a769-3ee97116a1b6/payments/94D261BBF80E4AC7212B127D3BD2E279/initialize \
    -d '{
        "displayName"   : "My Shop"
    }'
 
< Http 201 Created
<    '{
          "merchantSessionAsString" : "...opaque JSON Object...",
          "paymentGatewayUrl" : "https://testsecure.docdatapayments.com/mobile/applepay/business/merchants/4ef08825-993a-424d-a769-3ee97116a1b6/payments/94D261BBF80E4AC7212B127D3BD2E279/authorize",
          "merchantIdentifier" : "merchant.demo.cmtelecom.com"
    }'
Authorize Apple Business Chat Payment
Performs the authorization via the Payment Service to complete the payment.
NOTE: This endpoint is called by Apple directly as the Payment Gateway URL.
POST /mobile/applepay/business/merchants/{merchant_key}/payments/{order_key}/authorize
Identifiers
| Name | Type | Description | 
|---|---|---|
| merchant_key | MerchantKey | The key of the merchant. | 
| order_key | OrderKey | The key of the order. | 
Parameters
Not applicable.
Request
The request data is passed on as-is received from Apple.
No modifications are allowed.
Response
| Field | Type | M | Description | 
|---|---|---|---|
| status | Enum(16) | M | Indicates the status of the transaction. Valid values are STATUS_SUCCESS and STATUS_FAILURE. | 
HTTP Status
| Status | Meaning | 
|---|---|
| 200 (OK) | The payment is successfully authorized. | 
| 400 (Bad Request) | The request was not valid or no payment could not be authorized. | 
Authorize Apple Pay example
Command Line:
> curl \
    -X POST \
    --header 'Content-Type: application/json' \
    https://testsecure.docdatapayments.com/mobile/applepay/business/merchants/4ef08825-993a-424d-a769-3ee97116a1b6/payments/94D261BBF80E4AC7212B127D3BD2E279/authorize \
    -d '{
        "..." : "...",
    }'
 
< Http 200 Ok
<    '{
          "status" : "STATUS_SUCCESS"
      }'