2012-07-13 10 views
31

स्थानीय मशीन में तत्काल भुगतान अधिसूचना सिम्युलेटर का उपयोग कैसे करें? आईपीएन हैंडलर यूआरएल में क्या प्रदान किया जाएगा? मेरे पास हमारे राउटर तक पहुंच नहीं है।लोकलहोस्ट में पेपैल सैंडबॉक्स टेस्ट टूल आईपीएन सिम्युलेटर

धन्यवाद

उत्तर

16

आप अपने स्थानीय होस्ट पर IPN परीक्षण नहीं कर सकते, IPN के बारे में पेपैल के सर्वर एक यूआरएल आप को परिभाषित करने के सर्वर की ओर से पोस्ट की शुरुआत सभी के रूप में।
नतीजतन, आपकी आईपीएन स्क्रिप्ट बाहरी दुनिया द्वारा पहुंच योग्य होनी चाहिए (या आप ngrok.me/localtunnel.me जैसे सुरंग का उपयोग कर सकते हैं)।

+3

http://progrium.com/localtunnel/ –

+4

अच्छा इसके साथ स्थानीय होस्ट करने के लिए। हाँ, यदि आप रेल का उपयोग कर रहे हैं तो आप localtunnel का उपयोग कर सकते हैं। ध्यान दें कि पेपैल पोर्ट 80/443 (HTTP/HTTPS) की सिफारिश करता है, हालांकि। 'आईपीएन वैधकर्ता' गैर-HTTP (एस) बंदरगाहों पर काम नहीं करेगा। – Robert

+0

आप अपने स्थानीय होस्ट पर परीक्षण के लिए आईपीएन डेटा भी नकली कर सकते हैं। नीचे मेरी स्क्रिप्ट देखें। श्रोता के लिए सैंडबॉक्स और php से संपर्क करने के लिए आपको श्रोता के लिए नेटवर्क कनेक्शन की आवश्यकता होगी। – user6972

4

मैं स्थानीयहोस्ट पर परीक्षण करता हूं। आप dyn.com या noip.com जैसी सेवा का उपयोग कर सकते हैं या स्थिर होने पर अपने स्थानीय पते पर सबडोमेन को इंगित कर सकते हैं।

8

आप अपने लोकहोस्ट पर किए गए स्क्रिप्ट को चलाकर पेपैल की आईपीएन पोस्ट अनुकरण कर सकते हैं (आपको कर्ल इंस्टॉल करने की आवश्यकता होगी)। जब तक आपके श्रोता को सैंडबॉक्स की ओर इशारा किया जाता है, तब तक इसे सत्यापित करना चाहिए। अपने श्रोता को लाइव पेपैल में बदलें और इसे सत्यापित करने में विफल होना चाहिए।

<?php 
// SIMULATE PAYPAL IPN LOCALLY 
// 
// Sometimes you need to test on your local host and this can be difficult due 
// to IP routing issues. Use this code on your local machine to simulate the 
// same process that the sandbox IPN simulator does when posting to your URL. 
// 
// Run this code in command line or via the browser. It will post IPN data just 
// like Paypal would. If the code you've written to process your IPN data 
// posts back to the sandbox, it should come back as valid. 

// Put the full url to test in $paypal_url, include file extensions if necessary 
$paypal_url = 'http://localhost/paypal_ipn/process'; // IPN listener to test 

