Apple Pay in mobile app
To integrate Apple Pay in your mobile application, use PassKit SDK or React Native Payments.
To make a payment, get PaymentToken
and pass it in the payment or authorization request to the Demo PSP system, as described below.
If you decrypt the token, use another integration option described here.
Info
Before you start, make sure that you finished the registration with Apple. Apple Pay in the mobile app requires a direct sign-up.
Payment request with the encrypted Apple Pay token
Request
To get the payment with encrypted paymentData
processed by Demo PSP, send the payment, authorization or charge request, where you should submit the encrypted Apple Pay token as the value of request.credit_card.token
in the format described below.
The required format of the encrypted Apple Pay token sent as the card token
Submit the encrypted Apple Pay token in requests as the card token in the $begateway_apple_pay_1_0_0$<base64-encoded_paymentData_here>
format, where:
$begateway_apple_pay_1_0_0$
is the required prefix for the encrypted Apple Pay token;<base64-encoded_paymentData_here>
is the encryptedpaymentData
property of thePaymentToken
serialized into JSON and then converted to the Base64-strict format.
For recurring payments and payments with the saved card data, get the Demo PSP payment token by sending the request.additional_data.contract
parameter in the payment, authorization or charge requests.
The required format of the JSON-serialized encrypted paymentData property
{
"paymentData": {
"version": "EC_v1",
"header": {
"publicKeyHash": "sMqKpcUQU8763PUTXhPSo98wlJsqdqxc4rBdqNEnb0U=",
"ephemeralPublicKey": "MFkwEwYHKoZIzj0QAdYIKoZIzj0DAQcDQgAEcjh7gGVcf1z87WBF2CfNfD6LIzjxvb8fflmeVsN3U5ixHLuCrCp2gXipnVdpb0NVy1Jf6TvLlbPpUdD6LcyNg==",
"transactionId": "8b1b1dade0bfbc8f1f6677889bd36191a235ca1f26736e3b96970459545ad56e"
},
"data": "eHaJz9z1jQL3K6h9aCxMK8rtrAJ33e3RS48uVSQtDOXKZkjQAdCG4zG3zoi04JFTcdxeD2D3Tswbe0gzRyZTjrLjqJWvTa1Zkk2tA8B3aOxi6vkv8DQtLWaEGdySwXLMwBVbXjKEWy3ZnXEQCn2nnUcycxUt4b4NV0IWXUNnlqQstwjI5l5inDIZk11LnRehCp6+wOcMeEFd2vH6eTv7poWwt4zL+WHqsJMQajk8UOFvccNXmu80IqCdPeKLHA0w4ciHToQmw4iRhg7dkMFa3FzAsAqBvgoX1c2NVf6o9yBFwnBsVnH5s9IrpZszIJ0ZIVduAEii2wXZG4TF8w2TnIacoL5yKB7LdY4Xzbw7MSyerIzz0cyxSTaxxJsF8oYtyuJwRMUtJdCWs6gvaLM5zjZZpoF2got",
"signature": "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"
}
}
Example of the payment request with the encrypted Apple Pay token
{
"request": {
"amount": 100,
"currency": "USD",
"description": "Apple Pay test transaction",
"tracking_id": "your_uniq_number",
"credit_card": {
"token": "$begateway_apple_pay_1_0_0$eyJwYXltZW50RGF0YSI6eyJ2ZXJzaW9uIjoiRUNfdjEiLCJkYXRhIjoiK09kVHg0M3dvZ0MyKzMxaDFSaTVjTEJLQXk0VFZNWVhjOEd1Z0ZJK3hyZFZsczNpSjd4ZWpaakE5R0tORVJSL21lS1RxcnFuZEwwQ2hVNXE4eTFWQld4RTBDUGlEVVBuUm04NE5MRUxZWjhBZE5xcTl2WnZyQWl2dU85eFhnWGw1bUluY2hmaUo3eG1aYVpQY0RSUS9aT1ZQd21Bd05hRFVUeEMvblN0ZDdyV25kVVk4L3NTSmh3MElKNk00OXpZandueTU0eGlUVE5rOXJobnZrc1Rta1pwV0dKc0tjdGJVN3diNWY0QlVnQTRZMlFPTy9WbWJmRWttNXdESzNRb2RDbHRibXRFNHc4RHRFeW1FdER1VDdtM1ptbmpZYlBjRGlDdXQ4dFBzNXY0RXBtR0VCQ1VRZzg5S3I1QnJzMms0THZjbTZjbXdkSzdqWXFiZlN3KythTjN4cVJSZkJ5bTVjMnNCbno5YWRHbzhZSzJudzdhZndVRWhZWUdSSmkvd0RReWxQZHB3UElYREVuTSIsInNpZ25hdHVyZSI6Ik1JQUdDU3FHU0liM0RRRUhBcUNBTUlBQ0FRRXhEekFOQmdsZ2hrZ0JaUU1FQWdFRkFEQ0FCZ2txaGtpRzl3MEJCd0VBQUtDQU1JSUQ0ekNDQTRpZ0F3SUJBZ0lJVERCQlNWR2RWRFl3Q2dZSUtvWkl6ajBFQXdJd2VqRXVNQ3dHQTFVRUF3d2xRWEJ3YkdVZ1FYQndiR2xqWVhScGIyNGdTVzUwWldkeVlYUnBiMjRnUTBFZ0xTQkhNekVtTUNRR0ExVUVDd3dkUVhCd2JHVWdRMlZ5ZEdsbWFXTmhkR2x2YmlCQmRYUm9iM0pwZEhreEV6QVJCZ05WQkFvTUNrRndjR3hsSUVsdVl5NHhDekFKQmdOVkJBWVRBbFZUTUI0WERURTVNRFV4T0RBeE16STFOMW9YRFRJME1EVXhOakF4TXpJMU4xb3dYekVsTUNNR0ExVUVBd3djWldOakxYTnRjQzFpY205clpYSXRjMmxuYmw5VlF6UXRVRkpQUkRFVU1CSUdBMVVFQ3d3TGFVOVRJRk41YzNSbGJYTXhFekFSQmdOVkJBb01Da0Z3Y0d4bElFbHVZeTR4Q3pBSkJnTlZCQVlUQWxWVE1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRXdoVjM3ZXZXeDdJaGoyamRjSkNoSVkzSHNMMXZMQ2c5aEdDVjJVcjBwVUViZzBJTzJCSHpRSDZETXg4Y1ZNUDM2eklnMXJyVjFPLzBrb21KUG53UEU2T0NBaEV3Z2dJTk1Bd0dBMVVkRXdFQi93UUNNQUF3SHdZRFZSMGpCQmd3Rm9BVUkvSkp4RStUNU84bjVzVDJLR3cvb3J2OUxrc3dSUVlJS3dZQkJRVUhBUUVFT1RBM01EVUdDQ3NHQVFVRkJ6QUJoaWxvZEhSd09pOHZiMk56Y0M1aGNIQnNaUzVqYjIwdmIyTnpjREEwTFdGd2NHeGxZV2xqWVRNd01qQ0NBUjBHQTFVZElBU0NBUlF3Z2dFUU1JSUJEQVlKS29aSWh2ZGpaQVVCTUlIK01JSERCZ2dyQmdFRkJRY0NBakNCdGd5QnMxSmxiR2xoYm1ObElHOXVJSFJvYVhNZ1kyVnlkR2xtYVdOaGRHVWdZbmtnWVc1NUlIQmhjblI1SUdGemMzVnRaWE1nWVdOalpYQjBZVzVqWlNCdlppQjBhR1VnZEdobGJpQmhjSEJzYVdOaFlteGxJSE4wWVc1a1lYSmtJSFJsY20xeklHRnVaQ0JqYjI1a2FYUnBiMjV6SUc5bUlIVnpaU3dnWTJWeWRHbG1hV05oZEdVZ2NHOXNhV041SUdGdVpDQmpaWEowYVdacFkyRjBhVzl1SUhCeVlXTjBhV05sSUhOMFlYUmxiV1Z1ZEhNdU1EWUdDQ3NHQVFVRkJ3SUJGaXBvZEhSd09pOHZkM2QzTG1Gd2NHeGxMbU52YlM5alpYSjBhV1pwWTJGMFpXRjFkR2h2Y21sMGVTOHdOQVlEVlIwZkJDMHdLekFwb0NlZ0pZWWphSFIwY0RvdkwyTnliQzVoY0hCc1pTNWpiMjB2WVhCd2JHVmhhV05oTXk1amNtd3dIUVlEVlIwT0JCWUVGSlJYMjIvVmRJR0dpWWwyTDM1WGhRZm5tMWdrTUE0R0ExVWREd0VCL3dRRUF3SUhnREFQQmdrcWhraUc5Mk5rQmgwRUFnVUFNQW9HQ0NxR1NNNDlCQU1DQTBrQU1FWUNJUUMrQ1ZjZjV4NGVjMXRWNWErc3RNY3Y2MFJmTUJoU0lzY2xFQUsySHIxdlZRSWhBTkdMTlFwZDF0MXVzWFJnTmJFZXNzNkh6NlBtcjJ5OWc0Q0pEY2dzM2Fwak1JSUM3akNDQW5XZ0F3SUJBZ0lJU1cwdnZ6cVkycGN3Q2dZSUtvWkl6ajBFQXdJd1p6RWJNQmtHQTFVRUF3d1NRWEJ3YkdVZ1VtOXZkQ0JEUVNBdElFY3pNU1l3SkFZRFZRUUxEQjFCY0hCc1pTQkRaWEowYVdacFkyRjBhVzl1SUVGMWRHaHZjbWwwZVRFVE1CRUdBMVVFQ2d3S1FYQndiR1VnU1c1akxqRUxNQWtHQTFVRUJoTUNWVk13SGhjTk1UUXdOVEEyTWpNME5qTXdXaGNOTWprd05UQTJNak0wTmpNd1dqQjZNUzR3TEFZRFZRUUREQ1ZCY0hCc1pTQkJjSEJzYVdOaGRHbHZiaUJKYm5SbFozSmhkR2x2YmlCRFFTQXRJRWN6TVNZd0pBWURWUVFMREIxQmNIQnNaU0JEWlhKMGFXWnBZMkYwYVc5dUlFRjFkR2h2Y21sMGVURVRNQkVHQTFVRUNnd0tRWEJ3YkdVZ1NXNWpMakVMTUFrR0ExVUVCaE1DVlZNd1dUQVRCZ2NxaGtqT1BRSUJCZ2dxaGtqT1BRTUJCd05DQUFUd0Z4R0VHZGRraGRVYVhpV0JCM2JvZ0tMdjNudXVUZUNOL0V1VDRUTlcxV1piTmE0aTBKZDJEU0pPZTdvSS9YWVh6b2pMZHJ0bWNMN0k2Q21FLzFSRm80SDNNSUgwTUVZR0NDc0dBUVVGQndFQkJEb3dPREEyQmdnckJnRUZCUWN3QVlZcWFIUjBjRG92TDI5amMzQXVZWEJ3YkdVdVkyOXRMMjlqYzNBd05DMWhjSEJzWlhKdmIzUmpZV2N6TUIwR0ExVWREZ1FXQkJRajhrbkVUNVBrN3lmbXhQWW9iRCtpdS8wdVN6QVBCZ05WSFJNQkFmOEVCVEFEQVFIL01COEdBMVVkSXdRWU1CYUFGTHV3M3FGWU00aWFwSXFaM3I2OTY2L2F5eVNyTURjR0ExVWRId1F3TUM0d0xLQXFvQ2lHSm1oMGRIQTZMeTlqY213dVlYQndiR1V1WTI5dEwyRndjR3hsY205dmRHTmhaek11WTNKc01BNEdBMVVkRHdFQi93UUVBd0lCQmpBUUJnb3Foa2lHOTJOa0JnSU9CQUlGQURBS0JnZ3Foa2pPUFFRREFnTm5BREJrQWpBNnozS0RVUmFac1liN05jTld5bUsvOUJmdDJROTFUYUtPdnZHY2dWNUN0NG40bVBlYldaK1kxVUVOajUzcHd2NENNREl0MVVRaHNLTUZkMnhkOHpnN2tHZjlGM3dzSVcyV1Q4WnlhWUlTYjFUNGVuMGJtY3ViQ1lraFlRYVpEd21TSFFBQU1ZSUJqVENDQVlrQ0FRRXdnWVl3ZWpFdU1Dd0dBMVVFQXd3bFFYQndiR1VnUVhCd2JHbGpZWFJwYjI0Z1NXNTBaV2R5WVhScGIyNGdRMEVnTFNCSE16RW1NQ1FHQTFVRUN3d2RRWEJ3YkdVZ1EyVnlkR2xtYVdOaGRHbHZiaUJCZFhSb2IzSnBkSGt4RXpBUkJnTlZCQW9NQ2tGd2NHeGxJRWx1WXk0eEN6QUpCZ05WQkFZVEFsVlRBZ2hNTUVGSlVaMVVOakFOQmdsZ2hrZ0JaUU1FQWdFRkFLQ0JsVEFZQmdrcWhraUc5dzBCQ1FNeEN3WUpLb1pJaHZjTkFRY0JNQndHQ1NxR1NJYjNEUUVKQlRFUEZ3MHlNREF5TVRrd09ESTJNelphTUNvR0NTcUdTSWIzRFFFSk5ERWRNQnN3RFFZSllJWklBV1VEQkFJQkJRQ2hDZ1lJS29aSXpqMEVBd0l3THdZSktvWklodmNOQVFrRU1TSUVJTlBvOWgxRUE2dzZ5cjRyeERRNm5pdG5MT2lrRVYwUTVLZ2ZjcldlZXE3S01Bb0dDQ3FHU000OUJBTUNCRWd3UmdJaEFKY20yMjl4NXhFSXBJdjh2NkFWTjIvajRUazZ3ajFBL1ZNazhoNXZHcjcrQWlFQTk2RERqNFV3Z2lSNDhTL3JIbWtHbDJwakJsVWhXVnBtSFZBcnhrSUNRTFlBQUFBQUFBQT0iLCJoZWFkZXIiOnsiZXBoZW1lcmFsUHVibGljS2V5IjoiTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFeXJSaEwrZE1JYjhuOXNGK2hiTG16UGdERVlYdDVkbmVlK3VpdHB2dUFpa2lueFJuUTBGQ1BDWGlhYldSYjBZRE9YMVA5UXJHeHQvTW9WRXlxdmJQUEE9PSIsInB1YmxpY0tleUhhc2giOiJHY2ZhbmFvZWlWaHFrZ0ZoWXkyR29KQjRGNXBIWkROTERTcG90NmRtejk4PSIsInRyYW5zYWN0aW9uSWQiOiIxNDg4N2MyOTc4OTQ1MGZjZjg5OTMwMmFmZTVmNzMyMzVmNTEwNTA3MjliZGY3MGI4ZDZhZDk3NWQzYzEwNGJiIn19LCJwYXltZW50TWV0aG9kIjp7ImRpc3BsYXlOYW1lIjoiTWFzdGVyQ2FyZCA0MzE4IiwibmV0d29yayI6Ik1hc3RlckNhcmQiLCJ0eXBlIjoiY3JlZGl0In0sInRyYW5zYWN0aW9uSWRlbnRpZmllciI6IjE0ODg3QzI5Nzg5NDUwRkNGODk5MzAyQUZFNUY3MzIzNUY1MTA1MDcyOUJERjcwQjhENkFEOTc1RDNDMTA0QkIifQ=="
}
}
}
Response
The response to the payment request with Apple Pay token will be returned with the processing status and fully conforms to the payment or authorization transaction response.