5

我有一个简单的“立即付款”按钮,这是通过按钮制造商创建的代码,并添加了一个“自定义”隐藏字段来识别它。我想知道是否可以添加一些额外的隐藏字段来告诉 PayPal“此交易不应进行两次”。

<form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post">

    <input type="hidden" name="cmd" value="_s-xclick">
    <input type="hidden" name="custom" value="{MYUNIQUEID}">
    <input type="hidden" name="hosted_button_id" value="{MYHOSTEDBUTTONID}">
    <input type="image" src="https://www.sandbox.paypal.com/en_US/i/btn/btn_paynowCC_LG.gif" 
    border="0" name="submit" alt="PayPal - The safer, easier way to pay online!">
    <img alt="" border="0" src="https://www.sandbox.paypal.com/en_US/i/scr/pixel.gif" width="1" height="1">

</form>

因为现在客户不太可能支付两次,但我注意到当沙盒出现故障时,我成功地两次支付了同一笔交易。我绝对想避免的事情。不仅对于客户,这可以得到退款,当然,而且因为我不希望我的数据库搞砸了,我想避免大量编码来捕获重复付款......

4

2 回答 2

12

您可能希望为“invoice”参数添加一个唯一标识符;<input type="hidden" name="invoice" value="your unique invoice ID">并在您的帐户 www.paypal.com 的“个人资料”>“我的销售工具”部分中启用“阻止重复付款”

于 2012-08-01T16:39:52.510 回答
8

谢谢罗伯特!(以上帖子)

实际上,我已经走了这么远,以至于我打算向 PayPal 商家技术支持咨询,就在提交我的问题之前,我发现了一个带有答案的页面 -

避免重复付款: https ://ppmts.custhelp.com/app/answers/detail/a_id/165

不确定您是否必须登录才能看到上面的页面,所以为了方便起见,我在此处引用该页面:

您可以通过将发票编号传递给 PayPal 系统来避免重复交易。此功能适用于网站支付标准和网站支付专业版(SOAP 和 NVP)。只要您已将个人资料配置为阻止重复的发票编号,PayPal 系统就会检查以确保您传递的发票编号尚未在您的帐户中支付。

示例:发票 001 已支付,因此如果 001 再次传递到 PayPal 帐户,它将被拒绝。

要在您的个人资料中阻止此操作:

阻止意外付款:您可以通过阻止重复的发票 ID 来防止意外付款

  1. 登录https://www.paypal.com

  2. 单击“个人资料”子选项卡

  3. 在“销售偏好”下点击“收款偏好”

  4. 如果您希望在传递“发票”变量时使用此功能,请选择“是,阻止每个发票 ID 多次付款”

  5. 滚动到底部并单击“保存”按钮

要传递网站付款标准的发票编号,您需要在现有按钮代码中添加一行代码。您不能将此代码添加到最初创建为加密的按钮。下面的例子:

对于 Website Payments Pro,您传递的参数取决于您进行的 API 调用的类型。

对于 SOAP:InvoiceID

对于 NVP:INVNUM

使用 Pro 时,如果检测到重复的发票编号,将返回错误 10412。有关 API 错误代码的完整列表以及有关 10412 错误的详细信息,请单击此处

于 2012-08-01T22:07:55.927 回答