集成单个 PayPal 订阅的最佳实践?

Posted

技术标签:

【中文标题】集成单个 PayPal 订阅的最佳实践?【英文标题】:Best practice for integrating a single PayPal subscription? 【发布时间】:2015-03-11 12:32:14 【问题描述】:

我是 PayPal 的新手,对与 PayPal 集成的所有可能方法感到不知所措。 首先,我想实施一个每月定期付款的单一订阅。当用户完成付款后返回网站时,他/她将立即升级为“高级”会员(仅限数字产品 - 不涉及运费)。

我研究过的第一个替代方案是Express Checkout API,看起来不错,但是有没有更简单的方法呢?

我能否例如创建一个标准按钮(JS 按钮或基于表单),但仍然能够在用户返回时使用 REST API、IPN 或其他方式验证付款详情?

任何关于最佳实践的提示都表示赞赏。

【问题讨论】:

【参考方案1】:

是的,现在解决这个问题的方法太多了。

您可能可以通过按钮(又名标准)、快速结账(又名专业)样式 API 或 RESTful API 来满足您的要求,但有一些问题需要了解:

首先,PayPal 有几种产品可以进行定期付款;这些产品具有功能差异,并与不同的集成样式相关联。因此(例如)PayPal 的产品称为“订阅”(与网站标准又名按钮相关)与“定期付款”(与快速结帐相关)具有不同(并且通常不太灵活)的功能,后者又不同于“计费协议”(与到 REST API,尽管术语“计费协议”也用于快速结帐定期付款产品)。哦,还有另一个与自适应支付 API 套件相关的类似产品。

困惑了吗?对不起。但重要的是在进行任何集成之前确定您要使用的特定产品是否首先满足您的要求,否则您可能会在以后重新进行集成工作(并且可能必须迁移客户,如果您已经开展业务) 以便稍后访问其他产品的特定功能。例如,订阅产品对卖家在设置订阅后修改订阅的能力非常有限。如果没问题,那就太好了,使用它——集成起来很简单。如果我可以稍微简化一下:标准订阅产品是最古老且最有限的; Pro 定期付款更加灵活和成熟; REST 计费协议产品是最新的,非常灵活,但还没有被广泛使用;它可能缺少您今天需要的功能,但最有可能在未来不断改进。我个人不会推荐 Adaptive 产品,尽管它也有好处。

现在,关于您的集成问题:幸运的是,所有这些 PayPal 产品都可以使用 IPN。不幸的是,IPN 不是即时的。他们通常会很快到达(1-2 秒),但可能会发生延迟,而且无法处理客户非常尴尬。我只会在运送实物商品时使用 IPN,而不是用于立即访问数字商品或客户正在等待您的页面的其他情况。幸运的是,其他每种方法都可以立即确定 PayPal 操作是否成功,而无需等待 IPN:

网站标准付款将在将用户发布回您的网站时包含 GET 或 POST 变量,这将告诉您结果。如果您使用支付数据传输功能,这些变量将包含签名信息,以便您可以将它们返回发送到 PayPal,并且 PayPal 将验证它们的有效性(这样一个潜在的小偷就无法通过设计一个看起来像 PayPal 成功重定向的帖子)。

这两种基于 API 的方法更加简单:API 本身会在 API 响应中返回您需要的所有信息。因此,无论您在代码中的哪个位置调用创建订阅/协议,如果您重新获得成功,那么请努力让您的用户成为优质用户。

有用户成功支付然后“迷路”的奇怪情况,例如,重定向失败/浏览器在返回您的站点之前关闭,或者您的站点在尝试打开用户时阻塞。出于这个原因,许多人建议使用 IPN,PayPal 将尝试重新交付,直到您将它们验证回 PayPal。不错的主意,视情况而定。

当然,您可以调用搜索和获取详细信息类型的 API 来获取有关您在 PayPal 的交易和协议的信息——尽管同样,您需要集成与您集成的产品相匹配的正确 API(例如标准如果您向 REST 接口询问计费协议,则不会显示基于 - 的订阅)。

希望这会有所帮助。

【讨论】:

Geewiz,感谢您的详细回答。我目前正在构建一个电子商务平台单页应用程序,我想知道如果我使用 paypal js 客户端进行付款并在成功回调时通过 wordpress rest API 为登录用户注册订单,它是否足够“安全” ?我是否必须在 WC 后端再次验证此购买,或者您有任何其他建议如何在此处进行? 抱歉,我已经过时多年了,根本不知道 wordpress rest API。我想我帮不了你。祝你好运!

以上是关于集成单个 PayPal 订阅的最佳实践?的主要内容,如果未能解决你的问题,请参考以下文章

持续集成CI&CD之配置管理最佳实践

Git + Docker + Bamboo + SaltStack 持续集成最佳实践

使用 Paypal REST SDK 最佳实践进行单元/模拟测试

angular中订阅方法的最佳实践是啥?

@Annotation最佳实践

OSS最佳实践WEB站点中如何应用OSS产品