#google-pay #cybersource
#google-pay #киберресурс
Вопрос:
В настоящее время я использую REST-клиент PHP Simple Order Api https://github.com/CyberSource/cybersource-rest-client-php
Оба руководства для разработчиков, найденные на
- https://developer.cybersource.com/api/developer-guides/dita-payments/CreatingOnlineAuth/CreatingAuthReqGooglePay.html
- http://apps.cybersource.com/library/documentation/dev_guides/Google_Pay_SO_API/html/wwhelp/wwhimpl/js/html/wwhelp.htm#href=ch_encryptedData.html#1123566
Опишите тот же способ форматирования данных, полученных через Google Pay. Однако они описывают разные способы форматирования запроса.
1) Set the encryptedPayment_data field to the value of the
encryptedMessage field that was returned in the Full Wallet
response.
2) Set the paymentSolution field to 012.
и
2) In the authorization request under the paymentInformation
object, set the key field under the fluidData object to the
Base64-encoded value obtained from the Google Pay blob.
3) Under the processingInformation object, set the
paymentSolution field to 012.
Я использую метод fluidData, поскольку не смог найти ссылку на ссылку на поле encryptedPayment в Simple Order API, но он не работает.
Запрос
{
"clientReferenceInformation": {
"code": "testcode"
},
"processingInformation": {
"paymentSolution": "012"
},
"paymentInformation": {
"fluidData": {
"key":"<Google Pay Blob>"
}
},
"orderInformation": {
"amountDetails": {
"totalAmount": "100.00",
"currency": "USD"
},
"billTo": {
"firstName": "John",
"lastName": "Doe",
"company": "ABC Company",
"address1": "1 Market St",
"locality": "san francisco",
"administrativeArea": "CA",
"postalCode": "94105",
"country": "US",
"email": "test@cybs.com",
"phoneNumber": "4158880000"
}
}
}
Ответ
[body] => stdClass Object
(
[submitTimeUtc] => 2019-04-10T16:05:39Z
[status] => INVALID_REQUEST
[reason] => MISSING_FIELD
[message] => Declined - The request is missing one or more fields
[details] => Array
(
[0] => stdClass Object
(
[field] => recipientInformation.card.number
[reason] => MISSING_FIELD
)
)
)
[message] => [400] Error connecting to the API (https://apitest.cybersource.com/pts/v2/payments/)
Комментарии:
1. вы это поняли?
2. @TzvetlinVelev Кто-нибудь из вас нашел исправление для этого?
Ответ №1:
Вы должны заполнять paymentInformation-> fluidData-> значение, а не «ключ». Должно выглядеть примерно так:
"paymentInformation": {
"fluidData": {
"value": "eyJzaWduYXR1cmUiOiJNRVlDSVFEOWNseWVWaDdjQ1FQNjhSYjVDYjNYREF1aEZxZzJDcVAxZmxuL0lHQmJ2Z0loQU1oM3YxYlZoRUVwQjFJdThib2VmN01POE1TR1Q0Ni9CenRUcUVTMmpiYysiLCJwcm90b2NvbFZlcnNpb24iOiJFQ3YxIiwic2lnbmVkTWVzc2FnZSI6IntcImVuY3J5cHRlZE1lc3NhZ2VcIjpcIkg2YzFVcUNsQnNVRkFNUGd4aVp3M3V5aFgyaVpEQnlIWWU2NSs3Mnh2MTh4OWZUczZFd1lEc3FNTHNiMnh6aUpqRlZ4Vm1kcXBWTWVSSCtJbTI4WU9PQXcxY05USjBucko3YVdFSlQxY2xZYm4vZy9JS1FWb3Y2Q3FpYzlrTzJGcVpyMWhMWVZmU255ZnhjdXVkNHBvSWgvb0daQXBCMzZOWDBvSktWeG93LzlaR2lKSXBaR3o1VXByYm9pMVl0VlpvOVJiN1NsL3RPTEJyRm5XU2hXem1sbi96V3hobU5hcEN0REVpM005MWtuU2ZhMWg0NVordG0ybWZuVzJub1oxM1pNMURsaGg3UHpmKzZqZ1grK09qbVpLS01nMEk1bEZBcnhReGFLckw5bmRCNmkxTTZ0MjAzTVNhSlRmbjFjY1pXaEF0K3Vlb2EzbVQxdWVveURUL09OaUU5a0dub1dpYjJINjRoNlIvM0oxaHJBdVlpY0p6NTNGcjkvZ09iUTFBT0huclNMTHNuTzJSUUVORmdzTXA5Ri8wOWIycC91NDRBOGt6TE1HT2svdGZPVURXL2V3c1JRcVZzaFEyY1plSjRcXHUwMDNkXCIsXCJlcGhlbWVyYWxQdWJsaWNLZXlcIjpcIkJFQnpZRk13QjlOVjVJenlhZzFFMHBVMGZXK0hYbmxXVm5iN1JZWGVSLzR1K0tmUjJweVhoekJzSXVMOWsvTkNLZFNTOXRpSG1LUzZHUEdjZHozU3dnVVxcdTAwM2RcIixcInRhZ1wiOlwiYktUZVQrSVlBeUgwbWw3VEJuaXpGQVpCa2l0Q2dKS09uTStqOTI3enhWb1xcdTAwM2RcIn0ifQ=="
}
},
Кстати, REST API и Simple Order API — это два разных API с разными именами полей. Простой API заказа — это SOAP.