4

万事如意,

的背景:

我已经建立了一个定制商店,它有一个 PayPal 付款选项。通常,PayPal 选项的工作方式如下:

  1. 用户将商品添加到购物车(假设它们有库存)
  2. 用户选择发货目的地
  3. 用户单击“立即结帐”样式按钮
  4. 用户登录或输入运输/账单详细信息
  5. 向用户显示付款页面以输入卡详细信息或单击“使用 PayPal 付款”按钮

“Pay with PayPal”按钮是我想要调整的。目前,我有一个 php 函数,它从用户购物车中获取所有项目并将其转换为 PayPal 表单,然后将其回显到页面上。此表格包含所有 PayPal 信息,包括物品、数量、尺寸、运费、业务详细信息、退货/取消/IPN url 等。

问题:

如果用户在某一天填充他们的购物车并通过结帐程序到达付款页面,则 PayPal 表单会在那里新生成(包括项目价格和数量,目前还可以)

他们离开电脑时没有点击“使用 PayPal 支付”按钮,可能需要几天时间考虑一下。与此同时,他们购物车中商品的价格/库存会发生变化。

即使我将未完成的购物车设置为在 24 小时后删除,用户已经加载了 PayPal 表单,因此即使几个月后仍可以使用旧的库存水平和价格点击“使用 PayPal 付款”!

解决方案:

我在这里看到了几个选项,并对每个选项的建议持开放态度(或者确实是更好的解决方案!)

  1. 使用可怕的“刷新”元标记设置付款和购物车页面,以确保它们每天更新,并让 php 在页面加载之前检查库存/价格。这样,如果股票或价格发生变化,将向用户呈现最新价格。(这不是我的首选)

  2. 不要在支付页面上生成 PayPal 表单,而是让“使用 PayPal 支付”按钮将用户引导到另一个 php 页面(比如“process_paypal.php”),该页面会执行所有必需的检查,如果有任何问题,可以发送一条消息发送给用户。(到目前为止,一切都很好)。然后(这是我正在努力的部分),如果一切正常,生成表单自动提交,将用户重定向到 PayPal 网站进行登录。(我知道这可以很容易地使用 jQuery 或Javascript,但如果可能的话,如果存在这样的东西,我更喜欢 PHP 解决方案?我对 cURL 不是很熟悉,所以不知道它是否用于)

  3. 你告诉我?!:)

感谢您对此提供的任何帮助。

本·艾弗里

4

1 回答 1

1

就个人而言,在这种情况下,如果购物车不存在,我会使用 paypal 回调 url 拒绝购买。

如果购物车存在于您的系统中,您要做的只是成功响应他们的 IPN 呼叫。否则以失败响应。

我相信 PayPal 中有一个设置可以拒绝没有成功响应的付款。

编辑:只是查看了代码(自从我这样做以来已经有一段时间了)。我们最终做的是使用基于 IPN 调用的 PayPal API 触发退款。在我看来,这样做是完全可以接受的,因为对客户不收取任何费用。

于 2012-06-01T10:06:30.690 回答