我注意到只要有firebug就可以在发送“PAY NOW”按钮的支付请求之前更改paypal表单数据。
所以我想知道,是否有一种“标准”支付表单可以被新手“编辑”:/?
我们可以做些什么来防止这种情况发生?
amount
,您也应该在交易完成后运行检查。仅进行事务后检查(例如使用IPN)。
这是最简单的方法。从代码角度来看,您的PayPal集成会显得有些杂乱无章,并且您仍将收到所有那些 $0.01 的欺诈交易。
在按钮生成器中选择“使用 PayPal 托管按钮”选项,并使用 PayPal 的BMUpdateButton API 动态更改按钮的金额。
BMUpdateButton 的示例请求如下:
USER=您的 API 用户名
PWD=您的 API 密码
SIGNATURE=您的 API 签名
METHOD=BMUpdateButton
VERSION=82.0
HOSTEDUBTTONID=所需值
BUTTONTYPE=按钮类型。例如 BUYNOW
BUTTONCODE=要返回的代码类型。例如 HOSTED
L_BUTTONVAR0=amount=新金额,小数点作为分隔符
L_BUTTONVAR1=item_name=可选:如果需要,可以输入新的商品名称
同时使用 BMCreateButton 和 BMUpdateButton API 来创建和更新您的 PayPal 按钮。
您还可以使用 BMCreateButton API 创建新按钮,或使用BMButtonSearch API 搜索存储的所有托管按钮的列表(例如自动查找您的按钮的 hosted_button_id)。
使用 PayPal 快捷结账代替
这可能是最难实现的,因为单个交易需要 2-3 个 API 调用,但它也是最灵活的。与网站付款标准版(“按钮”)在买家点击“现在支付”后立即完成交易不同,快捷结账允许买家在 PayPal 网站上“同意”交易,并且您可以在买家最初同意付款后的任何时间 0 - 3 小时内通过调用 DoExpressCheckoutPayment
API 调用来最终确定交易。
有关集成快捷结账的快速概述,请参见我的答案:使用 PayPal 结账我的订单购物篮
这并不是一个巨大的安全风险,因为您应该检查实际支付的内容!任何人都可以向任何地方发布数据。这与您的表单或甚至Firebug无关。
您可以将该按钮信息存储在PayPal的服务器上,但那样就不能动态生成了。当您使用他们的向导创建按钮代码时,有一个选项可以实现此功能。