Ответ 1
Следующие пояснения основаны на прецеденте, в котором вы используете PayPal (Express Checkout или Payment Pro) в своем интернет-магазине Magento, но дополнительно интегрируете Mobile Native SDK в свой клиентский APP (вместо использования exsing Magento PayPal, встроенный в веб-просмотр в APP).
-
Проверка платежа (после того, как ваш клиент APP получил
payment-id
в ответе), важно для предотвращения мошенничества. Mobile APP взаимодействует с серверами PayPal самостоятельно, и вы не хотите доставлять товар/услугу при ответе на мобильный API (который легко реплицируется) без проверки сервера (вашего сервера Magento) против фактического содержимого платежа. -
По-видимому, Magento не приходит с этой частью кодов в модуле PayPal, и вам нужно реализовать свои собственные, но вам необязательно будет импортировать весь RESTful SDK только для одного вида оплаты - вызов API. Все основано на запросах JSON и разборе JSON, оно работает до тех пор, пока вы следуете схеме PayPal RESTful payload ЗДЕСЬ и инициируйте запрос с помощью
curl
. -
Контрольный список платежей после получения вашего сервера данных также можно найти ЗДЕСЬ.
Дополнительная передовая практика для реализации на сервере:
- Сохранять идентификатор платежа, например.
id": "PAY-564191241M8701234KL57LXI"
в вашей базе данных вместе с вводом данных заказа; - Храните
debug-id
в объектеerror
(если есть ответ об ошибке) из ответа API проверки (поиска платежей) в вашу базу данных для дальнейшего устранения проблемы с поддержкой PayPal.
Примеры API-тестов с помощью команд curl будут выглядеть так:
Шаг # 1 - Получение маркера доступа для аутентификации
curl -v https://api.sandbox.paypal.com/v1/oauth2/token \
-H "Accept: application/json" \
-H "Accept-Language: en_US" \
-u "<your sandbox APP client>:<your sandbox APP secret>" \
-d "grant_type=client_credentials"
Разберите ответ образца и получите токен доступа:
{
"scope": "https://api.paypal.com/v1/payments/.* https://api.paypal.com/v1/vault/credit-card https://api.paypal.com/v1/vault/credit-card/.*",
"access_token": "<Your-Access-Token-for-further-calls>",
"token_type": "Bearer",
"app_id": "APP-6XR95014SS315863X",
"expires_in": 28800
}
Шаг # 2 - Выполнение поискового вызова с помощью токена доступа и идентификатора платежа (возвращенный вами APP, например PAY-123456789)
curl https://api.sandbox.paypal.com/v1/payments/payment/PAY-123456789 \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <the access token from Step#1>"
И вы получите ответ, подобный этому, который содержит данные о платежах, которые вы бы сравнили и подтвердили с информацией о заказе в базе данных
{
"proof_of_payment": {
"adaptive_payment": {
"pay_key": "AP-70M68096ML426802W",
"payment_exec_status": "COMPLETED",
"timestamp": "2013-02-20T00:26:25Z",
"app_id": "APP-91B933855X481767M"
}
},
"payment": {
"short_description": "Hipster t-shirt",
"amount": "9.95",
"currency_code": "USD"
},
"client": {
"platform": "iOS",
"paypal_sdk_version": "1.0.0",
"environment": "live",
"product_name": "PayPal iOS SDK"
}
}