我已将客户端结帐实施为演示' d https://developer.paypal.com/demo/checkout/#/pattern/client。它在使用沙箱帐户进行测试时工作正常。但我担心我们如何验证付款是否实际从服务器端传出? 例如:如果用户执行了订单编号' X'的付款,我想确保付款成功。我注意到我理解的交易ID仅在付款已经完成时才由PayPal生成,我们可以在参数中收到该ID以进行付款执行回调:
actions.payment.execute().then(function (payment) { // where payment.transactions[0].related_resources[0].sale.id is some value say 'xxx' });
在沙箱交易详情页面(https://www.sandbox.paypal.com/webscr?cmd=_history-details-from-hub&id=xxx)中可以看到相同的唯一ID作为唯一交易IDxxx。是否有办法(paypal端点)通过服务器端呼叫验证这一点?这就是在服务器上收到的交易ID是来自paypal的有效交易ID。
请原谅我的无知,webhook事件是否意味着这样做?
答案 0 :(得分:0)
您可以使用IPN / Webhooks,然后PayPal会通过交易ID,付款详细信息向您发送通知。您可以使用该信息来验证付款。
答案 1 :(得分:0)
首先,我们需要一个来自贝宝的oAuth令牌。为此,我们需要对https://api.sandbox.paypal.com/v1/oauth2/token(沙盒网址)进行POST,以传递我们的PayPal应用的客户端ID和密码。 我在C#中使用的HttpClient对象的详细信息:
响应将具有属性access_token,该属性具有我们要在下一个请求中传递以获取交易状态的访问令牌。有关获取访问令牌的更多详细信息,请参考:https://developer.paypal.com/docs/api/overview/#get-an-access-token。
现在要发出销售/交易详细信息请求,如下所示:https://developer.paypal.com/docs/api/payments/v1/#sale_get。
进行GET,将访问令牌作为承载令牌传递到Authorization标头中。
并将唯一交易ID作为销售ID的参数。响应将具有属性“状态”。值为“ COMPLETED”可确保交易成功进行。