//example posted data from paypal IPN 
$test = 'residence_country=US&invoice=abc1234&address_city=San+Jose&first_name=John&payer_id=TESTBUYERID01&mc_fee=0.44&txn_id=421462822&receiver_email=seller%40paypalsandbox.com&custom=xyz123+CUSTOMHASH&payment_date=12%3A40%3A25+27+Aug+2013+PDT&address_country_code=US&address_zip=95131&item_name1=something&mc_handling=2.06&mc_handling1=1.67&tax=2.02&address_name=John+Smith&last_name=Smith&receiver_id=seller%40paypalsandbox.com&verify_sign=AFcWxV21C7fd0v3bYYYRCpSSRl31AgAAjEU7A5rthY2aP4j1jOIrjuGx&address_country=United+States&payment_status=Completed&address_status=confirmed&business=seller%40paypalsandbox.com&payer_email=buyer%40paypalsandbox.com&notify_version=2.4&txn_type=cart&test_ipn=1&payer_status=unverified&mc_currency=USD&mc_gross=12.34&mc_shipping=3.02&mc_shipping1=1.02&item_number1=AK-1234&address_state=CA&mc_gross1=9.34&payment_type=instant&address_street=123%2C+any+street'; 
/* 
* More detailed breakout of the raw data 
    _POST EXAMPLE ARRAY FROM PAYPAL: 
    Array 
    (
    [residence_country] => US 
    [invoice] => abc1234 
    [address_city] => San Jose 
    [first_name] => John 
    [payer_id] => TESTBUYERID01 
    [mc_fee] => 0.44 
    [txn_id] => 421462822 
    [receiver_email] => [email protected] 
    [custom] => xyz123 CUSTOMHASH 
    [payment_date] => 12:40:25 27 Aug 2013 PDT 
    [address_country_code] => US 
    [address_zip] => 95131 
    [item_name1] => something 
    [mc_handling] => 2.06 
    [mc_handling1] => 1.67 
    [tax] => 2.02 
    [address_name] => John Smith 
    [last_name] => Smith 
    [receiver_id] => [email protected] 
    [verify_sign] => AFcWxV21C7fd0v3bYYYRCpSSRl31AgAAjEU7A5rthY2aP4j1jOIrjuGx 
    [address_country] => United States 
    [payment_status] => Completed 
    [address_status] => confirmed 
    [business] => [email protected] 
    [payer_email] => [email protected] 
    [notify_version] => 2.4 
    [txn_type] => cart 
    [test_ipn] => 1 
    [payer_status] => unverified 
    [mc_currency] => USD 
    [mc_gross] => 12.34 
    [mc_shipping] => 3.02 
    [mc_shipping1] => 1.02 
    [item_number1] => AK-1234 
    [address_state] => CA 
    [mc_gross1] => 9.34 
    [payment_type] => instant 
    [address_street] => 123, any street 
) 
*/ 

//# 
// PayPal IPN processor in PHP 
// fake paypal post to test scripts 
//# 
//---------------------------------------------------------- 
// Create FAKE post from PayPal. 
//---------------------------------------------------------- 

$req = $test; // use test data 

//open connection 
$ch = curl_init(); 

//set the url, number of POST vars, POST data 
curl_setopt($ch,CURLOPT_URL, $paypal_url); 
curl_setopt($ch,CURLOPT_POST, substr_count($req,'&')+1); 
curl_setopt($ch,CURLOPT_POSTFIELDS, $req); 

//execute post 
$result = curl_exec($ch); 

//close connection 
curl_close($ch); 
?> 
+0

डुप्लिकेट लेन-देन पुन: उपयोग त्रुटि से बचने के लिए आपको प्रत्येक परीक्षण के लिए txn_id को बदलने की आवश्यकता है। –

+0

@khaled_webdev सैंडबॉक्स वास्तव में डुप्लिकेट txnid को रोकता है? जब मैंने पिछली बार इसका इस्तेमाल किया तो यह कोई समस्या नहीं थी। आपका श्रोता इसे देख सकता है और अस्वीकार कर सकता है। लाइव पेपैल सिस्टम भी पता लगाएगा और अस्वीकार कर देगा। – user6972

+0

यह सैंडबॉक्स नहीं है लेकिन व्यवस्थित बंडल symfony2-paypal-ipn द्वारा उत्पन्न एक लॉग और मेरा श्रोता दूसरी बार काम नहीं करता है। पहली बार 'सुकेस' और जब मैं फिर कोशिश करता हूं तो मुझे त्रुटि मिली। –

