Інтеграція з Apple Pay
1. Вступ
Apple Pay надає простий та безпечний спосіб проведення плате жів у додатках iOS, watchOS та веб-сайтах Safari. Використовуючи Face ID, Touch ID або двічі клацнувши Apple Watch, користувачі можуть швидко і безпечно передавати свої платіжні дані для оплати.
Попередні умови
- Ваш сайт повинен працювати за схемою HTTPS і підтримувати протокол TLS 1.2.
- Потрібно погодитись з умовами надання послуг Apple Pay.
- Необхідно укласти договір з Portmone.com.
2. Підключення через сторінку Portmone.com
При такому способі підключення немає необхідності у додаткових інтеграціях. Кнопка Apple Pay буде відображена на сторінці оплати Portmone.com. Керувати методами оплати та порядком, в якому відображаються платіжні інструменти (в тому числі й Apple Pay), можливо за допомогою JSON-запиту (див. розділ 3.2 документації) або звернувшись до менеджера із співпраці.
3. Підключення через Apple Pay API
Попередні умови
- Необхідно мати аккаунт в Apple Developer, в який потрібно зареєструвати індивідуальний Merchant ID.
- Необхідно дотримуватись вимог з брендування.
- Apple Pay заборонено використовувати для оплати тютюнової продукції, реплік, товарів для дорослих, покупки віртуальної валюти, для поповнення гаманців.
Кроки для інтеграції Apple Pay у мобільний додаток
Крок 1. Реєстрація та перевірка у системі Apple Pay
-
Зареєструйте MerchantID та надішліть у Portmone.com:
a. Увійдіть до облікового запису Apple Developer Account.
b. Перейдіть в розділ «Certificates, Identifiers & Profiles».
c. У розділі «Identifiers» оберіть «Merchant IDs».
d. Додайте новий Merchant ID, натиснувши на "+" у верхньому правому куті екрана.
e. Заповніть необхідні поля* та натисніть «Continue».
f. Натисніть «Register», щоб підтвердити введені дані.
g. Надішліть ваш Merchant ID у Portmone.com за адресою: [email protected].
Примітка: * – Description – опис; Identifier – домен вашого сайту в зворотному порядку, з додаванням «merchant» на початку (наприклад, сайт shop.ua, Identifier – merchant.ua.shop).
-
Отримайте зворотнім листом CSR-файл, сформований Portmone.com, який буде необхідним для подальших кроків.
-
Сформуйте Apple Pay Payment Processing Certificate та надішліть до Portmone.com:
(https://help.apple.com/developer-account/#/devb2e62b839?sub=devf31990e3f)
a. Увійдіть до облікового запису Apple Developer Account.
b. Перейдіть в розділ «Certificates, Identifiers & Profiles».
c. У розділі «Identifiers» оберіть «Merchant IDs».
d. Оберіть створений вами Merchant ID та натисніть «Edit».
e. У розділі Apple Pay Payment Processing Certificate, натисніть «Create Certificate».
f. На наступному екрані натисніть «Continue».
g. Візьміть отриманий від Portmone.com CSR-файл та завантажте його на сайт, натиснувши «Choose File», а потім «Continue».
h. Завантажте згенерований сертифікат.
i. Надішліть завантажений сертифікат (файл apple_pay.cer) до Portmone.com за адресою: [email protected].
Крок 2. Технічна інтеграція з ApplePay
-
Щоб інтегрувати Apple Pay у мобільний додаток, дотримуйтесь інструкцій за посиланням: https://developer.apple.com/documentation/passkit/apple_pay.
-
Надішліть значення
paymentData
до Portmone API (див. Крок 3).
Приклад набору даних, що повертаються від Apple Pay:
{
"paymentData":
{
"version":"EC_v1",
"data":"FDXK/fkIXGh07D5QU5eUK3ZK8BxKk6syu+Hf0DH6DBZ8/loNHFWHULxsmfIAyaKzvkUjm2dHaR36pS4x8UXuQ3JhzeB7AfDmZsP8JcL16OOyZKZP3JjOwdkUVvzUyPWtjtlrtXDaBmJ5jPcT8bgnLZV/7RcC9HpRkdmUqVyJ042wAvPNxF7SVt57PcMyMeccVL6yWUk6N2oV7ESFoGVbAeJdpn5zZT8lebigrnhZRhvwoJ5ZJ/dGK9UZDP/swhH8nMLjK620Wu9rvidhsSheJCwM2sCH27fKpeEO2x+vWaLlL9ukwDms9ciOGvSyb+tDvRD9MheecGri1XCC6DxQT5JkHDH7mi1vev0QFjjVY6bmh26iNC0lIB4FKVznNv03yjkKNJhEMbp/clv4",
"signature":"MIAGCSqGSIb3DQEHAqCAMIACAQExDzANBglghkgBZQMEAgEFADCABgkqhkiG9w0BBwEAAKCAMIID4zCCA4igAwIBAgIITDBBSVGdVDYwCgYIKoZIzj0EAwIwejEuMCwGA1UEAwwlQXBwbGUgQXBwbGljYXRpb24gSW50ZWdyYXRpb24gQ0EgLSBHMzEmMCQGA1UECwwdQXBwbGUgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxEzARBgNVBAoMCkFwcGxlIEluYy4xCzAJBgNVBAYTAlVTMB4XDTE5MDUxODAxMzI1N1oXDTI0MDUxNjAxMzI1N1owXzElMCMGA1UEAwwcZWNjLXNtcC1icm9rZXItc2lnbl9VQzQtUFJPRDEUMBIGA1UECwwLaU9TIFN5c3RlbXMxEzARBgNVBAoMCkFwcGxlIEluYy4xCzAJBgNVBAYTAlVTMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEwhV37evWx7Ihj2jdcJChIY3HsL1vLCg9hGCV2Ur0pUEbg0IO2BHzQH6DMx8cVMP36zIg1rrV1O/0komJPnwPE6OCAhEwggINMAwGA1UdEwEB/wQCMAAwHwYDVR0jBBgwFoAUI/JJxE+T5O8n5sT2KGw/orv9LkswRQYIKwYBBQUHAQEEOTA3MDUGCCsGAQUFBzABhilodHRwOi8vb2NzcC5hcHBsZS5jb20vb2NzcDA0LWFwcGxlYWljYTMwMjCCAR0GA1UdIASCARQwggEQMIIBDAYJKoZIhvdjZAUBMIH+MIHDBggrBgEFBQcCAjCBtgyBs1JlbGlhbmNlIG9uIHRoaXMgY2VydGlmaWNhdGUgYnkgYW55IHBhcnR5IGFzc3VtZXMgYWNjZXB0YW5jZSBvZiB0aGUgdGhlbiBhcHBsaWNhYmxlIHN0YW5kYXJkIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHVzZSwgY2VydGlmaWNhdGUgcG9saWN5IGFuZCBjZXJ0aWZpY2F0aW9uIHByYWN0aWNlIHN0YXRlbWVudHMuMDYGCCsGAQUFBwIBFipodHRwOi8vd3d3LmFwcGxlLmNvbS9jZXJ0aWZpY2F0ZWF1dGhvcml0eS8wNAYDVR0fBC0wKzApoCegJYYjaHR0cDovL2NybC5hcHBsZS5jb20vYXBwbGVhaWNhMy5jcmwwHQYDVR0OBBYEFJRX22/VdIGGiYl2L35XhQfnm1gkMA4GA1UdDwEB/wQEAwIHgDAPBgkqhkiG92NkBh0EAgUAMAoGCCqGSM49BAMCA0kAMEYCIQC+CVcf5x4ec1tV5a+stMcv60RfMBhSIsclEAK2Hr1vVQIhANGLNQpd1t1usXRgNbEess6Hz6Pmr2y9g4CJDcgs3apjMIIC7jCCAnWgAwIBAgIISW0vvzqY2pcwCgYIKoZIzj0EAwIwZzEbMBkGA1UEAwwSQXBwbGUgUm9vdCBDQSAtIEcz***MjM0NjMwWjB6MS4wLAYDVQQDDCVBcHBsZSBBcHBsaWNhdGlvbiBJbnRlZ3JhdGlvbiBDQSAtIEczMSYwJAYDVQQLDB1BcHBsZSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTETMBEGA1UECgwKQXBwbGUgSW5jLjELMAkGA1UEBhMCVVMwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATwFxGEGddkhdUaXiWBB3bogKLv3nuuTeCN/EuT4TNW1WZbNa4i0Jd2DSJOe7oI/XYXzojLdrtmcL7I6CmE/1RFo4H3MIH0MEYGCCsGAQUFBwEBBDowODA2BggrBgEFBQcwAYYqaHR0cDovL29jc3AuYXBwbGUuY29tL29jc3AwNC1hcHBsZXJvb3RjYWczMB0GA1UdDgQWBBQj8knET5Pk7yfmxPYobD+iu/0uSzAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFLuw3qFYM4iapIqZ3r6966/ayySrMDcGA1UdHwQwMC4wLKAqoCiGJmh0dHA6Ly9jcmwuYXBwbGUuY29tL2FwcGxlcm9vdGNhZzMuY3JsMA4GA1UdDwEB/wQEAwIBBjAQBgoqhkiG92NkBgIOBAIFADAKBggqhkjOPQQDAgNnADBkAjA6z3KDURaZsYb7NcNWymK/9Bft2Q91TaKOvvGcgV5Ct4n4mPebWZ+Y1UENj53pwv4CMDIt1UQhsKMFd2xd8zg7kGf9F3wsIW2WT8ZyaYISb1T4en0bmcubCYkhYQaZDwmSHQAAMYIBjTCCAYkCAQEwgYYwejEuMCwGA1UEAwwlQXBwbGUgQXBwbGljYXRpb24gSW50ZWdyYXRpb24gQ0EgLSBHMzEmMCQGA1UECwwdQXBwbGUgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxEzARBgNVBAoMCkFwcGxlIEluYy4xCzAJBgNVBAYTAlVTAghMMEFJUZ1UNjANBglghkgBZQMEAgEFAKCBlTAYBgkqhkiG9w0BCQMxCwYJKoZIhvcNAQcBMBwGCSqGSIb3DQEJBTEPFw0xOTEwMDcwOTAzMzlaMCoGCSqGSIb3DQEJNDEdMBswDQYJYIZIAWUDBAIBBQChCgYIKoZIzj0EAwIwLwYJKoZIhvcNAQkEMSIEINit/iw3WwwTnehkerYBQk/4vdByMbbliBcTPyT7FRiPMAoGCCqGSM49BAMCBEgwRgIhAKvTEMlNfyLdg9slvO6Ignu+y//nAmevtrQa8Yk2qw0/AiEAhivZamhbazis3+5Nd5dZWxgM1gv/PpsAykJvjg3qQ0QAAAAAAAA=",
"header":
{
"ephemeralPublicKey":"MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEXaMJN7PRXhkoMa1n1wOnut4KIkIX0WuyXenzRukdDUzo/GZ+TRqTSPjZDOPoZkisqifaroXUJZP9xCUlJQ3iqQ==",
"publicKeyHash":"48145ri0BI4zYNGguvfW+7qJc3kQlcGdil64a4cg+Ag=",
"transactionId":"cd80b9fc31c9a850c14c697bd4c258aa51e63bf72bba46394eebbc3fae1b58e4"
}
},
"paymentMethod":
{
"displayName":"MasterCard 5179",
"network":"MasterCard",
"type":"debit"
},
"transactionIdentifier":"CD80B9FC31C9A850C14C697BD4C258AA51E63BF72BBA46394EEBBC3FAE1B58E4"
}
Крок 3.Технічна інтеграція з Portmone.com
До API Portmone.com необхідно надіслати дані paymentData
.
Метод: APay
URL: https://www.portmone.com.ua/r3/api/gateway.
Параметри запиту:
Параметр | Опис | Обов'язковий |
---|---|---|
login | Логін Інтернет-магазину для доступу до управління акаунтом | Так |
password | Пароль Інтернет-магазину | Так |
aPayMerchantName | Merchant ID у Apple Developer Account | Так |
paymentData | Значення параметру paymentData , що отриманий мерчантом у відповіді від системи Apple Pay | Так |
payeeId | Унікальний ідентифікатор Інтернет-магазину. Надається кожному Партнерові індивідуально при підключенні до системи Portmone.com | Так |
billAmount | Сума оплати. Розділювач крапка. Наприклад: "10.21" | Так |
description | Коментар до замовлення / опис призначення платежу | Ні |
shopOrderNumber | Номер замовлення (рахунку) у системі Інтернет-магазину | Ні |
emailRecipient | Адреса електронної пошти Клієнта | Ні |
preauthFlag | Ознака преавторизації платежу (значення "Y" вказує на те, що ця оплата здійснюється з використанням процедури преавторизації, значення "N" – звичайна оплата без преавторизації) | Ні |
billCurrency | Валюта проведення платежу. Можливі значення: UAH, USD, EUR, GBP, BYN, KZT, RUB (значення без задання – UAH) | Ні |
shop_site_id | Канал оплати у системі Portmone | Ні |
threeDs | Секція параметрів, що використовується для зазначення URL мерчанта (termUrl або appUrl ), на який буде перенаправлено клієнта після успішного проходження перевірки 3D Secure | Ні |
termUrl | Необхідно встановити значення "Y" або не використовувати цей параметр | Ні |
appUrl | Значення appUrl мерчанта (у разі інтеграції GPay у мобільний додаток) | Ні |
clientIp | Значення IP адреси платника | Ні |
Приклад запиту:
{
"method":"APay",
"params": {
"data":{
"login":"wdishop",
"password":"11111111",
"aPayMerchantName":"",
"paymentData":{
"version":"EC_v1",
"data":"7p8TndxxyLvLxzkD****xnjJj5Gf5vtmHGHEN",
"signature":"MIAGCSqGSI****b05ZOreRp5zAt+Zx+ukgAAAAAAAA==",
"header":{
"ephemeralPublicKey":"MFkwEwY****hc7lmaYq8I8Nr111pStGhQ==",
"publicKeyHash":"48145ri0BI***il64a4cg+Ag=",
"transactionId":"16d32ec****da49c41c36a5a6c7cc"
}
},
"payeeId":"11344",
"billAmount":"1.01",
"description":"test",
"shopOrderNumber":"AP-01",
"attribute1":"",
"attribute2":"",
"attribute3":"",
"attribute4":"",
"emailRecipient":"",
"billCurrency":"UAH",
"preauthFlag":"N",
"shop_site_id":"",
"threeDs":{
"termUrl":"Y",
"appUrl":"https://portmone2.com/r3/ecommerce/test/master-test-from"
},
"clientIp": "127.0.0.7"
}
},
"id": "1"
}
Параметри відповіді:
Параметр | Опис |
---|---|
status | Результат оплати. Можливі значення: - PAYED – оплата успішна, - REJECTED – відмова, - CREATED – замовлення створено, але не оплачено |
errorCode | Код помилки. Якщо значення параметру "0" – оплата успішна. Якщо значення параметру більше за 0 або порожнє – сталася помилка |
error | Текст помилки (див. Таблицю кодів відмов) |
shopBillId | Ідентифікатор транзакції (платіжного документу) у системі Portmone.com |
billAmount | Передана у запиті сума транзакції |
billNumber | Номер замовлення (рахунку) у системі Інтернет-магазину. До 120 символів |
attribute1 | Службове поле, заповнюється на розсуд компанії |
attribute2 | Службове поле, заповнюється на розсуд компанії |
attribute3 | Службове поле, заповнюється на розсуд компанії |
attribute4 | Службове поле, заповнюється на розсуд компанії |
cardMask | Маска Картки/ Токену платника |
actionMPI | URL банку, на який треба перенаправити клієнта для проходження 3D Secure перевірки |
pareq | Параметр, який треба передати на actionMPI при проходженні 3D Secure перевірки |
authCode | Код авторизації |
description | Коментар до замовлення / опис призначення оплати. До 250 символів |
lang | Мова відповіді. Залежить від локалізації endpoint, на який надсилали запит* |
md | Параметр, який треба передати на actionMPI при проходженні 3D Secure перевірки |
isNeed3DS | Ознака необхідності проходження перевірки 3D Secure ("Y" – необхідно пройти процедуру перевірки 3D Secure, "N" – додаткові дії не потрібні) |
token | Значення Токену для подальших оплат. Для методів оплати GPay та APay не формується |
billCurrency | Валюта платежу |
transactionId | Ідентифікатор транзакції в системі банка-еквайера |
termUrl | URL мерчанта, на який мають повернутись параметри відповіді від банку після проходження 3D Secure. Значення генерується системою Portmone |
successUrl | Значення appUrl мерчанта, на який мають повернутись параметри відповіді від банку після проходження 3D Secure (якщо це значення було передане в параметрі appUrl у запиті на оплату) |
pdfUrl | Посилання для збереження квитанції про оплату. Надається клієнтові лише якщо status=PAYED |
shop_site_id | Канал оплати у системі Portmone |
Примітка: * – для отримання локалізованих текстів відмов необхідно надсилати запит на відповідний endpoint:
https://www.portmone.com.ua/r3/api/gateway – стандартно українською мовою https://www.portmone.com.ua/r3/uk/api/gateway – для відповідей українською мовою https://www.portmone.com.ua/r3/ru/api/gateway – для відповідей російською мовою https://www.portmone.com.ua/r3/en/api/gateway – для відповідей англійською мовою
Приклад успішної відповіді:
{
"result": {
"status": "PAYED",
"errorCode": "0",
"error": "",
"shopBillId": "550298815",
"billAmount": "1.01",
"billNumber": "SHP-00000002",
"attribute1": "",
"attribute2": "",
"attribute3": "",
"attribute4": "",
"cardMask": "535560******3735",
"actionMPI": "",
"pareq": "",
"authCode": "67037Z",
"description": "test payment",
"lang": "uk",
"md": "",
"isNeed3DS": "N",
"token": "",
"billCurrency": "UAH",
"transactionId": "927500948048",
"pdfUrl": "https://www.portmone.com.ua/r3/services/receipts/get-receipts/shop-bill-id/35357a20f10b49519794e81b48b20d0402cd2b7654553048021cb230400befdf94bacfbb12bd77983adae9422fbcc51cf0987a171403f08b33b2d119249845bad4e457",
"shop_site_id":""
},
"id": "1"
}
Приклад відмови:
{
"result": {
"status": "REJECTED",
"errorCode": "5",
"error": "Transactions has exceeded the limit by your bank",
"shopBillId": "5530964511",
"billAmount": "1",
"billNumber": "P55309624511",
"attribute1": "A",
"attribute2": "",
"attribute3": "",
"attribute4": "",
"cardMask": "535560******3735",
"actionMPI": "",
"pareq": "",
"authCode": "",
"description": "test payment",
"lang": "en",
"md": "",
"isNeed3DS": "N",
"token": "",
"billCurrency": "UAH",
"transactionId": "928199458716",
"pdfUrl": "",
"shop_site_id":""
},
"id": "1"
}
Приклад відповіді, якщо необхідна 3D Secure перевірка:
{
"result": {
"status": "CREATED",
"errorCode": "0",
"error": "",
"shopBillId": "663526924",
"billAmount": "1.2",
"billNumber": "123456.14052020.05",
"attribute1": "1",
"attribute2": "2",
"attribute3": "3",
"attribute4": "4",
"cardMask": "516874******5179",
"actionMPI": "https://acs.privatbank.ua/pPaReqMC.jsp",
"pareq": "eJxVUcluwjAQ/RWUY6XiJZtBE6MUuh0CKYVDj1FiQSqy4IQCf99xCNDKGmne7H4PJqdiN/hRusmrMrDYkFoDVaZVlpebwFqvXh6FNZGw2mqlZp8qPWglIVJNk2zUIM8CK06Was/cEXWY8LjjuB4Xtuc7jNr4RkJ49ohbEuIQ6yT0myQuGnIgV4gjdbpNylZCku6f3ufSdYTnCiA9hELp95n0GHN8HxsvEMqkUDJeLFfRYv48nC6ih9c4/ALSxSGtDmWrz1JQB8gVwEHv5LZt62ZMSF3ptqhKNUyrAojJALmfEh+M1+CkU57JaBYe0c5oLPpen+ZneoxWH2hRAMRUQJa0SnLKKXW5O2DO2PXHZncXh6QwJ+DXOcV/XQDUZkfYZ0zibwCQb41ynOVIYOqGQJ1qvBorkIqbD+R+8PTNMJm2SJIRxmM2E6yjs4uZATmSwTll3QQDgJgu0itFepXR+6f+L1ndtBw=",
"authCode": "",
"description": "test payment",
"lang": "ru",
"md": "194203287",
"isNeed3DS": "Y",
"token": "",
"billCurrency": "UAH",
"transactionId": "",
"termUrl": "https://www.portmone.com.ua/r3/pg/confirmapigateway/3332633904a34c326a772f1256a70958bdaa4cc092a3fa86bdd5712dc033654d2582a3e4668f52230428/?shopBillId=303977a031fa486ee5e571aa119b89ba9eacd8&3ds=Y&py=303523031e7bb72dc8c426146af248",
"successUrl": "https://portmone2.com/r3/ecommerce/test/master-test-from",
"pdfUrl": ""
},
"id": "1"
}
Для проходження процедури 3D Secure мерчанту необхідно відкрити сторінку перевірки від банку (action
), передавши на неї POST-запитом параметри перевірки (PaReq
, MD
) та URL для повернення після 3D Secure (TermUrl
).
Параметри виклику сторінки банку:
Параметр | Опис |
---|---|
action | Отримане від Portmone значення actionMPI |
PaReq | Отримане від Portmone значення pareq |
MD | Отримане від Portmone значення md |
TermUrl | URL партнера, на який мають повернутись параметри відповіді від банку після проходження 3D Secure. Якщо оплата здійснюється з додатку – app url |
Приклад HTML-форми для виклику сторінки банку:
<form id="TheForm" action="https://acs.privatbank.ua/pPaReqMC.jsp" method="POST"
name="TheForm">
<input type="hidden" name="PaReq" value="eJxVUdtugkAQ/RXDY5O6u1wW1oxrqPbiA0KtfegjwY
1iBHTBFvv1nUWs7SabzJnrmTMwaYv94FPpOq/KscWG1BqoMqvWebkZW++rp/vAmkhYbbVSszeVnbSSE
Km6TjdqkK/HVpIu1ZF5nsMDfK7g3Oc2FUwI6nmccSE45ZaEJMQ8Cf0kiYOGNpArxJY626ZlIyHNjg/z
hfTcgHsBkB5CofR8Jjljru9j4QVCmRZKJvFyFcWLx+E0ju6ek/ADSOeHrDqVjT7LgLpArgBOei+3TXO
oR4QcKt0UVamGWVUAMREgNyrJyVg1dmrztYxm4Rf+Nl6F39EuaxdTyqJZRKPd6xiIyYB12ihpUyaoY/
sDZo+YO3JxdueHtDAUcHXbwb0uAA5mRthHTOCvA1Bvjec4SxFQXOGKQLUHZI0ZKMWvDeRGePpilMwaF
MlxHN/2fY+KTs7OZxrkKIaNZLsOBgAxVaS/FOmvjNa/6/8AWHOz+w=="/>
<input type="hidden" name="MD" value="166765657"/>
<input type="hidden" name="TermUrl" value="https://portmone2.com/r3/ecommerce/test/"/>
</form>
Після вводу коду на сторінці банку клієнт буде повернений назад на TermUrl
, що вказаний у запиті, і на нього банком будуть передані параметри MD
та PaRes
, значення яких необхідно надіслати у Portmone для отримання результатів авторизації.
Параметри запиту у Portmone для підтвердження 3D Secure:
Параметр | Опис |
---|---|
MD | Значення MD , отримане від банку на ваш URL |
PaRes | Значення PaRes , отримане від банку на ваш URL |
shopBillId | Ідентифікатор транзакції (платіжного документу) у системі Portmone.com, отриманий у попередніх запитах |
Приклад запиту у Portmone для підтвердження 3D Secure:
{"method":"confirmMpi", "params": { "data":
{ "MD":"166765657",
"PaRes":"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",
"shopBillId":"476986520" }
}, "id": "1"}
Відповідь від Portmone.com буде містити результат оплати.
Кроки для інтеграції Apple Pay на сайт
Крок 1. Реєстрація та перевірка у системі Apple Pay
-
Зареєструйте MerchantID та надішліть у Portmone.com:
a. Увійдіть до облікового запису Apple Developer Account.
b. Перейдіть в розділ «Certificates, Identifiers & Profiles».
c. У розділі «Identifiers» оберіть «Merchant IDs».
d. Додайте новий Merchant ID, натиснувши на "+" у верхньому правому куті екрана.
e. Заповніть необхідні поля* та натисніть «Continue».
f. Натисніть «Register», щоб підтвердити введені дані.
g. Надішліть ваш Merchant ID у Portmone.com за адресою: [email protected].
Примітка: * - Description - опис; Identifier - домен вашого сайту в зворотному порядку, з додаванням «merchant» на початку (наприклад, сайт shop.ua, Identifier - merchant.ua.shop).
-
Отримайте зворотнім листом CSR-файл, сформований Portmone.com, який буде необхідним для подальших кроків.
-
Сформуйте Apple Pay Payment Processing Certificate та надішліть до Portmone.com:
(https://help.apple.com/developer-account/#/devb2e62b839?sub=devf31990e3f)
a. Увійдіть до облікового запису Apple Developer Account.
b. Перейдіть в розділ «Certificates, Identifiers & Profiles».
c. У розділі «Identifiers» оберіть «Merchant IDs».
d. Оберіть створений вами Merchant ID та натисніть «Edit».
e. У розділі Apple Pay Payment Processing Certificate, натисніть «Create Certificate».
f. На наступному екрані натисніть «Continue».
g. Візьміть отриманий від Portmone.com CSR-файл та завантажте його на сайт, натиснувши «Choose File», а потім «Continue».
h. Завантажте згенерований сертифікат.
i. Надішліть завантажений сертифікат (файл apple_pay.cer) до Portmone.com за адресою: [email protected].
- Зареєструйте та підтвердьте свій домен:
(https://help.apple.com/developer-account/#/dev1731126fb)
a. Увійдіть до облікового запису Apple Developer Account.
b. Перейдіть в розділ «Certificates, Identifiers & Profiles».
c. У розділі «Identifiers» оберіть «Merchant IDs».
d. Оберіть створений вами Merchant ID та натисніть «Edit».
e. У розділі «Merchant Domains» натисніть «Add Domain».
f. Введіть назву свого домену та натисніть «Continue»*.
g. Завантажте файл apple-developer-merchantid-domain-association.txt.
h. Збережіть завантажений файл на сервері від Apple.
i. Натисніть «Verify».
Примітка: * – домен повинен підтримувати HTTPS.
- Створіть Apple Pay Merchant Identity Certificate:
(https://help.apple.com/developer-account/#/devb2e62b839?sub=dev103e030bb)
a. Увійдіть до облікового запису Apple Developer Account.
b. Перейдіть в розділ «Certificates, Identifiers & Profiles».
c. У розділі «Identifiers» оберіть «Merchant IDs».
d. Оберіть створений вами Merchant ID та натисніть «Edit».
e. У розділі «Apple Pay Merchant Identity Certificate» натисніть «Create Certificate».
f. Виконайте дії, описані на сайті Apple, а потім натисніть «Continue».
g. Скопіюйте згенерований CSR-файл, вибравши «Choose File», а потім «Continue».
h. Завантажте згенерований сертифікат (merchant_id.cer) і відкрийте його в додатку Keychain Access на комп'ютері Mac.
i. У Keychain Access виберіть імпортований сертифікат та експортуйте його у формат .p12 (Personal Information Exchange).
j. Запустіть команду: openssl pkcs12 -in merchant_id.p12 -out merchant_id.pem -nodes -clcerts
k. Скопіюйте створений сертифікат у форматі .pem на серве р. Це буде необхідно для створення Apple Pay Payment Session в процесі перевірки магазину.
Крок 2. Технічна інтеграція з ApplePay
Щоб інтегрувати Apple Pay на сайт, дотримуйтесь інструкцій за посиланням: https://developer.apple.com/documentation/apple_pay_on_the_web.
- Перевірте можливість оплати з Apple Pay
Виконується перевірка, чи підтримує пристрій або браузер оплату з Apple Pay, а також чи є в Wallet карта, якою можна оплачувати.
if (window.ApplePaySession) {
var promise = ApplePaySession.canMakePaymentsWithActiveCard({YOUR_MERCHANT_ID});
promise.then(function(canMakePayments) {
if (canMakePayments)
});
} else {
}
- Сформуйте структуру платежу для сесії
document.getElementById("apple-pay-button").onclick = function(event) {
var paymentRequest = {
currencyCode: 'UAH',
countryCode: 'UA',
total: {
label: {PRODUCT_NAME},
amount: {PAYMENT_AMOUNT}
},
merchantCapabilities: ['supports3DS'],
supportedNetworks: ['masterCard', 'visa']
};
var session = new ApplePaySession(3, paymentRequest);
- Провалідуйте мерчанта
session.onvalidatemerchant = function(event) {
var promise = validateMerchant(event.validationURL);
promise.then(function(merchantSession) {
session.completeMerchantValidation(merchantSession);
});
}
function validateMerchant(validationURL) {
return new Promise(function(resolve, reject) {
var applePayPayload = {
'merchantId': {YOUR_MERCHANT_ID},
'validationURL': {YOUR_VALIDATION_URL},
'body': {
'merchantIdentifier': {YOUR_MERCHANT_ID},
'domainName': {YOUR_DOMAIN_NAME},
'displayName': {PRODUCT_NAME}
}
};
var xhr = new XMLHttpRequest();
xhr.onload = function() {
var data = JSON.parse(this.responseText);
resolve(data);
};
xhr.onerror = reject;
xhr.open('POST', merchantValidationEndpoint, true);
xhr.setRequestHeader('Content-Type', 'application/json;charset=utf-8');
xhr.send(JSON.stringify(applePayPayload));
});
}
- Запустіть сесію та опрацюйте платіж
session.onpaymentauthorized = function(event) {
session.completePayment(ApplePaySession.STATUS_SUCCESS);
}
session.begin();
Приклад набору даних, що повертаються від Apple Pay:
{
"paymentData":
{
"version":"EC_v1",
"data":"FDXK/fkIXGh07D5QU5eUK3ZK8BxKk6syu+Hf0DH6DBZ8/loNHFWHULxsmfIAyaKzvkUjm2dHaR36pS4x8UXuQ3JhzeB7AfDmZsP8JcL16OOyZKZP3JjOwdkUVvzUyPWtjtlrtXDaBmJ5jPcT8bgnLZV/7RcC9HpRkdmUqVyJ042wAvPNxF7SVt57PcMyMeccVL6yWUk6N2oV7ESFoGVbAeJdpn5zZT8lebigrnhZRhvwoJ5ZJ/dGK9UZDP/swhH8nMLjK620Wu9rvidhsSheJCwM2sCH27fKpeEO2x+vWaLlL9ukwDms9ciOGvSyb+tDvRD9MheecGri1XCC6DxQT5JkHDH7mi1vev0QFjjVY6bmh26iNC0lIB4FKVznNv03yjkKNJhEMbp/clv4",
"signature":"MIAGCSqGSIb3DQEHAqCAMIACAQExDzANBglghkgBZQMEAgEFADCABgkqhkiG9w0BBwEAAKCAMIID4zCCA4igAwIBAgIITDBBSVGdVDYwCgYIKoZIzj0EAwIwejEuMCwGA1UEAwwlQXBwbGUgQXBwbGljYXRpb24gSW50ZWdyYXRpb24gQ0EgLSBHMzEmMCQGA1UECwwdQXBwbGUgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxEzARBgNVBAoMCkFwcGxlIEluYy4xCzAJBgNVBAYTAlVTMB4XDTE5MDUxODAxMzI1N1oXDTI0MDUxNjAxMzI1N1owXzElMCMGA1UEAwwcZWNjLXNtcC1icm9rZXItc2lnbl9VQzQtUFJPRDEUMBIGA1UECwwLaU9TIFN5c3RlbXMxEzARBgNVBAoMCkFwcGxlIEluYy4xCzAJBgNVBAYTAlVTMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEwhV37evWx7Ihj2jdcJChIY3HsL1vLCg9hGCV2Ur0pUEbg0IO2BHzQH6DMx8cVMP36zIg1rrV1O/0komJPnwPE6OCAhEwggINMAwGA1UdEwEB/wQCMAAwHwYDVR0jBBgwFoAUI/JJxE+T5O8n5sT2KGw/orv9LkswRQYIKwYBBQUHAQEEOTA3MDUGCCsGAQUFBzABhilodHRwOi8vb2NzcC5hcHBsZS5jb20vb2NzcDA0LWFwcGxlYWljYTMwMjCCAR0GA1UdIASCARQwggEQMIIBDAYJKoZIhvdjZAUBMIH+MIHDBggrBgEFBQcCAjCBtgyBs1JlbGlhbmNlIG9uIHRoaXMgY2VydGlmaWNhdGUgYnkgYW55IHBhcnR5IGFzc3VtZXMgYWNjZXB0YW5jZSBvZiB0aGUgdGhlbiBhcHBsaWNhYmxlIHN0YW5kYXJkIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHVzZSwgY2VydGlmaWNhdGUgcG9saWN5IGFuZCBjZXJ0aWZpY2F0aW9uIHByYWN0aWNlIHN0YXRlbWVudHMuMDYGCCsGAQUFBwIBFipodHRwOi8vd3d3LmFwcGxlLmNvbS9jZXJ0aWZpY2F0ZWF1dGhvcml0eS8wNAYDVR0fBC0wKzApoCegJYYjaHR0cDovL2NybC5hcHBsZS5jb20vYXBwbGVhaWNhMy5jcmwwHQYDVR0OBBYEFJRX22/VdIGGiYl2L35XhQfnm1gkMA4GA1UdDwEB/wQEAwIHgDAPBgkqhkiG92NkBh0EAgUAMAoGCCqGSM49BAMCA0kAMEYCIQC+CVcf5x4ec1tV5a+stMcv60RfMBhSIsclEAK2Hr1vVQIhANGLNQpd1t1usXRgNbEess6Hz6Pmr2y9g4CJDcgs3apjMIIC7jCCAnWgAwIBAgIISW0vvzqY2pcwCgYIKoZIzj0EAwIwZzEbMBkGA1UEAwwSQXBwbGUgUm9vdCBDQSAtIEcz***MjM0NjMwWjB6MS4wLAYDVQQDDCVBcHBsZSBBcHBsaWNhdGlvbiBJbnRlZ3JhdGlvbiBDQSAtIEczMSYwJAYDVQQLDB1BcHBsZSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTETMBEGA1UECgwKQXBwbGUgSW5jLjELMAkGA1UEBhMCVVMwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATwFxGEGddkhdUaXiWBB3bogKLv3nuuTeCN/EuT4TNW1WZbNa4i0Jd2DSJOe7oI/XYXzojLdrtmcL7I6CmE/1RFo4H3MIH0MEYGCCsGAQUFBwEBBDowODA2BggrBgEFBQcwAYYqaHR0cDovL29jc3AuYXBwbGUuY29tL29jc3AwNC1hcHBsZXJvb3RjYWczMB0GA1UdDgQWBBQj8knET5Pk7yfmxPYobD+iu/0uSzAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFLuw3qFYM4iapIqZ3r6966/ayySrMDcGA1UdHwQwMC4wLKAqoCiGJmh0dHA6Ly9jcmwuYXBwbGUuY29tL2FwcGxlcm9vdGNhZzMuY3JsMA4GA1UdDwEB/wQEAwIBBjAQBgoqhkiG92NkBgIOBAIFADAKBggqhkjOPQQDAgNnADBkAjA6z3KDURaZsYb7NcNWymK/9Bft2Q91TaKOvvGcgV5Ct4n4mPebWZ+Y1UENj53pwv4CMDIt1UQhsKMFd2xd8zg7kGf9F3wsIW2WT8ZyaYISb1T4en0bmcubCYkhYQaZDwmSHQAAMYIBjTCCAYkCAQEwgYYwejEuMCwGA1UEAwwlQXBwbGUgQXBwbGljYXRpb24gSW50ZWdyYXRpb24gQ0EgLSBHMzEmMCQGA1UECwwdQXBwbGUgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxEzARBgNVBAoMCkFwcGxlIEluYy4xCzAJBgNVBAYTAlVTAghMMEFJUZ1UNjANBglghkgBZQMEAgEFAKCBlTAYBgkqhkiG9w0BCQMxCwYJKoZIhvcNAQcBMBwGCSqGSIb3DQEJBTEPFw0xOTEwMDcwOTAzMzlaMCoGCSqGSIb3DQEJNDEdMBswDQYJYIZIAWUDBAIBBQChCgYIKoZIzj0EAwIwLwYJKoZIhvcNAQkEMSIEINit/iw3WwwTnehkerYBQk/4vdByMbbliBcTPyT7FRiPMAoGCCqGSM49BAMCBEgwRgIhAKvTEMlNfyLdg9slvO6Ignu+y//nAmevtrQa8Yk2qw0/AiEAhivZamhbazis3+5Nd5dZWxgM1gv/PpsAykJvjg3qQ0QAAAAAAAA=",
"header":
{
"ephemeralPublicKey":"MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEXaMJN7PRXhkoMa1n1wOnut4KIkIX0WuyXenzRukdDUzo/GZ+TRqTSPjZDOPoZkisqifaroXUJZP9xCUlJQ3iqQ==",
"publicKeyHash":"48145ri0BI4zYNGguvfW+7qJc3kQlcGdil64a4cg+Ag=",
"transactionId":"cd80b9fc31c9a850c14c697bd4c258aa51e63bf72bba46394eebbc3fae1b58e4"
}
},
"paymentMethod":
{
"displayName":"MasterCard 5179",
"network":"MasterCard",
"type":"debit"
},
"transactionIdentifier":"CD80B9FC31C9A850C14C697BD4C258AA51E63BF72BBA46394EEBBC3FAE1B58E4"
}
- Надішліть значення
paymentData
до Portmone API (див. Крок 3).
Крок 3. Технічна інтеграція з Portmone.com
До API Portmone.com необхідно надіслати дані paymentData
.
Метод: APay
URL: https://www.portmone.com.ua/r3/api/gateway.
Параметри запиту:
Параметр | Опис | Обов'язковий |
---|---|---|
login | Логін Інтернет-магазину для доступу до управління акаунтом | Так |
password | Пароль Інтернет-магазину | Так |
aPayMerchantName | Merchant ID у Apple Developer Account | Так |
paymentData | Значення параметру paymentData , що отриманий мерчантом у відповіді від системи Apple Pay | Так |
payeeId | Унікальний ідентифікатор Інтернет-магазину. Надається кожному Партнерові індивідуально при підключенні до системи Portmone.com | Так |
billAmount | Сума оплати. Розділювач крапка. Наприклад: "10.21" | Так |
description | Коментар до замовлення / опис призначення платежу | Ні |
shopOrderNumber | Номер замовлення (рахунку) у системі Інтернет-магазину | Ні |
emailRecipient | Адреса електронної пошти Клієнта | Ні |
preauthFlag | Ознака преавторизації платежу (значення "Y" вказує на те, що ця оплата здійснюється з використанням процедури преавторизації, значення "N" – звичайна оплата без преавторизації) | Ні |
billCurrency | Валюта проведення платежу. Можливі значення: UAH, USD, EUR, GBP, BYN, KZT, RUB (значення без задання – UAH) | Ні |
shop_site_id | Канал оплати у системі Portmone | Ні |
threeDs | Секція параметрів, що використовується для зазначення URL мерчанта (termUrl або appUrl ), на який буде перенаправлено клієнта після успішного проходження перевірки 3D Secure | Ні |
termUrl | Необхідно встановити значення "Y" або не використовувати цей параметр | Ні |
appUrl | Значення appUrl мерчанта (у разі інтеграції GPay у мобільний додаток) | Ні |
Приклад запиту:
{
"method":"APay",
"params": {
"data":{
"login":"wdishop",
"password":"11111111",
"aPayMerchantName":"",
"paymentData":{
"version":"EC_v1",
"data":"7p8TndxxyLvLxzkD****xnjJj5Gf5vtmHGHEN",
"signature":"MIAGCSqGSI****b05ZOreRp5zAt+Zx+ukgAAAAAAAA==",
"header":{
"ephemeralPublicKey":"MFkwEwY****hc7lmaYq8I8Nr111pStGhQ==",
"publicKeyHash":"48145ri0BI***il64a4cg+Ag=",
"transactionId":"16d32ec****da49c41c36a5a6c7cc"
}
},
"payeeId":"11344",
"billAmount":"1.01",
"description":"test",
"shopOrderNumber":"AP-01",
"attribute1":"",
"attribute2":"",
"attribute3":"",
"attribute4":"",
"emailRecipient":"",
"billCurrency":"UAH",
"preauthFlag":"N",
"shop_site_id" : "",
"threeDs":{
"termUrl":"Y",
"appUrl":"https://portmone2.com/r3/ecommerce/test/master-test-from"
}
}
},
"id": "1"
}
Параметри відповіді:
Параметр | Опис |
---|---|
status | Результат оплати. Можливі значення: - PAYED – оплата успішна, - REJECTED – відмова, - CREATED – замовлення створено, але не оплачено |
errorCode | Код помилки. Якщо значення параметру "0" – оплата успішна. Якщо значення параметру більше за 0 або порожнє – сталася помилка |
error | Текст помилки (див. Таблицю кодів відмов) |
shopBillId | Ідентифікатор транзакції (платіжного документу) у системі Portmone.com |
billAmount | Передана у запиті сума транзакції |
billNumber | Номер замовлення (рахунку) у системі Інтернет-магазину. До 120 символів |
attribute1 | Службове поле, заповнюється на розсуд компанії |
attribute2 | Службове поле, заповнюється на розсуд компанії |
attribute3 | Службове поле, заповнюється на розсуд компанії |
attribute4 | Службове поле, заповнюється на розсуд компанії |
cardMask | Маска Картки/ Токену платника |
actionMPI | URL банку, на який треба перенаправити клієнта для проходження 3D Secure перевірки |
pareq | Параметр, який треба передати на actionMPI при проходженні 3D Secure перевірки |
authCode | Код авторизації |
description | Коментар до замовлення / опис призначення оплати. До 250 символів |
lang | Мова відповіді. Залежить від локалізації endpoint, на який надсилали запит* |
md | Параметр, який треба передати на actionMPI при проходженні 3D Secure перевірки |
isNeed3DS | Ознака необхідності проходження перевірки 3D Secure ("Y" – необхідно пройти процедуру перевірки 3D Secure, "N" – додаткові дії не потрібні) |
token | Значення Токену для подальших оплат. Для методів оплати GPay та APay не формується |
billCurrency | Валюта платежу |
transactionId | Ідентифікатор транзакції в системі банка-еквайера |
termUrl | URL мерчанта, на який мають повернутись параметри відповіді від банку після проходження 3D Secure. Значення генерується системою Portmone |
successUrl | Значення appUrl мерчанта, на який мають повернутись параметри відповіді від банку після проходження 3D Secure (якщо це значення було передане в параметрі appUrl у запиті на оплату) |
pdfUrl | Посилання для збереження квитанції про оплату. Надається клієнтові лише якщо status=PAYED |
shop_site_id | Канал оплати у системі Portmone |
Примітка: * – для отримання локалізованих текстів відмов необхідно надсилати запит на відповідний endpoint:
https://www.portmone.com.ua/r3/api/gateway – стандартно українською мовою https://www.portmone.com.ua/r3/uk/api/gateway – для відповідей укра їнською мовою https://www.portmone.com.ua/r3/ru/api/gateway – для відповідей російською мовою https://www.portmone.com.ua/r3/en/api/gateway – для відповідей англійською мовою
Приклад успішної відповіді:
{
"result": {
"status": "PAYED",
"errorCode": "0",
"error": "",
"shopBillId": "550298815",
"billAmount": "1.01",
"billNumber": "SHP-00000002",
"attribute1": "",
"attribute2": "",
"attribute3": "",
"attribute4": "",
"cardMask": "535560******3735",
"actionMPI": "",
"pareq": "",
"authCode": "67037Z",
"description": "test payment",
"lang": "uk",
"md": "",
"isNeed3DS": "N",
"token": "",
"billCurrency": "UAH",
"transactionId": "927500948048",
"pdfUrl": "https://www.portmone.com.ua/r3/services/receipts/get-receipts/shop-bill-id/35357a20f10b49519794e81b48b20d0402cd2b7654553048021cb230400befdf94bacfbb12bd77983adae9422fbcc51cf0987a171403f08b33b2d119249845bad4e457",
"shop_site_id" : ""
},
"id": "1"
}
Приклад відмови:
{
"result": {
"status": "REJECTED",
"errorCode": "5",
"error": "Transactions has exceeded the limit by your bank",
"shopBillId": "5530964511",
"billAmount": "1",
"billNumber": "P55309624511",
"attribute1": "A",
"attribute2": "",
"attribute3": "",
"attribute4": "",
"cardMask": "535560******3735",
"actionMPI": "",
"pareq": "",
"authCode": "",
"description": "test payment",
"lang": "en",
"md": "",
"isNeed3DS": "N",
"token": "",
"billCurrency": "UAH",
"transactionId": "928199458716",
"pdfUrl": "",
"shop_site_id" : ""
},
"id": "1"
}
Приклад відповіді, якщо необхідна 3D Secure перевірка:
{
"result": {
"status": "CREATED",
"errorCode": "0",
"error": "",
"shopBillId": "663526924",
"billAmount": "1.2",
"billNumber": "123456.14052020.05",
"attribute1": "1",
"attribute2": "2",
"attribute3": "3",
"attribute4": "4",
"cardMask": "516874******5179",
"actionMPI": "https://acs.privatbank.ua/pPaReqMC.jsp",
"pareq": "eJxVUcluwjAQ/RWUY6XiJZtBE6MUuh0CKYVDj1FiQSqy4IQCf99xCNDKGmne7H4PJqdiN/hRusmrMrDYkFoDVaZVlpebwFqvXh6FNZGw2mqlZp8qPWglIVJNk2zUIM8CK06Was/cEXWY8LjjuB4Xtuc7jNr4RkJ49ohbEuIQ6yT0myQuGnIgV4gjdbpNylZCku6f3ufSdYTnCiA9hELp95n0GHN8HxsvEMqkUDJeLFfRYv48nC6ih9c4/ALSxSGtDmWrz1JQB8gVwEHv5LZt62ZMSF3ptqhKNUyrAojJALmfEh+M1+CkU57JaBYe0c5oLPpen+ZneoxWH2hRAMRUQJa0SnLKKXW5O2DO2PXHZncXh6QwJ+DXOcV/XQDUZkfYZ0zibwCQb41ynOVIYOqGQJ1qvBorkIqbD+R+8PTNMJm2SJIRxmM2E6yjs4uZATmSwTll3QQDgJgu0itFepXR+6f+L1ndtBw=",
"authCode": "",
"description": "test payment",
"lang": "ru",
"md": "194203287",
"isNeed3DS": "Y",
"token": "",
"billCurrency": "UAH",
"transactionId": "",
"termUrl": "https://www.portmone.com.ua/r3/pg/confirmapigateway/3332633904a34c326a772f1256a70958bdaa4cc092a3fa86bdd5712dc033654d2582a3e4668f52230428/?shopBillId=303977a031fa486ee5e571aa119b89ba9eacd8&3ds=Y&py=303523031e7bb72dc8c426146af248",
"successUrl": "https://portmone2.com/r3/ecommerce/test/master-test-from",
"pdfUrl": ""
},
"id": "1"
}
Для проходження процедури 3D Secure мерчанту необхідно відкрити сторінку перевірки від банку (action
), передавши на неї POST-запитом параметри перевірки (PaReq
, MD
) та URL для повернення після 3D Secure (TermUrl
).
Параметри виклику сторінки банку:
Параметр | Опис |
---|---|
action | Отримане від Portmone значення actionMPI |
PaReq | Отримане від Portmone значення pareq |
MD | Отримане від Portmone значення md |
TermUrl | URL партнера, на який мають повернутись параметри відповіді від банку після проходження 3D Secure. Якщо оплата здійснюється з додатку – app url |
Приклад HTML-форми для виклику сторінки банку:
<form id="TheForm" action="https://acs.privatbank.ua/pPaReqMC.jsp" method="POST"
name="TheForm">
<input type="hidden" name="PaReq" value="eJxVUdtugkAQ/RXDY5O6u1wW1oxrqPbiA0KtfegjwY
1iBHTBFvv1nUWs7SabzJnrmTMwaYv94FPpOq/KscWG1BqoMqvWebkZW++rp/vAmkhYbbVSszeVnbSSE
Km6TjdqkK/HVpIu1ZF5nsMDfK7g3Oc2FUwI6nmccSE45ZaEJMQ8Cf0kiYOGNpArxJY626ZlIyHNjg/z
hfTcgHsBkB5CofR8Jjljru9j4QVCmRZKJvFyFcWLx+E0ju6ek/ADSOeHrDqVjT7LgLpArgBOei+3TXO
oR4QcKt0UVamGWVUAMREgNyrJyVg1dmrztYxm4Rf+Nl6F39EuaxdTyqJZRKPd6xiIyYB12ihpUyaoY/
sDZo+YO3JxdueHtDAUcHXbwb0uAA5mRthHTOCvA1Bvjec4SxFQXOGKQLUHZI0ZKMWvDeRGePpilMwaF
MlxHN/2fY+KTs7OZxrkKIaNZLsOBgAxVaS/FOmvjNa/6/8AWHOz+w=="/>
<input type="hidden" name="MD" value="166765657"/>
<input type="hidden" name="TermUrl" value="https://portmone2.com/r3/ecommerce/test/"/>
</form>
Після вводу коду на сторінці банку клієнт буде повернений назад на TermUrl
, що вказаний у запиті, і на нього банком будуть передані параметри MD
та PaRes
, значення яких необхідно надіслати у Portmone для отримання результатів авторизації.
Параметри запиту у Portmone для підтвердження 3D Secure:
Параметр | Опис |
---|---|
MD | Значення MD , отримане від банку на ваш URL |
PaRes | Значення PaRes , отримане від банку на ваш URL |
shopBillId | Ідентифікатор транзакції (платіжного документу) у системі Portmone.com, отриманий у попередніх запитах |
Приклад запиту у Portmone для підтвердження 3D Secure:
{"method":"confirmMpi", "params": { "data":
{ "MD":"166765657",
"PaRes":"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",
"shopBillId":"476986520" }
}, "id": "1"}
Відповідь від Portmone.com буде містити результат оплати.
Додаток 1. Схема обробки параметрів відповіді
Додаток 2. Таблиця кодів відмов
Код | Опис | Повідомлення про помилку (en) | Повідомлення про помилку (ukr) | Повідомлення про помилку (ru) | Рекомендовані дії |
---|---|---|---|---|---|
0 | Оплата успішна | ||||
1 | Declined by bank | Transaction declined by bank | Операція відхилена банком | Операция отклонена банком | Клієнту необхідно звернутись до свого банку. Може повторити оплату |
2 | Transaction is prohibited by acquiring bank | Transaction is prohibited by acquiring bank | Операція відхилена банком-еквайером | Операция отклонена банком-эквайером | Клієнту необхідно звернутись до служби підтримки Portmone.com. Може повторити оплату |
3 | Transaction is prohibited by issuing bank | Transaction is prohibited by issuing bank | Операція відхилена вашим банком | Операция отклонена вашим банком | Клієнту необхідно звернутись до свого банку. Може повторити оплату |
4 | Technical/ communication problem | Technical problems. Please try again later | Технічні проблеми. Спробуйте пізніше | Технические проблемы. Попробуйте позже | Клієнту необхідно звернутись до служби підтримки Portmone.com. Може повторити оплату |
5 | Transaction has exceeded the limit by your bank | Transaction has exceeded the limit by your bank | Операція відхилена банком. Перевищення лімітів | Операция отклонена банком. Превышение лимитов | Клієнту необхідно звернутись до свого банку. Може повторити оплату |
6 | Not sufficient funds | Transaction declined by bank. Insufficient funds | Операція відхилена банком. Недостатньо коштів | Операция отклонена банком. Недостаточно средств | Клієнту необхідно звернутись до свого банку. Може повторити оплату |
7 | Invalid CVV or card expiry date | Transaction declined by bank. Invalid CVV or card expiry date | Операція відхилена банком. Некоректний CVV або термін дії картки | Операция отклонена банком. Некорректный CVV или срок действия карты | Клієнту необхідно звернутись до свого банку. Може повторити оплату |
8 | Invalid OTP code | Transaction declined. Invalid OTP code | Операція відхилена. Введено невірний код | Операция отклонена. Введен некорректный код | Клієнту необхідно звернутись до служби підтримки Portmone.com. Може повторити оплату |
9 | Invalid 3DS data | Transaction declined by bank. Invalid 3DS code | Операція відхилена. Введено невірний код | Операция отклонена. Введен неверный код | Клієнту необхідно звернутись до свого банку. Може повторити оплату |
10 | Duplicate transactions | Transaction declined. Duplicate transactions | Операція відхилена. Повторна транзакція | Операция отклонена. Повторная транзакция | Клієнт може повторити оплату |
11 | Format error | Transaction declined. Format error | Операція відхилена. Некоректний формат запиту | Операция отклонена. Некорректный формат запроса | Мерчанту необхідно перевірити коректність формату запиту |
12 | Portmone verification | Additional card verification required | Необхідно пройти додаткову перевірку картки | Необходимо пройти дополнительную верификацию карты | Клієнту необхідно звернутись до служби підтримки Portmone.com. Може повторити оплату |
13 | System error. Please try again. | System error. Please contact Portmone.com support | Системна помилка. Зверніться до служби підтримки Portmone.com | Си стемная ошибка. Обратитесь в службу поддержки Portmone.com | Клієнту необхідно звернутись до служби підтримки Portmone.com. Може повторити оплату |
14 | Wrong signature | Transaction declined. Authentication failed or invalid request | Операція відхилена. Не пройдена аутентифікація або некоректний запит | Операция отклонена. Не пройдена аутентификация или некорректный запрос | Мерчанту необхідно перевірити коректність параметрів запиту |
15 | Query time exceeded | Transaction declined. Timeout. Contact Portmone.com support | Операція відхилена. Перевищено час очікування. Зверніться до служби підтримки Portmone.com | Операция отклонена. Превышено время ожидания. Обратитесь в службу поддержки Portmone.com | Клієнту необхідно звернутись до служби підтримки Portmone.com. Може повторити оплату |
16 | Invalid request data | Transaction declined. Invalid request | Операція відхилена. Некоректний запит | Операция отклонена. Некорректный запрос | Мерчанту необхідно перевірити коректність запиту |
17 | Transaction has exceeded system limits | Transaction declined. Limit is exceeded. Contact Portmone.com support | Операція відхилена. Перевищено ліміт. Зверніться до служби підтримки Portmone.com | Операция отклонена. Превышен лимит. Обратитесь в службу поддержки Portmone.com | Клієнту необхідно звернутись до служби підтримки Portmone.com. Може повторити оплату |
18 | Fraud | Transaction declined by Portmone.com monitoring system. Please contact support | Операція відхилена моніторинговою системою Portmone.com. Зверніться до служби підтримки | Операция отклонена мониторинговой системой Portmone.com. Обратитесь в службу поддержки | Клієнту необхідно звернутись до служби підтримки Portmone.com. Може повторити оплату |
19 | Order not found | Order not found | Замовлення не знайдено | Заказ не найден |