Process an Apple Pay Sale with
Cybersource
Decryption

The topics in this section shows you how to process an Apple Pay sale with the
Cybersource
decryption
implementation of Apple Pay.
A sale bundles an authorization and capture in a single transaction. Request the authorization and capture at the same time. The authorization and capture amounts must be the same.
The
REST
API message for a sale request is the same as the message for an authorization request, except that the sale request message must set the
processingInformation.capture
field to
true
.
IMPORTANT
In the example, the sale transaction is made using a
Visa card
, and the processor is
Visa Platform Connect
.
If you want to replicate this example for a different card or a different processor, you will need to change some of the API fields in the request message.
For general information about sale transactions, see the "Standard Payments Processing" section of the .

Basic Steps: Processing a Sale with
Cybersource
Decryption

  1. Follow these steps to process an Apple Pay sale transaction with
    Cybersource
    decryption:
  2. Create the request message with the required
    REST
    API fields.
  3. Send the message to one of these endpoints:
    • Production:
      POST
      https://api.cybersource.com
      /pts/v2/payments
    • Test:
      POST
      https://apitest.cybersource.com
      /pts/v2/payments
  4. Verify the response messages to make sure that the request was successful.

    ADDITIONAL INFORMATION

    A 200-level HTTP response code indicates success. See the .

Fields Required to Process a Sale with
Cybersource
Decryption

As a best practice, include these
REST API
fields in your request for a combined authorization and capture (sale) transaction with the
Cybersource
decryption implementation of Apple Pay.
Depending on your processor, your geographic location, and whether the relaxed address verification system (RAVS) is enabled for your account, some of these fields might not be required. It is your responsibility to determine whether an API field can be omitted from the transaction you are requesting.
For information about the relaxed requirements for address data and expiration dates in payment transactions, see the
.
Format of the encrypted payment data.
Set the value to
RklEPUNPTU1PTi5BUFBMRS5JTkFQUC5QQVlNRU5U
for Apple Pay.
Encoding method used to encrypt the payment data.
Set the value to
Base64
for Apple Pay.
Set the value to the encrypted payment data value returned by the Full Wallet request.
Set the value to
true
for a sale transaction (to include a capture with the authorization).
Set the value to
001
to identify Apple Pay as the digital payment solution.

REST Example: Process a Sale with
Cybersource
Decryption

