我已经实施了此处描述的 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共享给客户以完成付款。
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"}
现在,导致成功执行的付款与其他导致失败并显示“付款人尚未批准付款”消息的付款之间的区别并不明确。应该怎么做才能解决这里的问题?
当创建旧的已弃用 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