woocommerce - 单一 PayPal 结账流程中的经常性和非经常性项目
问题描述
我目前正在将一个网站从 WooCommerce 迁移到 Shopware 6,它需要支持会员订阅的定期付款。
WooCommerce 仍在使用 PayPal Standard,它允许您在单个结帐流程中将非经常性订单项与经常性订阅混合。
Shopware 6 使用 REST API,它似乎不支持此功能,唯一的解决方案似乎是使用 Javascript SDK:
- 用户单击使用 PayPal 支付。
- 订阅是通过创建的
actions.subscription.create
- 显示请求批准的对话框。
- 客户认可。
- 提交原始结帐。
- 重定向到贝宝。
- 完成支付。
- 重定向回网站并确认。
我现在正在研究的一个潜在解决方案是将初始订单创建的返回 URL 更改为重定向到计费协议批准 URL,并将该重定向的返回 URL 重定向回原始返回 URL。
我见过的过于复杂和更糟糕的用户体验。
在我撕掉我剩下的头发之前,有人有什么建议吗?
更新
虽然这不是我希望的解决方案,但我最终删除了 Shopware 6 PayPal 插件并使用 NVP API 实现了我自己的付款方式。
从用户的角度来看,只有一个审批流程。在后端,一旦用户批准了交易(已被标记为需要计费协议),交易就会得到验证,然后会创建一个循环配置文件。
解决方案
无法在一次结帐中结合订阅和一次性付款。如果使用 PayPal 按钮显示上下文体验,此类项目甚至需要 PayPal SDK 行上的不同参数。
上下文体验是最好的,因为它不涉及从您的网站重定向到 PayPal 并返回。以下是一次性付款的流程:
在您的服务器上创建两条路由,一条用于“创建订单”,一条用于“捕获订单”,记录在此处。这些路由应该只返回 JSON 数据(没有 HTML 或文本)。后者应该(成功时)在返回之前将付款详细信息存储在您的数据库中(特别purchase_units[0].payments.captures[0].id
是 PayPal 交易 ID)
将这两条路线与以下批准流程配对:https ://developer.paypal.com/demo/checkout/#/pattern/server
类似的(单独的)流程可用于PayPal 订阅。一次只能批准一个订阅。
推荐阅读
- ios - Firebase:iOS:Firebase读取后数组为空
- c# - 是否可以重新设计 C# 方法接口以摆脱 `new string[] {}` 以提高可读性?
- .htaccess - 为什么这个 RewriteEngine 规则不起作用?
- c++ - Boost 线程、Posix 线程和 STD 线程,为什么它们提供不同的性能?
- javascript - 排序时在jquery数据表分页中保留页码
- vue-chartjs - 关于 vue-chartjs 的一些问题
- python - 如何将数据发送到要执行的不同语言,然后将答案发送回原始语言?
- java - PostgreSQL 和 JDBC 使用`setArray` 设置整数数组抛出异常“无法将类型整数 [] 转换为整数”
- java - Spring boot中的枚举绑定异常处理
- mysql - 我的 SQL 语法有什么问题