PayPal:托管按钮付款失败,错误代码= AMOUNT_ERROR。

3
多年来,我一直使用Paypal按钮,并使用IPN处理付款。但是最近几天,其中一些按钮停止工作了,产生了错误,如下图所示: (截图)。 这些按钮是使用Paypal在线工具创建的,它们的HTML代码引用了一些Paypal UR3ZPGJAT7M数据,在Paypal网站上进行编辑(并且应该是正确的?)(注:UR3ZPGJAT7M是一个已编辑的值)。
<form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_top">
<input type="hidden" name="cmd" value="_s-xclick">
<input type="hidden" name="hosted_button_id" value="UR3ZPGJAT7M">
<table>
<tr><td><input type="hidden" name="on0" value="Expédition">Expédition</td></tr><tr><td><select name="os0">
    <option value="Expédition en France">Expédition en France €25,00 EUR</option>
    <option value="Expédition en Europe">Expédition en Europe €27,00 EUR</option>
    <option value="Reste du Monde">Reste du Monde €30,00 EUR</option>
</select> </td></tr>
</table>
<input type="hidden" name="currency_code" value="EUR">
<input type="image" src="https://www.paypalobjects.com/fr_FR/FR/i/btn/btn_buynowCC_LG.gif" border="0" name="submit" alt="PayPal, le réflexe sécurité pour payer en ligne">
<img alt="" border="0" src="https://www.paypalobjects.com/fr_FR/i/scr/pixel.gif" width="1" height="1">
</form>

如屏幕截图所示,反馈URL包含以下查询字符串: "&code=AMOUNT_ERROR"。
我尝试更改Paypal在线按钮编辑表单中定义UR3ZPGJAT7M代码的金额值。我尝试了不同的小数分隔符值:
25.00 25,00 25
但都失败了。
我去找解决方法,但没找到任何解决这个问题的方法。Paypal支持根本不回答。
我该如何解决这个问题?
[编辑]
Paypal几天前更改了其付款表单界面,因此可能与此更改有关。当我从头开始创建新按钮并将所有参数填充到PayPal的在线按钮创建表单中时,新按钮就可以正常工作。因此,有一种方法可以启用我的按钮:将它们重新创建为购物车按钮。但是,我有30多个这样的已注册按钮,我希望避免全部重新创建!一些其他按钮可正常工作。我注意到一些工作按钮导致出现英文表单,在该表单中小数分隔符为'.'。在“托管按钮”创建页面中,对于EUR和法语语言,分隔符会自动添加为','。我在Paypal支持网站上找到了一个相关问题:https://www.paypal-community.com/t5/PayPal-HTML-Buttons/Update-your-PayPal-buttons-before-29th-March-2017/m-p/1127596,该用户找到了他的按钮失败的原因:由于库存。他必须取消库存请求。但是我的按钮不使用库存。
9个回答

8

Paypal似乎默认情况下在值字段中存在特殊字符的问题。通过添加UTF-8声明,表单验证似乎可以无缝地工作。这对我很有用:

<input type="hidden" name="charset" value="utf-8">

另一个解决方法可能是对值属性进行字符清理,例如:

value="my_value_1">


也帮助了我。谢谢。 - Alexander Taver

3

我曾经遇到同样的问题,通过将currency_code"USA"更改为"USD"解决了问题。例如:

<input type="hidden" name="currency_code" value="USD">

这对我有用...我原本是 "AU",改成了 "AUD",问题解决了。谢谢你。 - AdheneManx

0

我在2017年7月底开始遇到了同样的错误。发现它是由于金额中的逗号引起的,例如:<input type="hidden" name="amount" value="1,430">

去掉逗号就可以修正PayPal的错误。

这个表单多年来一直使用,之前没有出现过这样的问题。


0

我遇到了一个问题,因为<input type="hidden" name="amount" value="$999">,将$999更改为999后问题得到解决。

在这里发布它,以防其他人遇到相同的问题。


0

感谢Kavitha提供的有用链接。它解释了如何检查用户HTML按钮与新API的匹配,但不适用于托管按钮。对于托管按钮,所有参数都是由PayPal在线创建表单创建并由PayPal托管的。在HTML代码中没有“金额”或“项目名称”等字段,只有一个<<type="hidden" name="hosted_button_id" value="UC4ERNRSKDM">>输入。 - JLuc
沿着这条路线,我发现了一个相关的问题:https://www.paypal-community.com/t5/PayPal-HTML-Buttons/Update-your-PayPal-buttons-before-29th-March-2017/m-p/1127596 用户发现他的按钮失败的原因是库存不足。他必须取消库存请求。但我的按钮没有使用库存。 - JLuc

