如何防止PayPal重复付款?

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>

目前情况下,客户不太可能支付两次,但我注意到当沙盒出现故障时,我成功地支付了同一笔交易两次。这是我绝对想要避免的事情。这不仅为了客户,他们可以获得退款,而且也因为我不想让我的数据库混乱,我想避免进行大量编码来捕捉重复付款...

2个回答

12

您需要在“发票”参数中添加一个唯一标识符; <input type="hidden" name="invoice" value="您的唯一发票ID"> 并在 www.paypal.com 上的“个人资料”>“我的销售工具”部分启用“阻止重复付款”功能。


8

感谢Robert!(上面的帖子)

我实际上已经走得很远了,我要问PayPal商家技术支持有关此事的问题,就在提交我的问题之前,在那里找到了一个页面的答案 -

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

不确定是否必须登录才能看到上述页面,因此我在此引用页面以方便:

您可以通过向PayPal系统传递发票号码来避免重复交易。此功能适用于网站支付标准和网站支付Pro(SOAP和NVP)。只要您配置了您的配置文件以阻止重复发票编号,PayPal系统就会检查您传递的发票编号是否已在您的帐户中付款。

示例:发票001已付款,因此如果第二次将001传递给PayPal帐户,它将被拒绝。

要在您的配置文件中阻止此操作:

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

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

  2. 单击“配置文件”子选项卡

  3. 在“销售首选项”下单击“支付接收首选项”

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

  5. 向下滚动并单击“保存”按钮

要为网站支付标准传递发票号码,您需要向现有按钮代码添加一行代码。您无法将此代码添加到最初创建为加密的按钮中。以下是示例:

对于网站支付Pro,您传递的参数取决于您正在进行的API调用类型。

对于SOAP:InvoiceID

对于NVP:INVNUM

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接