Как правильно получить TransactionId с Paypal API после оплаты - PullRequest
0 голосов
/ 06 июля 2019

Я разрабатываю платежный портал на своем веб-сайте, я правильно размещаю кнопки и сохраняю paymentId и PayerId, полученные из ответа API в моей базе данных.Однако я не могу получить идентификатор транзакции, который мне нужен.

Так как я делаю это впервые, я не знал, что мне нужно было выполнить платеж с помощью услуги, отличной от API, чтобы получить идентификатор транзакции (https://api.paypal.com/v1/payments/payment/PAYID-XXXXXX/execute),, так что теперь яМне нужно сгенерировать CSV с информацией о платеже, и чтобы получить ее правильно, я пытаюсь вызвать службу для каждого платежа, который я храню в своей базе данных, и, наконец, представить транзакции. Я действительно не знаю, является ли это правильным подходом для решенияэта проблема, но это то, что я нашел на странице PayPal.

Сначала я попытался с curl:

curl -v -X POST https://api.paypal.com/v1/payments/payment/PAYID-XXXXXXX/execute \
-H "Content-Type: application/json" \
-H "Authorization: Bearer XXXXXXXXXXXX" \
-d '{
  "payer_id": "XXXXXXXXXXX"
}'

с правильной информацией (я сгенерировал свое разрешение на предъявителя, так что это не такпроблема), PAYID и payerID - те из моей базы данных, я считаю, что они правильные. Поэтому, когда я впервые понял это правильно, это было на самом деле успешно, а затем приступил к реализации в моем приложении реагирования с Axios, как это:

axios({
    method:'POST',
    url:"https://api.paypal.com/v1/payments/payment/" + list[index].pago.paymentId + "/execute",
    responseType:'json',
    headers: {
        "Content-Type" : "application/json",
        "Authorization" : "Bearer XXXXXXXXXXXXXXXXXXXXX"
    },
    data : {
        payer_id : list[index].pago.payerId
    }
}).then((response) => {
    console.log(response)
})

* обратите внимание, что «список» - это мой список платежей, и у меня есть вся информация в pago. Я уже проверил, что информация верна.

Но я получил следующую ошибку:

{
    "name":"INVALID_RESOURCE_ID",
    "message":"The requested resource ID was not found",
    "information_link":"https://developer.paypal.com/docs/api/payments/#errors",
    "debug_id":"5614cdf9e45ca"
}

Поэтому я подумал, что это может быть проблема, связанная с моей средой разработки, и продолжил попытки с Почтальоном, но я получаю эту ошибку:

{
    "name": "MALFORMED_REQUEST",
    "message": "The request JSON is not well formed.",
    "information_link": "https://developer.paypal.com/webapps/developer/docs/api/#MALFORMED_REQUEST",
    "debug_id": "62277ab8964fd"
}

но я думаю, что это потому, что я не мог сделать запрос правильно.Я поместил payerId в "body".

Так что после этого я снова попытался использовать curl, чтобы проверить, все ли в порядке с моим запросом ... Теперь я также получаю ту же ошибку, что и Axios.

У меня такое чувство, что я что-то напортачил после первого успеха, и теперь я не знаю, как заставить это работать снова.

Этот подход неправильный?Служба Execute должна использоваться только один раз?Есть ли какой-нибудь другой лучший подход?

Заранее спасибо!

1 Ответ

0 голосов
/ 06 июля 2019

После подтверждения оплаты вы должны немедленно позвонить в службу выполнения ровно 1 раз.Лучше всего использовать execute_url, возвращенный при создании платежа, а не формировать URL-адрес самостоятельно.

Ответ - это то, что вы используете для отображения сообщения об успехе или неудаче плательщику.В ответ будет включен объект продажи связанных ресурсов с идентификатором транзакции, который вы можете сохранить в своей базе данных для целей учета, поскольку это постоянный идентификатор.(PAYIDs предназначены только для утверждения и не сохраняются).

Если вам необходимо получить детали PAYID позднее, вы можете сделать это с помощью простого запроса GET (не POST): https://developer.paypal.com/docs/api/payments/v1/#payment_get - однако, предполагая, что вы сохраняете результаты первого вызова execute, для большинства интеграций в этом нет необходимости, и я бы рекомендовал пропустить это, если у вас нет очень веских причин для этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...