0
作为结论,我不得不更改所有有问题的按钮并重新创建它们。
在 PayPal 在线按钮创建表单中编辑它们没有帮助。
看起来最古老的托管 PayPal 按钮与新的 2017 年 PayPal API 不兼容。

0

我曾使用下拉选项,其中包含希伯来文本。一旦我将所有选项更改为仅阅读英文文本,一切都正常工作了(即使PayPal网站为我生成了希伯来表单)。


0

我在使用BRL货币时遇到了此错误。问题是使用了'ç'和重音符号(~/´)。


0

我最近也遇到了类似的问题。
我知道PayPal在3月29日进行了一些更改,但我的网站是全新的,也就是说我在3月29日之后创建了我的第一个PayPal按钮。
该网站于4月6日上线,但该按钮在4月17日后停止工作(最后一笔付款是在那天)。

我在德国,我的网站是用德语编写的,因此我的付款选项包含umlauts和,作为小数分隔符。

我的旧按钮(突然停止工作的按钮)看起来像这样:

<form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_top">
    <input type="hidden" name="cmd" value="_s-xclick">
    <input type="hidden" name="hosted_button_id" value="ABCDEFGHIJKLM">
    <table>
    <tr><td><input type="hidden" name="on0" value="Betrag:">Betrag:</td></tr><tr><td><select name="os0">
    <option value="Gebühr">Gebühr €3,50 EUR</option>
    <option value="Gebühr und Spende">Gebühr und Spende €5,00 EUR</option>
    </select> </td></tr>
    </table>
    <input type="hidden" name="currency_code" value="EUR">
    <input type="image" src="https://www.paypalobjects.com/de_DE/DE/i/btn/btn_paynowCC_LG.gif" border="0" name="submit" alt="Jetzt einfach, schnell und sicher online bezahlen – mit PayPal.">
    <img alt="" border="0" src="https://www.paypalobjects.com/de_DE/i/scr/pixel.gif" width="1" height="1">
    <input type="hidden" name="notify_url" value="https://example.com/notify/?id=xyz">
</form>

我联系了PayPal的支持,一开始这位工作人员建议我将数字中的小数点分隔符从德语小数点分隔符,改成英语小数点分隔符.

但是这没有改变任何事情......我怀疑在Gebühr中的umlaut字母可能是罪魁祸首,所以我问PayPal是否已知umlauts存在问题。
答案是“是的”,可能会出现问题,他们建议我重新创建不带umlauts的按钮。

这确实有所帮助,我的当前(可工作)按钮现在看起来像这样:

<form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_top">
    <input type="hidden" name="cmd" value="_s-xclick">
    <input type="hidden" name="hosted_button_id" value="MLKJIHGFEDCBA">
    <table>
    <tr><td><input type="hidden" name="on0" value="Betrag">Betrag</td></tr><tr><td><select name="os0">
        <option value="Gebuehr">Gebuehr €3,50 EUR</option>
        <option value="Gebuehr und Spende">Gebuehr und Spende €5,00 EUR</option>
    </select> </td></tr>
    </table>
    <input type="hidden" name="currency_code" value="EUR">
    <input type="image" src="https://www.paypalobjects.com/de_DE/DE/i/btn/btn_paynowCC_LG.gif" border="0" name="submit" alt="Jetzt einfach, schnell und sicher online bezahlen – mit PayPal.">
    <img alt="" border="0" src="https://www.paypalobjects.com/de_DE/i/scr/pixel.gif" width="1" height="1">
    <input type="hidden" name="notify_url" value="https://example.com/notify/?id=xyz">
</form>
  1. 我刚才忽略了umlauts(ü可以用ue代替)。
  2. 请注意,价格仍然使用逗号作为小数点分隔符,并带有€符号。
    我尝试用点号输入价格,但德国的PayPal网站不允许我这样做(因为在德国语境中是不正确的)。
    PayPal将以我输入的3,50并选择货币为EUR的方式,将价格以“€3,50 EUR”格式(包括€符号)插入HTML代码中。

所以最终,它正在运作...至少现在是这样。
我希望它不会再次默默地停止工作,但坦白地说,我不确定。

一方面,PayPal的用户界面让我创建带有umlauts和逗号的按钮,而没有任何警告说明这可能会导致问题。
但另一方面,PayPal的支持部门怀疑umlauts和逗号可能会成为问题。

然后,我考虑将我的HTML代码从Gebuehr €3,50 EUR更改为Geb&uuml;hr &euro; 3.50 EUR,以确保不会再次出现umlauts /逗号的问题。
但谁知道当我的网站发布Geb&uuml;hr &euro;3.50 EUR时,PayPal已经在其系统中保存了Gebuehr €3,50 EUR的按钮定义...


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