2012-09-05 13 views
15

मुझे इस पेपैल आईपीएन के साथ कोई समस्या है। मैंने देखा, बहुत से लोगों के पास था। Árvíztűrő Tükörfúrógép इस नाम में, वहाँ सभी विशेष वर्ण, क्या हंगेरी एबीसी में हैं:पेपैल आईपीएन ओवरराइड वर्णसेट

मैं एक उपयोगकर्ता के रूप में भुगतान करने के लिए प्रयास करें।

मैं एक हंगेरी PHP डेवलपर हूं।

ठीक है, मैंने Google पर बहुत कुछ खोजने की कोशिश की। पहली बात पेपैल भाषा सेटिंग्स की जांच करना था: http://jlchereau.blogspot.hu/2006/10/paypal-ipn-with-utf8.html

प्रत्येक सेटिंग्स यूटीएफ -8 हैं।

जब पेपैल ने मेरा यूआरएल अधिसूचित किया, तो मैंने (पिछला डेवलपर) अनुरोध यूआरएल बनाया। जब मैंने इस यूआरएल को लॉग किया, मैंने देखा, वर्णसेट यूटीएफ -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"; 
    } 

}

और यहाँ intresting बात है। मैं एक पूरी तरह से mallformed उपयोगकर्ता नाम वापस मिलता है। तो मैं इसे char द्वारा चार डंप करता हूं।

पहला नाम हो जाएगा: CHARS: 193, 114, 118, 237, 122, 116, 26, 114, 26

चूसो। मैंने अपना असली यूटीएफ -8 नाम प्राप्त करने के लिए सबकुछ करने की कोशिश की है mb_detect_encoding इसके लिए यूटीएफ -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 + मुख्य + सेंट & PAYMENT_DATE = 07% 3A41 % 3A40 + सितम्बर +05% 2C + 2012 + पीडीटी & payment_status = पूरे * & charset = utf-8 * & address_zip = 95131 & first_name =% C1rv% EDzt% 1Ar% 1 ए & mc_fee = 0.59 & address_country_code = अमेरिका & पता_नाम =% सी 1 आरवी% ईडीजीटी% 1 एआर% 1 ए + टी% एफसीके% एफ 6 आरएफ% एफएआर% एफ 3 जी% ई 9पी & नोटिफाइवर्स = 3.6 & कस्टम = लोल्का_बोल्का% 3 बाफल्स% 3 बी% 3 बी% 3 बी% 3 बीएचंगरी% 3 बी% 3 बी% 3 बी% 3 बी% 3 बी% 3 बी & 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 = तत्काल & अंतिम_नाम = टी% एफसीके% F6rf% FAR% F3g% E9p & पता_स्टेट = सीए & receiver_email = vaso_1346830963_biz% 40mydomain। हू & payment_fee = 0।59 & receiver_id = TGEHBCMG336WE & txn_type = web_accept & ITEM_NAME = 510 + सिल्क & mc_currency = अमरीकी डालर & ITEM_NUMBER = & residence_country = अमेरिका & test_ipn = 1 & handling_amount = 0.00 & transaction_subject = lolka_bolka% 3Bfalse% 3 बी% 3 बी% 3 बी% 3BHungary% 3 बी % 3 बी% 3 बी% 3 बी% 3 बी% 3 बी & payment_gross = 10.00 & शिपिंग = 0.00 & ipn_track_id = 6fe12a7a34b74

+0

क्या आपके पेपैल प्रोफाइल में यूटीएफ -8 सक्षम है? देखें http://shwup.blogspot.sg/2009/05/paypal-ipn-issues-with-unicode.html –

+0

@jack: यह मेरी पहली बात यह थी: "ठीक है, मैं गूगल पर का एक बहुत खोज करने के लिए करने की कोशिश की पहली बात पेपैल भाषा सेटिंग्स की जांच करना था: http://jlchereau.blogspot.hu/2006/10/paypal-ipn-with-utf8.html " – vaso123

+0

ठीक है, अब, जब मैं अपना यूआरएल जांचता हूं, एहसास हुआ, मैं एक बुरा पहला नाम भेजा: first_name =% C1rv% EDzt% 1Ar% 1A जहां theő वही हैं,% 1A। तो अब मैं चार नाम से urlencode char करने की कोशिश करूंगा। – vaso123

उत्तर

33

आप Paypal अपनी सेटिंग बदल जाना चाहिए।

  • नीचे और करने के लिए स्क्रॉल क्लिक PayPal button language encoding
  • क्लिक और विकल्प और UTF-8
  • लिए एन्कोडिंग सेट साइडबार में अपने Paypal profile
  • क्लिक करने के लिए जाना मेरे बेच उपकरण

End page

+3

महान। धन्यवाद।ये पेपैल लोग इसे गहराई से छुपाते हैं :) – vaso123

+0

इसके अलावा, आपको अपने आईपीएन पृष्ठ में एन्कोडिंग में एन्कोडिंग डालना चाहिए: '$ req = 'cmd = _notify-validate'; \t \t foreach ($ _ POST $ key => $ value) { \t \t $ value = urlencode (स्ट्रिप्सलाश ($ मान)); \t \t \t $ req। = "और $ key = $ value"; \t \t} \t \t $ अनुरोध = str_replace ('= UTF-8', '= UTF-8', $ अनुरोध); ' – toni07

+1

कौन IPNS के लिए एन्कोडिंग अनुमान लगाया है |" पेपैल बटन भाषा एन्कोडिंग "किया जा रहा है .. । पारितोषिक के लिए धन्यवाद! – Paludis

