【问题标题】:Model cart locking with Paypal使用 Paypal 锁定模型车
【发布时间】:2011-03-27 21:02:57
【问题描述】:

我目前正在 Zend 框架应用程序中实现 Paypal Express Checkout,我编写了自己的购物车模型,它由两个简单的类 Cart 和 CartItem 组成,它们能够设置数量、获取总价等。

我对支付系统不太了解,而且我只使用 Paypal(这是我的第一次),但我虽然无法控制那里发生的事情(在 Paypal),所以“在流程开始时锁定”购物车(重定向到贝宝时),以避免贝宝处理的当前订单与网站上的实际购物车不一致。

例如,如果用户在使用 paypal 进行付款时打开一个新标签并尝试添加产品,就会发生这种情况。

如果您的购物车被锁定,则用户无法在其购物车中添加或删除任何东西,直到他完成通过 paypal 处理付款或取消其订单。

我的问题是你认为这是一个好方法吗?

编辑:我没有在数据库中存储任何东西但只有会话中的购物车的原因是所有订单都使用Paypal存储,所以我不想存储两次,它是一个非常简单的系统。

【问题讨论】:

  • 我总是将购物车作为订单添加到数据库中,然后再将其发送到任何支付网关,然后清空他们的购物篮。然后他们添加到购物车中的任何其他内容都将成为新订单。如果支付成功,那么我只需在订单记录上更改一个标志。

标签: php zend-framework paypal shopping-cart payment-processing


【解决方案1】:

我以不同的方式做到了。

当用户浏览网站时,购物车会使用会话、cookie 或其他方式存储。

一旦他点击“支付”按钮,购物车的内容就会转到具有唯一 ID 的 orders 数据表。 您删除会话或 cookie 以防止他向订单添加新内容。 您使用唯一 ID 将其提供给贝宝。付款完成后,Paypal 会返回给您 IPN,并将唯一 ID 返还给您。从那里你知道它是付费的,并且可以在你的 orders 表中放置一个布尔值或其他东西。

有时用户不会付款,而您会收到一些从未付款的订单。您应该有一个 cron 来检查超过一天的订单并将其从表中删除。

【讨论】:

    【解决方案2】:

    我认为你的方法很好。但请确保您告知用户为什么他们不能将商品添加到购物车,并提供一个简单的选项来解锁购物车。

    用例:

    • 装满购物车
    • 开始付款
    • 啊,我忘了袜子了
    • 关闭支付标签
    • 商店在其他标签页中打开
    • 添加袜子
    • “无法添加,已锁定”
    • 我无法返回付款以取消它,也无法将任何东西添加到购物车 => 我离开了

    【讨论】:

    • 你说的对
    猜你喜欢
    • 2013-03-05
    • 2014-03-13
    • 1970-01-01
    • 1970-01-01
    • 2016-07-24
    • 1970-01-01
    • 1970-01-01
    • 2011-08-31
    • 2014-05-13
    相关资源
    最近更新 更多