Apple Pay Deposit (App-based flow)

ApplePay is a secure, easy way to make payments for physical goods and services within iOS and watchOS. Websites can also accept ApplePay – it is available in Safari for iPhone, iPad, and Mac. Users authorize payments and provide shipping and contact information, using securely stored credentials on an iPhone, an iPad, or a MacBook Pro with Touch ID. On other Macs, the purchase is confirmed with the user's nearby iPhone or Apple Watch that has ApplePay enabled.

The following method ID is covered in this section:

IDNameCredit/Debit State
292AppleCardDepositN/A

Payment method interaction type: Synchronous Execution (see Interaction Types)

Backend2Backend Integration

ApplePay integration in PXP Financial PaymentService requires 1 operation:

1. Initiate AppleCardDeposit with payment token - an AppleCardDeposit payment is initiated with a token previously obtained from Apple (specific to the creator of the application).

To initiate an ApplePay deposit the initiatePayment web method should be invoked. The following table contains the fields to be sent in specificPaymentData section of the request:

key (value type, account type, required)value
PaymentDescription
(string, required)
Text describing the deposit method
PaymentDescriptionLanguageCode
(string, required)
Two letter language: ex. "en"
ApplePayTokenPayload
(string, required)
Key from specificPaymentData key-value collection which is used for transporting the ApplePay Token Payload. The Payload is encoded as Base64. This token should be obtained from Apple by the creator of the application.

Example initiatePaymentRequest:

<?xml version="1.0" encoding="utf-8"?>
<initiatePaymentRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.cqrpayments.com/PaymentProcessing">
    <merchantID>KalixaAcceptDEMO</merchantID>
    <shopID>KalixaAcceptDEMO</shopID>
    <merchantTransactionID>7dab7279-9ab7-49e7-85ea-c300197bc5f6</merchantTransactionID>
    <paymentMethodID>292</paymentMethodID>
    <amount currencyCode="EUR">13.13</amount>
    <userID>ABC</userID>
    <userSessionID>ce447c06-df6a-4713-a8d1-10cc7dfde85f</userSessionID>
    <creationTypeID>1</creationTypeID>
    <specificPaymentData>
        <data xsi:type="keyStringValuePair">
            <key>PaymentDescription</key>
            <value>Apple deposit</value>
        </data>
        <data xsi:type="keyStringValuePair">
            <key>PaymentDescriptionLanguageCode</key>
            <value>en</value>
        </data>
        <data xsi:type="keyStringValuePair">
            <key>ApplePayTokenPayload</key>
            <value><!-- base64 encoded apple pay payment token --></value>
        </data>
    </specificPaymentData>
</initiatePaymentRequest>

Example initiatePaymentResponse:

<initiatePaymentResponse xmlns="http://www.cqrpayments.com/PaymentProcessing" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <payment xsi:type="paymentWithPaymentAccount">
        <merchantID>KalixaAcceptDEMO</merchantID>
        <shopID>KalixaAcceptDEMO</shopID>
        <paymentMethod>
            <key>364</key>
            <value>AppleMaestroDeposit</value>
        </paymentMethod>
        <merchantTransactionID>7dab7279-9ab7-49e7-85ea-c300197bc5f6</merchantTransactionID>
        <paymentID>06bf50c5-e950-481f-9e56-0fea1e77aaac</paymentID>
        <userID>ABC</userID>
        <paymentProvider>
            <key>92</key>
            <value>CQRUK</value>
        </paymentProvider>
        <amount currencyCode="EUR">13.13</amount>
        <creationType>
            <key>1</key>
            <value>User</value>
        </creationType>
        <state>
            <id>7ef7e42a-13f3-49ee-b0f7-5e10256d8f8c</id>
            <definition>
                <key>13</key>
                <value>AuthorisedByProvider</value>
            </definition>
            <createdOn>2021-04-21T12:36:43.265285Z</createdOn>
            <description>Approved or completed successfully</description>
            <paymentStateDetails>
                <detail xsi:type="keyStringValuePair">
                    <key>ProviderResponseCode</key>
                    <value>0</value>
                </detail>
                <detail xsi:type="keyStringValuePair">
                    <key>ApprovalCode</key>
                    <value>141844</value>
                </detail>
            </paymentStateDetails>
        </state>
        <isExecuted>true</isExecuted>
        <baseAmount currencyCode="EUR">13.13</baseAmount>
        <paymentDetails>
            <detail xsi:type="keyStringValuePair">
                <key>CardholderAuthenticationVerificationValue</key>
                <value>AFKd72XFdQfAAAEpampyAoABFA==</value>
            </detail>
            <detail xsi:type="keyStringValuePair">
                <key>ProviderExternalID</key>
                <value>14671445</value>
            </detail>
            <detail xsi:type="keyIntValuePair">
                <key>PaymentMethodID</key>
                <value>364</value>
            </detail>
            <detail xsi:type="keyIntValuePair">
                <key>PaymentProviderID</key>
                <value>92</value>
            </detail>
            <detail xsi:type="keyStringValuePair">
                <key>PaymentAccountID</key>
                <value>5dbc2a16-cb97-439d-ba95-61f040e2a2a6</value>
            </detail>
        </paymentDetails>
        <paymentAccount>
            <paymentAccountID>5dbc2a16-cb97-439d-ba95-61f040e2a2a6</paymentAccountID>
            <details>
                <detail xsi:type="keyStringValuePair">
                    <key>MaskedNumber</key>
                    <value>679091*********6871</value>
                </detail>
                <detail xsi:type="keyStringValuePair">
                    <key>AccountOwnerToken</key>
                    <value>df18089f-8323-423c-857b-21313b3cc2fb</value>
                </detail>
                <detail xsi:type="keyIntValuePair">
                    <key>ExpiryMonth</key>
                    <value>2</value>
                </detail>
                <detail xsi:type="keyIntValuePair">
                    <key>ExpiryYear</key>
                    <value>2023</value>
                </detail>
                <detail xsi:type="keyStringValuePair">
                    <key>HolderName</key>
                    <value></value>
                </detail>
                <detail xsi:type="keyStringValuePair">
                    <key>CardType</key>
                    <value>Maestro</value>
                </detail>
            </details>
        </paymentAccount>
    </payment>
</initiatePaymentResponse>

🚧

The initial payment method AppleCardDeposit is changed

  • NOTE: The initial payment method AppleCardDeposit is changed to the actual card payment method after operation 1 is finalized. New card payment methods are created specifically for ApplePay for existing card deposits like:
    Visa Deposit - AppleVisaDeposit (Payment Method ID 298)
    ECMC Deposit - AppleECMCDeposit (Payment Method ID 300)
    Maestro Deposit - AppleMaestroDeposit (Payment Method ID 364)
    Discover Deposit - AppleDiscoverDeposit (Payment Method ID 391)
    Amex Deposit - Apple AMEX Deposit (Payment Method ID 397)

The new payment method replaced AppleCardDeposit after processing the token. The card payment method has the same flow as the standard card deposit payment methods - authorization, capturing and settlement.

State Diagram including the change of the payment method:

781

Notifications

No notification are sent until the payment is with payment method ApplePay Deposit. After changing the payment method the notifications are sent according the card payment methods' integration manual. (see Card Payments Notifications)

Links

[Apple Passkit documentation]
(https://developer.apple.com/documentation/passkit/apple_pay/)