Paypal-IPN-charset überschreiben
ich habe ein problem mit dem paypal IPN.
Ich sah eine Menge Leute hatte.
Ich versuche zu bezahlen, als Benutzer: Árvíztűrő Tükörfúrógép
In diesem Namen, es gibt alle besonderen chars, welche in der ungarischen ABC.
Ich bin eine Ungarische PHP-Entwickler.
Ok, ich habe versucht zu suchen, eine Menge bei google.
Die erste Sache war, überprüfen Sie die paypal-Sprache-Einstellungen:
http://jlchereau.blogspot.hu/2006/10/paypal-ipn-with-utf8.html
Alle Einstellungen sind UTF-8.
Wenn paypal rief meine notify url, ich (früheren Entwickler) bauen Sie die Anfrage-URL ein.
Wenn ich angemeldet diese url, sah ich, das charset wurde nicht UTF-8, so dass ich gezwungen das script zu nutzen.
$req = 'cmd=_notify-validate';
foreach ($_POST as $key => $value) {
if ($key == 'charset') {
$req .= "&charset=utf-8";
} else {
$value = urlencode(stripslashes($value));
$req .= "&$key=$value";
}
}
Und hier ist die interessante Sache. Ich wieder Total mallformed Benutzername.
Also ich dump es von char zu char.
Den ersten Namen:
CHARS: 193, 114, 118, 237, 122, 116, 26, 114, 26
Saugen.
Ich versuchte alles, um meinen echten utf-8-Namen
Die mb_detect_encoding ist UTF-8 für ihn.
Habe ich versucht zu verwenden, iconv, mb_convert_encoding, utf8_encode und decodieren.
Kein Erfolg. Versucht nicht urlencode name, kein Erfolg, wieder.
Kann jemand mir sagen, warum ist es, und wie kann ich den real utf8 Namen?
Die URL das, was ich gesendet:
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¬ify_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
- Ist UTF-8 aktiviert, die in Ihrem PayPal-Profil? Siehe shwup.blogspot.sg/2009/05/paypal-ipn-issues-with-unicode.html
- dies war meine erste Sache: "Ok, ich habe versucht zu suchen, eine Menge bei google. Die erste Sache war, überprüfen Sie die paypal-Sprache-Einstellungen: jlchereau.blogspot.hu/2006/10/paypal-ipn-with-utf8.html"
- ok, jetzt, wenn ich meine url, erkannte, schickte ich eine schlechte Vorname: Vorname=%C1rv%EDzt%1Ar%1A, wo űő sind die gleichen, %1A. So, jetzt werde ich versuchen, urlencode char durch char-Namen.
- Ok, ich denke, dass ich das problem gefunden. Ich überall UTF-8, aber es spielt keine Rolle, bacause ich kann nicht gesetzt werden im SANDBOX-Modus.
- Eine andere Sache, die ich verwenden
http_build_query($_POST)
stattforeach
Zyklus und es Nähte zu handhaben ist es gut. Hatte nie Probleme wie diese.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sollten Sie Ihre Einstellungen ändern bei Paypal.
$req = 'cmd=_notify-validate'; foreach($_POST as $key => $value) { $value = urlencode(stripslashes($value)); $req.= "&$key=$value"; } $req = str_replace('=utf-8', '=UTF-8', $req);
Lenart s Antwort ist Super und sehr hilfreich, aber ich dachte, ich würde hinzufügen, ein paar Dinge, die würden nicht passen in einem Kommentar.
charset
auf Ihrer Website, in Ihrem Bestellformular (z.B.: über eine versteckte Eingabe), ist NICHT genug, müssen Sie auch legen Sie Ihre Standard-Codierung – wie erklärt, in der Lenart die Antwort.UTF-8
als einen versteckten Eingang Ihrer Bestellung, aber PayPal IPNs noch inwindows-1252
. Sie können nur fix, dass durch ändern der Standard-Einstellung in Ihrem PayPal-Konto.charset
in die POST-Meldung.Western European Languages (including English)
würde dazu führen, französischen Akzent-Zeichen nicht zu funktionieren.UTF-8
im IPNs.)§
BEARBEITEN. Last but not least:
Wenn Sie möchten, testen Sie Ihre IPN-handling-Skript mit speziellen Zeichen oder Zeichen mit Akzenten, Sie haben (theoretisch) ein paar verschiedene Optionen, aber die meisten funktionieren nicht in der Praxis.
Hier eine Zusammenfassung:
Only enter letters
(sic).Something went wrong. One or more sandbox accounts could not be uploaded. Try again.
Ich berichtete dieses Problem zu PayPal Monaten aber hat sich nichts geändert.
§
Arbeiten mit PayPal ist kein Spaß und eine große Verschwendung von Zeit. Ich hoffe, dies wird Ihnen helfen, etwas Zeit sparen. Nehmen Sie Ihr Geschäft anderswo, wenn Sie können.