如何防止重复的PayPal付款?

时间:2012-08-01 14:54:17

标签: paypal paypal-sandbox

我有一个简单的立即付款按钮,通过按钮制作者创建的代码,添加了“自定义”隐藏字段以识别它。 我想知道是否有一些额外的隐藏字段我可以添加告诉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>

现在,客户不太可能支付两次,但我注意到当Sandbox出现故障时,我成功地支付了两次相同的交易。我绝对想避免的东西。不仅仅是为了客户,可以获得退款,当然,还因为我不希望我的数据库搞砸了,我希望避免大量编码以捕获重复付款......

2 个答案:

答案 0 :(得分:12)

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

答案 1 :(得分:8)

谢谢罗伯特! (上面的帖子)

我实际上走得太远,以至于我打算向PayPal商家技术支持部门询问,并在提交问题之前找到了一个带答案的页面 -

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

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

  

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

     

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

     

要在个人资料中屏蔽此内容:

     

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

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

  2.   
  3. 点击“个人资料”子标签

  4.   
  5. 在“销售偏好设置”下,点击“付款接收偏好设置”

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

  8.   
  9. 滚动到底部,然后点击“保存”按钮

  10.         

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

         

         

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

         

    对于SOAP:InvoiceID

         

    对于NVP:INVNUM

         

    使用Pro时,如果检测到重复的发票号,则表示错误   10412将被退回。有关API错误代码的完整列表,   有关10412错误Click Here

    的详细信息