Следуя руководству по https://developer.paypal.com/webapps/developer/docs/integration/web/accept-paypal-payment/, я успешно создал платеж и перенаправил пользователя на его утверждение.
Созданный платеж - это что-то похожее ниже, и я сохраняю его в сеансе пользователя для дальнейшей справки.
{
"id": "PAY-6RV70583SB702805EKEYSZ6Y",
"create_time": "2013-03-01T22:34:35Z",
"update_time": "2013-03-01T22:34:36Z",
"state": "created",
"intent": "sale",
"payer": {
"payment_method": "paypal"
},
"transactions": [
{
"amount": {
"total": "7.47",
"currency": "USD",
"details": {
"subtotal": "7.47"
}
},
"description": "This is the payment transaction description."
}
],
"links": [
{
"href": "https://api.sandbox.paypal.com/v1/payments/payment/PAY-6RV70583SB702805EKEYSZ6Y",
"rel": "self",
"method": "GET"
},
{
"href": "https://www.sandbox.paypal.com/webscr?cmd=_express-checkout&token=EC-60U79048BN7719609",
"rel": "approval_url",
"method": "REDIRECT"
},
{
"href": "https://api.sandbox.paypal.com/v1/payments/payment/PAY-6RV70583SB702805EKEYSZ6Y/execute",
"rel": "execute",
"method": "POST"
}
]
}
После того как пользователь одобрит платеж, Paypal перенаправит пользователя на return_url
. Например, http://<return_url>?token=EC-60U79048BN7719609&PayerID=7E7MGXCWTTKK2
.
Чтобы выполнить платеж, необходимо отправить запрос POST в https://api.sandbox.paypal.com/v1/payments/payment/{payment_id}/execute/
.
Вопрос
Только две части информации, предоставленные в Paypal в URL, token
и PayerID
. Как найти соответствующий payment_id
?
Возможное решение
token
является частью approval_url
, проанализируйте URL-адрес и сохраните связь token -> payment
, чтобы решить проблему. Но я ищу лучшее решение, которое не требует синтаксического анализа.