30

पेपैल का आईपीएन सिम्युलेटर स्थानीयहोस्ट के साथ काम नहीं करेगा। हालांकि, आप सिम्युलेटर अनुकरण कर सकते हैं :-)। ऐसा करने के लिए आपको Google क्रोम के लिए फ़ायरफ़ॉक्स या Advanced Rest Client के लिए poster जैसे ब्राउज़र प्लगइन/एक्सटेंशन को स्थापित करने की आवश्यकता है।

एप्लिकेशन खोलें और अपने यूआरएल आप IPN प्रतिक्रिया के लिए पर सुन रहे हैं में डाल दिया:

http://localhost/ipn 

अपनी पोस्ट डेटा के रूप में निम्नलिखित रखो और प्रस्तुत अनुरोध:

residence_country=US&invoice=abc1234&address_city=San+Jose&first_name=John&payer_id=TESTBUYERID01&mc_fee=0.44&txn_id=421462822&receiver_email=seller%40paypalsandbox.com&custom=xyz123+CUSTOMHASH&payment_date=12%3A40%3A25+27+Aug+2013+PDT&address_country_code=US&address_zip=95131&item_name1=something&mc_handling=2.06&mc_handling1=1.67&tax=2.02&address_name=John+Smith&last_name=Smith&receiver_id=seller%40paypalsandbox.com&verify_sign=AFcWxV21C7fd0v3bYYYRCpSSRl31AgAAjEU7A5rthY2aP4j1jOIrjuGx&address_country=United+States&payment_status=Completed&address_status=confirmed&business=seller%40paypalsandbox.com&payer_email=buyer%40paypalsandbox.com&notify_version=2.4&txn_type=cart&test_ipn=1&payer_status=unverified&mc_currency=USD&mc_gross=12.34&mc_shipping=3.02&mc_shipping1=1.02&item_number1=AK-1234&address_state=CA&mc_gross1=9.34&payment_type=instant&address_street=123%2C+any+street 

अद्यतन: मैंने बस एक और विकल्प का उपयोग शुरू किया जो आसान है, https://localtunnel.me। मॉड्यूल को स्थापित करने और चलाने के लिए निम्न कार्य करें। यह आपका सार्वजनिक यूआरएल दिखाएगा। उस सार्वजनिक यूआरएल के सभी अनुरोध आपके लोकहोस्ट को भेजे जाएंगे।

npm install -g localtunnel 
lt --port 80 
+1

मैं [localtunnel] (http://localtunnel.me/) का भी उपयोग करता हूं और मुझे 'ngrok' से अधिक आसान लगता है क्योंकि मुझे साइन अप करने की आवश्यकता नहीं है। एक टिप, यदि आपकी साइट किसी भिन्न होस्ट (locahost नहीं) पर पाई जाती है तो '-l' विकल्प का उपयोग करें। पूर्व। 'lt -p 80 -l local.dev' आशा है कि मदद करता है। – JohnnyQ

40

आप ngrok का उपयोग कर लोकहोस्ट पर परीक्षण कर सकते हैं।

सीधे शब्दों में ngrok स्थानीय स्तर पर तो चलाने के परीक्षण यूआरएल कि ngrok आप (http://1bc7d09d.ngrok.com/ की तरह कुछ)

यह अपने स्थानीय होस्ट करने के लिए एक सुरंग प्रदान करता है देता पेस्ट करें।

+2

यह स्वीकार्य उत्तर होना चाहिए :) महान काम करता है! – lucaswxp

+1

वाह - यह ऐसा कुछ है जो मैं लंबे समय से ढूंढ रहा था! यह जवाब है! – mgibas

4
/ngrok http -host-header=yourwebsite.com 80 

इच्छा सुरंग सही मेजबान हैडर

+0

इस बहुत ही सरल कोड स्निपेट के लिए आपका बहुत बहुत धन्यवाद। :) –

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