带有外部支付网关的电子商务库存管理

Posted

技术标签:

【中文标题】带有外部支付网关的电子商务库存管理【英文标题】:ecommerce stock management with external payment gateway 【发布时间】:2010-12-20 01:50:20 【问题描述】:

这个问题与this one 类似,但有一点不同(因此旧问题接受的答案在以下情况下无效)

我有一个售票网站 (php/mysql)。假设我只剩下一张票:

买家 A 将车票放入购物车并进入支付网关页面(即 paypal) 门票锁定5分钟,买家B无法购买 买家 A 等待 5 分钟,paypal 页面打开,什么都不做 票已解锁,因此买家 B 将其放入购物车并进入 paypal 页面 买家A在paypal上执行支付程序成功 买家B在paypal上支付成功

我可以等待更长时间,但我认为这不会解决更一般情况下的问题。此外,如果我这样做,将有可能进行某种 DoS,将商品长期锁定在库存中。

处理这种情况的最佳方法是什么?

【问题讨论】:

【参考方案1】:

所有支付网关都会进行回发,让您知道(例如)支付参考等。大多数还会回发授权/身份验证信息,例如 CSC/CVV2 检查结果,以便您(商家)拥有最终决定权是否接受付款。

收到回发后,您应该能够检查票证是否仍然“锁定”,如果没有,则通过支付网关发出付款撤销以取消付款。然后你需要显示一条消息'对不起,超时请重试'

如果网关不支持“即时反转”风格的功能,那么它们至少会支持某种“无效”功能,即资金永远不会从客户卡中实际取出,并且授权暂停会自动取消(通常两天后,虽然在某些卡上可能需要更长的时间)。对于超时的(希望很小)数量的事务,这可能是可以接受的。值得监控有多少事务超时,以便可以调整超时期限。

或者,如果票证不再被锁定,(同样,如果网关支持它)发回退款付款。

【讨论】:

afaik 回发发生在付款成功后,所以两个用户仍然会突然发现他们的 cc 上的钱变少了。如果我错了,请纠正我,但这相当于手动转到支付网关后端并检查“不接受此付款”(付款撤销通常需要几天时间,所以我想避免应付数千公关)。 不能代表每个网关,但我知道大多数英国网关允许您发回“撤销”消息以取消付款。这是一个即时逆转,通常不需要两天或更长时间才能下降。【参考方案2】:

您可能无法使用外部支付网关入口页面来做您想做的事情。

Paypal 和许多其他处理器具有直接的 Web 服务集成路径。这意味着您在您的页面上收集付款信息,将其提交到您的服务器,然后您进行 Web 服务调用并从处理器获得立即响应。 (我不记得 PayPal 对执行此操作的产品是什么称呼,但它曾经被命名为 PayFlow Pro,是从 Verisign 购买的。)

因此,当您将门票放入购物车时,您不会将其锁定。您的工作流程是:

    收集付款信息。 一旦付款信息回传到您的服务器: 一种。尝试锁定门票 - 如果不可用,则返回失败 湾。成功锁定后,处理授权 成功授权后,票证将从可用池中移除。 如果授权失败或出错,票证将被解锁并可供其他用户使用。

无需处理锁定超时。它们仅被锁定足够长的时间以验证有效付款。

您没有询问如何在防止 PCI 暴露的同时解决问题。因为你可能会问:

有一些处理器允许您将付款信息收集嵌入到您自己的页面中。有些允许您获取“令牌”来替换卡号,以便您的服务器永远不会收到卡号。然后可以在服务器端 Web 服务调用中使用该令牌。你得到你需要的,你不必处理接收卡号周围的 PCI 问题。

【讨论】:

【参考方案3】:

如果采用更社会化的解决方案而不是技术解决方案呢?为什么不明确表明,当您等待太久时,票证会被解锁?

【讨论】:

这不会解决问题,因为即使很明显,两个付款人最终都会为一件物品进行两次合法付款。 是的,你是对的,它不会阻止两个客户中的一个以所述方式购买机票。您也可以说第一位顾客等了很久。也许您可以在您的 Paypal 请求中包含您的 5 分钟规则...? 在这种情况下,问题变成:(所有)支付网关是否支持(可配置)超时?即使,这也只能解决前半部分 =) 好的,我检查了 Paypal 文档,找不到任何符合我建议的内容。另一种看待这种情况的方式可能是:这种情况多久发生一次? 经常出现在售票的高流量网站上(因为人们往往会急着买票)【参考方案4】:

我认为如果有人像在这 5 分钟内那样把它放在他的购物车里,你不应该阻止它。你最终可能会赶走其他几个客户......

我建议您允许所有人将门票添加到他/她的购物车中,除非有人实际付款并购买了它。现在,当其他人继续结帐时,只需闪烁一条消息“对不起,你迟到了......票已售罄!!!”并且票应该从他们的购物车中移除。

这样就不会阻止您的客户购买该票,并且仍然不会出现两个人为同一张票付款的情况。

【讨论】:

只有完成支付才知道支付是否成功。如果两个用户都已经在付款(即贝宝)页面上,您无法控制:他们都会(在贝宝上)支付最新票。

以上是关于带有外部支付网关的电子商务库存管理的主要内容,如果未能解决你的问题,请参考以下文章

管理支付与订单

管理支付与订单

添加一个复选框作为禁用支付网关的 WooCommerce 管理产品选项

电子商务网络服务和支付网关之间的通信

WooCommerce 支付网关与 PayPal 等外部页面的集成

B2B商城电子商务平台网上商城系统支付通道申请第三方支付接口对接搭建 支付宝微信扫码网关网银银联快捷支付