我有这个paypal IPN的问题。 我看到,很多人都有。
我尝试以用户身份付款:ÁrvíztűrőTükörfúrógép 在这个名字中,有所有特殊的字符,匈牙利的ABC。
我是匈牙利的PHP开发人员。
好的,我试图在谷歌搜索很多。 首先要检查paypal语言设置: http://jlchereau.blogspot.hu/2006/10/paypal-ipn-with-utf8.html
每个设置都是UTF-8。
当paypal调用我的通知网址时,我(之前的开发人员)会构建请求网址。 当我记录这个网址时,我看到,字符集不是UTF-8,所以我强制脚本使用它。
$req = 'cmd=_notify-validate';
foreach ($_POST as $key => $value) {
if ($key == 'charset') {
$req .= "&charset=utf-8";
} else {
$value = urlencode(stripslashes($value));
$req .= "&$key=$value";
}
}
这是有趣的事情。我找回了一个完全商品化的用户名。 所以我通过char转储char。
第一个名字是: CHARS:193,114,118,237,122,116,26,114,26
吸。 我尝试了一切来获得真正的utf-8名称 mb_detect_encoding就是UTF-8。
我尝试使用iconv,mb_convert_encoding,utf8_encode和decode。 没有成功。试图不对urlencode这个名字,再也没有成功。
有人可以告诉我,为什么会这样,我怎样才能找回真正的utf8名字?
我发送的网址: CMD = _notify-验证&安培; mc_gross = 10.00&安培; protection_eligibility =合格&安培; address_status =确认&安培; payer_id = JA3YMCJFKSCNJ&安培;税务= 0.00&安培; address_street = 1 +主+ ST&安培; PAYMENT_DATE = 07%3A41%3A40 +月+ 05%2C + 2012 + PDT&安培; PAYMENT_STATUS =完成* &安培;字符集= UTF-8 *&安培; address_zip = 95131&安培;如first_name =%C1rv%EDzt%1AR%1A&安培; mc_fee = 0.59&安培; address_country_code = US&安培; ADDRESS_NAME =%C1rv%EDzt%1AR%1A + T%FCK%F6rf%远%F3G%E9P&安培; notify_version = 3.6&安培;定制= lolka_bolka%3Bfalse%3B%3B%3B%3BHungary%3B%3B%3B%3B%3B %3B和放大器; payer_status =验证和放大器;商业= vaso_1346830963_biz%40mydomain.hu和放大器; ADDRESS_COUNTRY =美+美国和放大器; ADDRESS_CITY =圣+何塞&放大器;数量= 1&安培; verify_sign = AVVJjJNeVwHbYcMDVfj2N1DqWwUdAtNQIpb9KIP99gZ2PY-LPoOYzSCc和放大器; PAYER_EMAIL = test_1346830232_per%40mydomain.hu和放大器; txn_id = 4J747779YW528551F和放大器; payment_type =即时&安培;姓氏= T%FCK%F6rf%远%F3G%E9P&安培; ADDRESS_STATE = CA&安培; RECEIVER_EMAIL = vaso_1346830963_biz%40mydomain.hu&安培; payment_fee = 0.59&安培; receiver_i d = TGEHBCMG336WE&安培; txn_type = web_accept&安培; ITEM_NAME = 510 +丝绸安培; mc_currency = USD&安培; ITEM_NUMBER =安培; residence_country = US&安培;的test_ipn = 1&安培; handling_amount = 0.00&安培; transaction_subject = lolka_bolka%3Bfalse%3B%3B%3B%3BHungary%3B %3B%3B%3B%3B%3B&安培; payment_gross = 10.00&安培;航运= 0.00&安培; ipn_track_id = 6fe12a7a34b74
答案 0 :(得分:40)
您应该在Paypal更改设置。
答案 1 :(得分:3)
Lenart的答案很棒且非常有用,但我想我会添加一些不适合评论的内容。
charset
,在您的订单中(例如:通过隐藏的输入)是不够的,您还需要设置默认编码 - 正如Lenart的回答所解释的那样。
UTF-8
作为隐藏输入,但PayPal IPN仍在windows-1252
。您只能通过更改PayPal帐户中的默认设置来解决此问题。charset
的值,在IPN处理脚本中执行此操作。Western European Languages (including English)
会导致法语重音字符不起作用。UTF-8
。)§
EDIT。最后但同样重要的是:
如果你想用特殊或重音字符测试你的IPN处理脚本,你(理论上)有几个不同的选项,但大多数在实践中都不起作用。
这是一个回顾:
Only enter letters
(原文如此)。Something went wrong. One or more sandbox accounts could not be uploaded. Try again.
几个月前我向PayPal报告了这个问题,但没有任何改变。
§
使用PayPal并不好玩,浪费时间。我希望这会帮助你节省一些时间。如果可以的话,把你的事业带到别处。