Подтвердить что ты не робот

API-интерфейс Paypal REST: как получить идентификатор платежа после того, как пользователь одобрил платеж.

Следуя руководству по 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, чтобы решить проблему. Но я ищу лучшее решение, которое не требует синтаксического анализа.

4b9b3361

Ответ 1

Я думаю, что документация PayPal не совсем понятна. Но вы можете сделать что-то простое, чтобы решить вашу проблему, передав PaymentID через параметр в вашем обратном URL.

Вот так: return_url = 'http://www.yourdomain.com/paypal/success/? paymentID = PAY-1234567'

Когда Paypal перенаправляется на ваш сайт, он возвращает платежный идентификатор вместе с другими параметрами.


Em português:

Não acho que isso esteja claro na documentação do Paypal. Сопровождение для использования в Интернете, eu passo o PaymentID como parâmetro na minha URL de retorno que informo para o Paypal. Assim, quando o Paypal redirecionar para meu site de volta ele matem o parâmetro com o PaymentID que eu tinha passado.

Ответ 2

Вам нужно будет помнить идентификатор платежа на вашей стороне (обычно прилагаемый к вашей сессии пользователя - корзину покупок или заказ или в виде файла cookie сеанса), прежде чем перенаправить пользователя на URL-адрес утверждения PayPal. После перенаправления обратно на ваш URL-адрес возврата вместе с PayerID - вам нужно будет извлечь PaymentID из сеанса пользователя и выполнить платеж.

Ответ 3

Идентификатор платежа можно получить в PHP, используя следующий метод после того, как первый запрос API вернул успешный ответ:

$payment->getId();

Пример онлайн-кода (http://paypal.github.io/PayPal-PHP-SDK/sample/doc/payments/CreatePaymentUsingPayPal.html) показывает, как отправить запрос, однако он не включает метод getId().

Чтобы узнать это, мне пришлось посмотреть загруженные файлы SDK в образце файла \payments\CreatePayment.php, который имеет следующий пример кода, показывающий использование этого метода:

ResultPrinter::printResult('Create Payment Using Credit Card', 'Payment', $payment->getId(), $request, $payment);

Ответ 5

  • paymentid:

После того, как вы создали платеж, в ответ json вы можете получить paymentid. например: "id": "PAY-01K00482KX842131HKORKVKY"

  • payerid:

вы можете использовать API: GET/v1/payments/payment/{paymentId}, чтобы получить идентификатор плательщика после того, как пользователь одобрил платеж, и вы найдете payerid в ответ json, например:

{
    "id":"PAY-01K00482KX842131HKORKVKY",
    "create_time":"2014-06-19T09:17:31Z",
    "update_time":"2014-06-19T09:17:31Z",
    "state":"created",
    "intent":"sale",
    "payer":{
            "payment_method":"paypal",
            "payer_info":{
                    "email":"[email protected]",
                    "first_name":"buyer",
                    "last_name":"samsung",
                    "payer_id":"H2DKRTTYWW8HS",
                    "shipping_address":{                                              "line1":"Lushan Road Num.188",                                              "line2":"JianYe",
                                              "city":"Tucson",
                                                   "state":"AZ",   
                                                   "postal_code":"85715", 
                                                   "country_code":"US",
                                                    "recipientName":"buyer samsung"}}},
    "transactions":[{
                           "amount":{
                                        "total":"12.00",
                                        "currency":"USD",
                                        "details"{"subtotal":"12.00"}},
                 "description":"creating a payment"}],
    "links":[
                   {"href":"xxxxxxx","rel":"self","method":"GET"},
              {"href":"xxxxxxx","rel":"approval_url","method":"REDIRECT"},
              {"href":"xxxxxxx","rel":"execute","method":"POST"}]}