<分区>
我在我的电子商务应用程序上使用标准的 php paypal 表单进行支付。
我注意到只有 firebug 的人可以在通过“立即付款”按钮发送付款请求之前更改 paypal 表单数据。
所以我想知道,新手可以“编辑”付款表格是否是“标准”:/?
我们可以做些什么来防止这种情况发生?
<分区>
我在我的电子商务应用程序上使用标准的 php paypal 表单进行支付。
我注意到只有 firebug 的人可以在通过“立即付款”按钮发送付款请求之前更改 paypal 表单数据。
所以我想知道,新手可以“编辑”付款表格是否是“标准”:/?
我们可以做些什么来防止这种情况发生?
最佳答案
我不同意;我确实认为这是你应该首先防止的事情。买家应支付的金额不应通过互联网公开发送。我们可以逃脱惩罚的时代早已过去。
此外,支票不会阻止交易以不同的金额进行。它只会防止任何交易后的戏剧性事件。
是的,您绝对应该在交易完成后运行检查,但即使有人在理论上无法操纵 amount
也应该发生这种情况。
有多种选择,您可以根据自己的需求选择最适合自己的,
什么也不做,只执行交易后检查(例如使用 IPN )。
最简单的。从代码的角度来看,您的 PayPal 集成看起来很破旧,但您仍然会收到所有那些 0.01 美元的欺诈性交易。
在按钮生成器中勾选“使用 PayPal 托管按钮”选项,并使用 PayPal 的 BMUpdateButton动态改变按钮数量的 API。
BMUpdateButton 的示例请求如下所示:
USER=您的 API 用户名
PWD=你的API密码
SIGNATURE=您的 API 签名
METHOD=BMUpdateButton
版本=82.0
HOSTEDUBTTONID=
的值
BUTTONTYPE=按钮的类型。例如。立即购买
BUTTONCODE=您要取回的代码类型。例如。托管
L_BUTTONVAR0=金额=以句点为分隔符的新金额
L_BUTTONVAR1=item_name=可选:一个新的项目名称,如果你愿意的话
同时使用 BMCreateButton 和 BMUpdateButton API 通过 PayPal 创建和更新您的按钮。
您还可以使用 BMCreateButton API 创建新按钮,或使用 BMButtonSearch用于搜索所有存储的托管按钮列表的 API(例如,自动查找按钮的 hosted_button_id)。
改用 PayPal Express Checkout
它可能是“最难”实现的,因为它包含针对单个事务的 2-3 个 API 调用,但它也是最灵活的。如果使用网站支付标准(“按钮”),一旦买家点击“立即付款”,交易就会完成,Express Checkout 让买家“同意”PayPal 网站上的交易,您可以随时完成交易买家最初通过调用 DoExpressCheckoutPayment
API 调用同意付款后的 0 - 3 小时。
有关集成 Express Checkout 的简要说明,请参阅我在 Checkout my order basket with PayPal 上的回答。
关于PHP - Paypal API 表单和安全性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8123882/