2012-08-01 314 views
5

我有一个简单的Pay Now按钮,通过按钮制造商创建的代码,添加了一个“自定义”隐藏字段来标识它。 我不知道是否有一些额外的隐藏领域,我可以添加到告诉PayPal“这个交易不应该做两次”。如何防止重复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> 

因为它是现在这是不可能的,客户应能够支付两次,但我注意到,当沙盒有一个小故障我成功地两次支付同样的交易。我绝对想避免的事情。不仅仅是为了客户,这可以得到退款,当然,但也因为我不希望我的数据库搞砸了,我想避免广泛的编码来捕获重复付款...

回答

12

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

8

感谢罗伯特! (以上职务)

其实我去到目前为止,我要问的PayPal商家的技术支持这件事,只是提交我的问题之前,有发现了一个页面的答案 -

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

不知道,如果你要登录查看网页上面,所以我在这里引用的页面为方便:

你可以通过发票号避免重复交易贝宝系统。此功能可用于网站付款 标准版和网站付款专业版(SOAP和NVP)。只要您已将 配置为阻止重复的发票号码,PayPal系统 将检查以确保您通过的发票号码尚未在您的帐户中支付 。

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

在您的资料封锁这个:

座意外付款:您可以防止意外付款的 阻止重复发票编号

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

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

  3. 在'Selling Preferences'下点击'P ayment接收首选项

  4. 选择‘是的,每张发票ID’,如果你想利用此功能,同时通过了‘发票’变量

  5. 滚动至底部,并点击‘保存’按钮块多支付

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

对于网站付款专业,你传递参数取决于类型的API调用 你在做。

对于SOAP:InvoiceID

对于NVP:INVNUM

在使用Pro,如果检测到错误 10412将返回一个重复的发票号。有关API错误代码的完整列表, 和有关10412错误的详细信息Click Here

+1

非常详细,谢谢Paul。 :-) – 2013-07-26 01:29:52