如何防止重复的PayPal付款?

Pau*_*aul 5 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>
Run Code Online (Sandbox Code Playgroud)

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

Rob*_*ert 12

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


Pau*_*aul 8

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

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

避免重复付款: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. 如果您希望在传递"invoice"变量时使用此功能,请选择"是,阻止每个发票ID支付多笔付款"

  5. 滚动到底部,然后点击"保存"按钮

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

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

对于SOAP:InvoiceID

对于NVP:INVNUM

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