Request
{ "clientReferenceInformation": { "code": "TC_1231223" }, "processingInformation": { "paymentSolution": "001", "capture": true }, "orderInformation": { "amountDetails": { "totalAmount": "10", "currency": "USD" }, "billTo": { "firstName": "John", "lastName": "Doe", "address1": "901 Metro Center Blvd", "locality": "Foster City", "administrativeArea": "CA", "postalCode": "94404", "country": "US", "email": "test@cybs.com" } }, "paymentInformation": { "fluidData": { "value": "eyJkYXRhIjoiXC9NK2VQQ0JlMmtod1pMQkFzRWhneHFqYXF2MmtZNDJSNnd1VDdnT3JlelBwRE9hR2dmc1AzZUNHZUplSjFSc3JpSERGSnJIK0FJVHp6RFdjVXNHUlNuSER3QlBcL2JHakU0dUhYcTFDOXFjWDBLWmYzaTFZNkV2b1wvaXExOFhkcG5obTI1U2kwSGpkWUJGRmVBUmZlVENpMEtDSGtRN04wZTAyeElRbm84Qmt1TVwvSUQ5bHdoNXBFVnVYM08ybjc4bHVyU0tlRmpXVHMyWG9Pc1pmWXBpbFQ4ZFFtK2RaYmh6VHgyZ2hMXC9FcFBReUVvdW5QTFZjTlwvaTR0blFnakxWRWJiNUFDNHJ4ZjBwK2M0VGtYSzcycGZGY05NSnlxd0RlQWZ2cHB6cnFQZVdoaWlpdzUwTmljT3duR29tcXA0bWU2anV4S2N5ZFh3cGpJR3BhQlBuXC9NY3o2d2ZDSFAzMWY1NHdkRmZ4bEZadjl5XC85aGw5YlY1d08yN2R5bFwvYUVxN2FYbU5JZHBQNTFsOXlSQlUzNDNYcjR3XC9MSXN2ZmZTTE91WDlsRU5QUGtocE1LUXo4VWpYNG0xXC9xazdcL256aGFSekFaZGh6VGZsNkZ3PT0iLCJ2ZXJzaW9uIjoiRUNfdjEiLCJoZWFkZXIiOnsiYXBwbGljYXRpb25EYXRhIjoiNDE3MDcwNkM2OTYzNjE3NDY5NkY2RTQ0NjE3NDYxIiwidHJhbnNhY3Rpb25JZCI6IjU0NzI2MTZFNzM2MTYzNzQ2OTZGNkU0OTQ0IiwiZXBoZW1lcmFsUHVibGljS2V5IjoiTUlJQlN6Q0NBUU1HQnlxR1NNNDlBZ0V3Z2ZjQ0FRRXdMQVlIS29aSXpqMEJBUUloQVBcL1wvXC9cLzhBQUFBQkFBQUFBQUFBQUFBQUFBQUFcL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL01Gc0VJUFwvXC9cL1wvOEFBQUFCQUFBQUFBQUFBQUFBQUFBQVwvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cLzhCQ0JheGpYWXFqcVQ1N1BydlZWMm1JYThaUjBHc014VHNQWTd6ancrSjlKZ1N3TVZBTVNkTmdpRzV3U1RhbVo0NFJPZEpyZUJuMzZRQkVFRWF4ZlI4dUVzUWtmNHZPYmxZNlJBOG5jRGZZRXQ2ek9nOUtFNVJkaVl3cFpQNDBMaVwvaHBcL200N242MHA4RDU0V0s4NHpWMnN4WHM3THRrQm9ONzlSOVFJaEFQXC9cL1wvXC84QUFBQUFcL1wvXC9cL1wvXC9cL1wvXC9cLys4NXZxdHB4ZWVoUE81eXNMOFl5VlJBZ0VCQTBJQUJPSnZpNkxGa0JpUTJINDR6K05VK0I3N1hZV2p4UHJQaXRDMFRWZytJYnNGeXIrNjFsemFkQjFrU25hUHpFTmVMMEVrbzhWTExzVjRhU1hTalwvZXlJRmc9IiwicHVibGljS2V5SGFzaCI6IlwvNkxQT3BoS0tydWFvdjBET3VOTDk1YXFCcFVcLzArNElXNXFhV3FxME5qRT0ifSwic2lnbmF0dXJlIjoiTUlJRFFnWUpLb1pJaHZjTkFRY0NvSUlETXpDQ0F5OENBUUV4Q3pBSkJnVXJEZ01DR2dVQU1Bc0dDU3FHU0liM0RRRUhBYUNDQWlzd2dnSW5NSUlCbEtBREFnRUNBaEJjbCtQZjMrVTRwazEzblZEOW53UVFNQWtHQlNzT0F3SWRCUUF3SnpFbE1DTUdBMVVFQXg0Y0FHTUFhQUJ0QUdFQWFRQkFBSFlBYVFCekFHRUFMZ0JqQUc4QWJUQWVGdzB4TkRBeE1ERXdOakF3TURCYUZ3MHlOREF4TURFd05qQXdNREJhTUNjeEpUQWpCZ05WQkFNZUhBQmpBR2dBYlFCaEFHa0FRQUIyQUdrQWN3QmhBQzRBWXdCdkFHMHdnWjh3RFFZSktvWklodmNOQVFFQkJRQURnWTBBTUlHSkFvR0JBTkM4K2tndGdtdldGMU96amdETnJqVEVCUnVvXC81TUt2bE0xNDZwQWY3R3g0MWJsRTl3NGZJWEpBRDdGZk83UUtqSVhZTnQzOXJMeXk3eER3YlwvNUlrWk02MFRaMmlJMXBqNTVVYzhmZDRmek9wazNmdFphUUdYTkxZcHRHMWQ5VjdJUzgyT3VwOU1NbzFCUFZyWFRQSE5jc005OUVQVW5QcWRiZUdjODdtMHJBZ01CQUFHalhEQmFNRmdHQTFVZEFRUlJNRStBRUhaV1ByV3RKZDdZWjQzMWhDZzdZRlNoS1RBbk1TVXdJd1lEVlFRREhod0FZd0JvQUcwQVlRQnBBRUFBZGdCcEFITUFZUUF1QUdNQWJ3QnRnaEJjbCtQZjMrVTRwazEzblZEOW53UVFNQWtHQlNzT0F3SWRCUUFEZ1lFQWJVS1lDa3VJS1M5UVEybUZjTVlSRUltMmwrWGc4XC9KWHYrR0JWUUprT0tvc2NZNGlOREZBXC9iUWxvZ2Y5TExVODRUSHdOUm5zdlYzUHJ2N1JUWTgxZ3EwZHRDOHpZY0FhQWtDSElJM3lxTW5KNEFPdTZFT1c5a0prMjMyZ1NFN1dsQ3RIYmZMU0tmdVNnUVg4S1hRWXVaTGsyUnI2M044QXBYc1h3QkwzY0oweGdlQXdnZDBDQVFFd096QW5NU1V3SXdZRFZRUURIaHdBWXdCb0FHMEFZUUJwQUVBQWRnQnBBSE1BWVFBdUFHTUFid0J0QWhCY2wrUGYzK1U0cGsxM25WRDlud1FRTUFrR0JTc09Bd0lhQlFBd0RRWUpLb1pJaHZjTkFRRUJCUUFFZ1lDZ2RvN2lrTzdERTNCXC9pY0lycmRjc1ZIanJyQmNPdXNndXhlcGs1QW41ZEExV01rajBlVjRsMVM0RnR5NktwdlR0T0xcL3VSdDhuTHZpVnR0TVVSZHBYTjNWXC9NVmZnVkxlXC9YUm5cLzRzbUJnMVgweE5OTXlTZXBQalVxV1ZkWFg1K0RWYnp2U0ZKSVJGdmt1MHJPaGg3REZmODVpbXNkaGRZRUhCaUg0TzdpK1E9PSJ9", "descriptor": "RklEPUNPTU1PTi5BUFBMRS5JTkFQUC5QQVlNRU5U", "encoding": "Base64" } } }
Response to a Successful Request
{ "_links": { "void": { "method": "POST", "href": "/pts/v2/payments/7359641336126184303955/voids" }, "self": { "method": "GET", "href": "/pts/v2/payments/7359641336126184303955" } }, "clientReferenceInformation": { "code": "TC_1231223" }, "consumerAuthenticationInformation": { "token": "Axj//wSTjveKcificy1TABsQ3ZtGThq1Zp78eHSPSAp78eHSPTpAr6E4uGTSTL0YriJFQwJycd7xTkT8TmWqYAAAtQlD" }, "id": "7359641336126184303955", "issuerInformation": { "responseRaw": "0110322000000E1000020000000000000010000104041534840127353442435634463759474B373833313030303030000159008000223134573031363135303730333830323039344730363400103232415050524F56414C00065649435243200034544B54523031313132313231323132313231544C3030323636504E30303431313131" }, "orderInformation": { "amountDetails": { "totalAmount": "10.00", "authorizedAmount": "10.00", "currency": "USD" } }, "paymentAccountInformation": { "card": { "type": "001" } }, "paymentInformation": { "tokenizedCard": { "expirationYear": "2025", "requestorId": "12121212121", "prefix": "411111", "assuranceLevel": "66", "expirationMonth": "07", "suffix": "1111", "type": "001" }, "card": { "suffix": "1111", "type": "001" } }, "pointOfSaleInformation": { "terminalId": "02495701" }, "processingInformation": { "paymentSolution": "001" }, "processorInformation": { "merchantNumber": "000372839590885", "approvalCode": "831000", "networkTransactionId": "016150703802094", "transactionId": "016150703802094", "responseCode": "00", "avs": { "code": "Y", "codeRaw": "Y" } }, "reconciliationId": "73428553", "riskInformation": { "earlyVelocity": { "counts": [ { "count": "1", "informationCode": "MVEL-R1" } ] } }, "status": "AUTHORIZED", "submitTimeUtc": "2025-01-04T04:15:34Z" }