当且仅当**PayPal's JavaScript SDK中的onApprove回调被触发时,是否可以安全地调用PHP脚本来更新服务器端信息(数据库条目或文件)?如果这是不可能的,我将如何重构网络应用程序更新服务器端信息时,只有付款被批准?
onApprove
3pmvbmvn1#
JS SDK的actions.order.create()和actions.order.capture()函数用于非常简单的用例,而不是您想要做的。您应该改为服务器端创建和捕获集成。使用v2/checkout/orders API并创建两个路径(url路径),一个用于“创建订单”,一个用于“捕获订单”。您可以使用(最近弃用)Checkout-PHP-SDK用于路径对PayPal的API调用,或者您自己的HTTPS实现,首先获取访问令牌,然后执行调用。您的两个路由都应该返回/输出onlyJSON数据(无HTML或文本)。在第二种途径中,当捕获API成功时,您应验证金额是否正确,并将生成的付款详细信息存储在数据库中(特别是purchase_units[0].payments.captures[0].id,即PayPal交易ID)并执行任何必要的业务逻辑(例如预订产品或发送电子邮件),在将返回JSON转发给前端调用者之前立即转发。如果发生错误,也转发其JSON详细信息,因为前端必须处理这样的情况。将这两个路由与此前端审批流配对:https://developer.paypal.com/demo/checkout/#/pattern/server。(如果需要从客户机向服务器发送任何其他数据,例如items数组或选定的选项,请向fetch添加一个body参数,其值为JSON字符串或对象)
purchase_units[0].payments.captures[0].id
body
1条答案
按热度按时间3pmvbmvn1#
JS SDK的actions.order.create()和actions.order.capture()函数用于非常简单的用例,而不是您想要做的。您应该改为服务器端创建和捕获集成。
使用v2/checkout/orders API并创建两个路径(url路径),一个用于“创建订单”,一个用于“捕获订单”。您可以使用(最近弃用)Checkout-PHP-SDK用于路径对PayPal的API调用,或者您自己的HTTPS实现,首先获取访问令牌,然后执行调用。您的两个路由都应该返回/输出onlyJSON数据(无HTML或文本)。在第二种途径中,当捕获API成功时,您应验证金额是否正确,并将生成的付款详细信息存储在数据库中(特别是
purchase_units[0].payments.captures[0].id
,即PayPal交易ID)并执行任何必要的业务逻辑(例如预订产品或发送电子邮件),在将返回JSON转发给前端调用者之前立即转发。如果发生错误,也转发其JSON详细信息,因为前端必须处理这样的情况。将这两个路由与此前端审批流配对:https://developer.paypal.com/demo/checkout/#/pattern/server。(如果需要从客户机向服务器发送任何其他数据,例如items数组或选定的选项,请向fetch添加一个
body
参数,其值为JSON字符串或对象)