我有一个关于Paypal IPN的问题。
我看到很多人都遇到了这个问题。
我尝试以用户身份支付:Árvíztűrő Tükörfúrógép 在这个名字中,有所有匈牙利字母表中的特殊字符。
我是一名匈牙利PHP开发者。
好的,我尝试在Google上搜索了很多内容。 第一件事是检查Paypal语言设置: http://jlchereau.blogspot.hu/2006/10/paypal-ipn-with-utf8.html 所有设置都是UTF-8。
当Paypal调用我的通知URL时,我(之前的开发者)构建了请求URL。 当我记录下这个URL时,我发现字符集不是UTF-8,因此我强制脚本使用UTF-8。
我尝试以用户身份支付:Árvíztűrő Tükörfúrógép 在这个名字中,有所有匈牙利字母表中的特殊字符。
我是一名匈牙利PHP开发者。
好的,我尝试在Google上搜索了很多内容。 第一件事是检查Paypal语言设置: http://jlchereau.blogspot.hu/2006/10/paypal-ipn-with-utf8.html 所有设置都是UTF-8。
当Paypal调用我的通知URL时,我(之前的开发者)构建了请求URL。 当我记录下这个URL时,我发现字符集不是UTF-8,因此我强制脚本使用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";
}
以下是有趣的事情。我得到了一个完全格式不正确的用户名。所以我逐个字符地进行转储。
第一个名字将是: 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名称吗?
我发送的URL: 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 = 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%FAr%F3g%E9p&notify_version = 3.6&custom = lolka_bolka%3Bfalse%3B%3B%3B%3BHungary%3B%3B%3B%3B%3B%3B&payer_status = verified&business = vaso_1346830963_biz%40mydomain.hu&address_country = United + States&address_city = San + Jose&quantity = 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 + Silk&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&shipping = 0.00&ipn_track_id = 6fe12a7a34b74
http_build_query($_POST)
而不是foreach
循环的事情,它似乎能够很好地处理它。从来没有遇到过这样的问题。 - Sergey Romanov