处理PayPal付款导致付款人未批准付款错误

问题描述 投票:0回答:1

我已经实施了此处描述的 PayPal 付款 https://developer.paypal.com/docs/api/quickstart/ payments/ 提供使用 API /v1/ payments 的 Java SDK

<dependency>
        <groupId>com.paypal.sdk</groupId>
        <artifactId>rest-api-sdk</artifactId>
        <version>1.14.0</version>
</dependency>

第1步:按照上面链接中的描述创建付款,它将在PayPal创建付款,我们得到了approval_url,该url共享给客户以完成付款。

Step2:只有一个事件有一个 webhook 监听器

Step3:当我的应用程序从 PayPal 收到该事件时,它会按照上面的链接中所述执行付款

这适用于大多数付款情况,但很少有付款,在付款执行过程中会发生以下错误。

{"name":"PAYMENT_NOT_APPROVED_FOR_EXECUTION","message":"Payer has not approved payment","information_link":"https://developer.paypal.com/docs/api/payments/#errors","debug_id":"8c19669326adc"}

现在,导致成功执行的付款与其他导致失败并显示“付款人尚未批准付款”消息的付款之间的区别并不明确。应该怎么做才能解决这里的问题?

paypal paypal-rest-sdk
1个回答
1
投票

当创建旧的已弃用 API v1/付款(或使用当前 API、v2/结帐/订单)时,它处于未批准状态。为了使其可执行(或使用 v2,可捕获),付款人必须登录结帐并批准它。

如果没有人登录并批准付款,则该付款将保持未批准状态。

当您尝试“执行”未经付款人批准的付款(或使用当前的 v2/checkout/orders API“捕获”订单)时,您将收到一条错误消息,指出付款尚未通过已批准。

您只能执行已批准的付款(或捕获订单)。


为了获得最佳结果,请使用当前的 v2/checkout API 和上下文审批流程。在您的服务器上创建两条路线,一条用于“创建订单”,一条用于“捕获订单”,记录在此处。这些路由应仅返回 JSON 数据(无 HTML 或文本)。捕获响应成功后,将其生成的付款详细信息存储在您的数据库中(特别是

purchase_units[0].payments.captures[0].id
,PayPal 交易 ID),并在发送返回 JSON 之前执行任何必要的业务逻辑(例如发送确认电子邮件或预订产品)。

将这两条路线与以下审批流程配对:https://developer.paypal.com/demo/checkout/#/pattern/server

© www.soinside.com 2019 - 2024. All rights reserved.