0

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

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

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

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

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

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

4

2 回答 2

1

我以不同的方式完成了它。

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

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

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

于 2011-03-27T21:23:40.707 回答
0

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

用例:

  • 装满购物车
  • 开始付款
  • 啊,我忘了袜子
  • 关闭付款选项卡
  • 在其他选项卡中打开的商店
  • 添加袜子
  • “无法添加,已锁定”
  • 我无法返回付款以取消它,也无法将任何东西添加到购物车 => 我离开了
于 2011-03-28T08:26:16.300 回答