2

लेनर्ट का जवाब बहुत अच्छा और बहुत उपयोगी है, लेकिन मैंने सोचा कि मैं कुछ चीजें जोड़ूंगा जो एक टिप्पणी में फिट नहीं होंगे।

  • स्पष्ट करने के लिए: charset, अपने आदेश के रूप में (उदाहरण, एक छिपा इनपुट के माध्यम .:) अपनी साइट पर स्थापित करने, पर्याप्त नहीं है, आप भी अपनी डिफ़ॉल्ट एन्कोडिंग निर्धारित करने की आवश्यकता - के रूप में Lenart के जवाब में विस्तार से बताया।
    • ऐसा इसलिए है क्योंकि वह विकल्प केवल आपके डेटा पर लागू होता है, जबकि डिफ़ॉल्ट सेटिंग पेपैल द्वारा आपके आईपीएन-हैंडलिंग स्क्रिप्ट पर भेजे गए डेटा पर लागू होती है।
    • उदाहरण: शायद आपके पास UTF-8 आपके ऑर्डर फॉर्म पर एक छिपे हुए इनपुट के रूप में है लेकिन पेपैल आईपीएन अभी भी windows-1252 में हैं। आप केवल अपने पेपैल खाते में डिफ़ॉल्ट सेटिंग बदलकर इसे ठीक कर सकते हैं।
  • परीक्षण प्रयोजनों के लिए, आप भी, सेट है कि अपने सैंडबॉक्स व्यापारी खाते के लिए विकल्प एन्कोडिंग चाहता हूँ! (बस अपने सैंडबॉक्स व्यापारी विवरण के साथ https://sandbox.paypal.com पर लॉग इन करें।)
  • डिफ़ॉल्ट एन्कोडिंग सेट करने के बाद, यदि आप इसके मान को देखने के लिए फिर से सेटिंग पर वापस जाते हैं, तो यह आपके द्वारा निर्धारित मूल्य के बजाय डिफ़ॉल्ट मान दिखाएगा। यह एक बग (और पेपैल के काम की गुणवत्ता का चित्रण) है और आपके द्वारा पहले सेट किया गया मान वास्तव में सेट है।
    • तो अगर आप क्या चारसेट वास्तव में है, इसलिए अपने IPN हैंडलिंग स्क्रिप्ट के अंदर पोस्ट संदेश में charset का मूल्य की जाँच करके करना सुनिश्चित करना चाहते हैं।
  • पेपैल द्वारा उपयोग किया जाने वाला डिफ़ॉल्ट वर्णसेट ठीक से काम नहीं करता है।
    • उदाहरण: Western European Languages (including English) फ्रेंच उच्चारण वाले वर्णों को काम नहीं करने का कारण बनेंगे।
    • आप हर जगह यूटीएफ 8 का उपयोग बंद कर रहे हैं (आईपीएन में UTF-8 के रूप में दिखाए जाएंगे।)

§

संपादित करें। इतना ही नहीं बल्कि:

आप विशेष या उच्चारण वर्ण के साथ अपने IPN हैंडलिंग स्क्रिप्ट का परीक्षण करना चाहते हैं, तो आप है (सैद्धांतिक रूप से) कुछ विभिन्न विकल्पों लेकिन सबसे व्यवहार में काम नहीं करते।

यहाँ एक संक्षिप्त है: (। यह पैदा करता है नकली अनुरोध, नहीं असली)

  • का प्रयोग के रूप में यह अनुरोध मान्य नहीं कर सकता IPN Simulator काम नहीं करेगा
  • firstname के अंदर विशेष वर्ण के साथ Creating a PayPal Sandbox customer account या अंतिम नाम दुख की बात नहीं है।
    • उपयोगकर्ता इंटरफ़ेस इसका समर्थन नहीं करता है और आपको Only enter letters (एसआईसी) से पूछेगा। एक पेपैल खाते बिना पेपैल सैंडबॉक्स सर्वर के साथ अपनी साइट का परीक्षण और भुगतान चुनते:
    • बल्क खाता अपलोड कार्यक्षमता Something went wrong. One or more sandbox accounts could not be uploaded. Try again.
  • में एक ही विकल्प है कि काम करता है, जिसके परिणामस्वरूप बेहतर नहीं है।
    • इस तरह, आप पहले और अंतिम नामों के लिए उच्चारण/विशेष पात्रों में प्रवेश करने में सक्षम होंगे।
    • (आप हूँ से `Developer/Sandbox Accounts>अपने ग्राहक के खाते> प्रोफ़ाइल> अनुदान क्रेडिट कार्ड नंबर, प्रकार और समाप्ति की तारीख मिल -। किसी भी संख्या सीवीवी मूल्य के लिए करना होगा)

मैंने इस मुद्दे को पेपैल महीने पहले रिपोर्ट किया था लेकिन कुछ भी नहीं बदला है।

§

पेपैल के साथ काम करना कोई मज़ा और समय का एक बड़ा बर्बादी है। मुझे आशा है कि यह आपको कुछ समय बचाने में मदद करेगा। यदि आप कर सकते हैं तो अपना व्यवसाय कहीं और ले लो।

+0

ग्रेट उत्तर। एक अद्यतन: एक सैंडबॉक्स उपयोगकर्ता अब पेपैल की चेकआउट प्रक्रिया के दौरान अपना पता बदल सकता है और विशेष पात्रों को दर्ज कर सकता है ... – DIDoS

संबंधित मुद्दे