【发布时间】:2012-08-30 08:15:47
【问题描述】:
我对这个 paypal IPN 有疑问。 我看到了,很多人都有。
我尝试以用户身份付款:Árvíztűrő Tükörfúrógép 在这个名字里,都有特殊的字符,在匈牙利语的ABC里。
我是一名匈牙利 PHP 开发人员。
好的,我试着在谷歌上搜索了很多。 首先是检查贝宝的语言设置: http://jlchereau.blogspot.hu/2006/10/paypal-ipn-with-utf8.html
每个设置都是 UTF-8。
当贝宝调用我的通知 URL 时,我(以前的开发人员)构建了请求 URL。 当我记录这个 url 时,我看到字符集不是 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";
}
}
这是有趣的事情。我得到了一个完全畸形的用户名。 所以我逐个字符地转储它。
名字将是: 字符:193、114、118、237、122、116、26、114、26
吸。 我尽一切努力获得我真正的 utf-8 名称 mb_detect_encoding 是 UTF-8 的。
我尝试使用 iconv、mb_convert_encoding、utf8_encode 和解码。 没有成功。尝试不对名称进行urlencode,再次失败。
谁能告诉我,为什么会这样,我怎样才能找回真正的 utf8 名称?
我发送的网址: cmd=_notify-validate&mc_gross=10.00&protection_eligibility=Eligible&address_status=confirmed&payer_id=JA3YMCJFKSCNJ&tax=0.00&address_street=1+Main+St&payment_date=07%3A41%3A40+Sep+05%2C+2012+PDT&payment_status=Completed*&charset *&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%FAr%F3g%E9p¬ify_version=3.6&custom=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 =instant&last_name=T%FCk%F6rf%FAr%F3g%E9p&address_state=CA&receiver_email=vaso_1346830963_biz%40mydomain.hu&payment_fee=0.59&receiver_id=TGEHBCMG336WE&txn_type=web_accept&item_name=510+丝绸&mc_handence=USD&&M ling_amount=0.00&transaction_subject=lolka_bolka%3Bfalse%3B%3B%3B%3BHungary%3B%3B%3B%3B%3B%3B&payment_gross=10.00&shipping=0.00&ipn_track_id=6fe12a7a34b74
【问题讨论】:
-
您的 PayPal 个人资料中是否启用了 UTF-8?见shwup.blogspot.sg/2009/05/paypal-ipn-issues-with-unicode.html
-
@jack:这是我的第一件事:“好的,我尝试在 google 上搜索很多内容。第一件事是检查 paypal 语言设置:jlchereau.blogspot.hu/2006/10/paypal-ipn-with-utf8.html”
-
好的,现在,当我检查我的网址时,意识到我发送了一个错误的名字:first_name=%C1rv%EDzt%1Ar%1A 其中űő 是相同的,%1A。所以现在我将尝试按名称对字符进行 urlencode。
-
好的,我想我找到了问题所在。我在任何地方都设置了 UTF-8,但没关系,因为我无法在 SANDBOX 模式下设置它。
-
我使用
http_build_query($_POST)而不是foreach循环的另一件事,它接缝处理得很好。从来没有遇到过这样的问题。
标签: php utf-8 character-encoding paypal paypal-ipn