我对 PayPal 的 Cordova 插件感到有点困惑,因为这对于实现与 Magento 实例交互的安全工作流意味着什么。
通常,Express Checkout 工作流程如下所示:
- 客户访问 Magento 网站结帐
- 客户被引导至 PayPal
- 客户返回 Magento 网站
- 客户在 Magento 网站上点击“下订单”
- Magento 网站将报价转换为订单
- Magento 网站访问 PayPal 以捕获/确认资金、检查可能的欺诈等...
Cordova 插件强加的工作流看起来是这样的:
- 客户访问应用结账
- 客户被引导至 PayPal
- 根据配置授权或捕获付款
- 客户被引导回应用
- 应用程序执行成功处理程序
在上面的 Cordova 插件工作流程中,请注意缺少报价到订单转换的步骤。从我的角度来看,我看到两个选项:
插入报价 -> 2 和 3 之间的订单转换调用
注意事项:
- 客户可能没有完成结帐,现在订单在系统中永久孤立
- 客户可能希望更改某些内容(现在不可能发生——无法修改订单)
插入报价 -> 5 后订单转换调用
注意事项:
- 客户端被信任通知服务器已付款(这需要使用 PayPal 进行服务器端交叉检查/额外的复杂性)
- 客户端可能永远不会真正发送通知。
我不喜欢上面提供的任何选项。任何人都可以帮助消除我的困惑或告诉我我希望我错过了什么吗?
最佳答案
我发现我可以向 Cordova 应用程序提供一个占位符发票编号以传递给 PayPal。
然后 PayPal 可以通过 IPN 将此发票号连同相关交易详细信息发送到 Magento 服务器。这将客户排除在外并满足我的需求。
所以真正的工作流程如下:
- 客户点击“PayPal 按钮”
- 向 Magento 服务器发送创建订单和占位符发票的请求
- Magento 服务器向客户端提供占位符发票编号
- 订单现在在 Magento 中处于“待付款”状态
- 客户继续使用 PayPal 进行付款
- 如果客户端支付成功,则向Magento Server发送一个IPN,客户端返回App支付成功页面
- 如果客户未能付款且未能返回到应用程序,订单将保持为“待付款”状态,每隔一段时间就会被 crontask 取消
- 如果客户支付失败并成功返回应用程序,应用程序将联系Magento服务器并立即取消订单
我对该产品缺乏文档/支持感到非常失望。
关于php - 工作流困惑 : PayPal Cordova Plugin/Magento,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37147923/