2011-09-02 17 views
7

मैं पेपैल पीडीटी जानकारी को सत्यापित करने की कोशिश कर रहा हूं।कर्ल अनुरोध समस्या

मैंने अपना नकली रूप जेनरेट किया और इसे सबमिट किया। आईटी ने काम किया और जानकारी भी वापस कर दी।

मैंने कर्ल अनुरोध करने के लिए एक ही चीज़ की कोशिश की। लेकिन मेरा कर अनुरोध मेरे लिए खाली लौट रहा है।

मेरी mockup प्रपत्र:

<form method="post" action="https://sandbox.paypal.com/cgi-bin/webscr"> 
    <input type="hidden" name="cmd" value="_notify-synch"/> 
    <input type="hidden" name="at" value="-----"/> 
    <input type="hidden" name="tx" value="-----"/> 
    <input type="submit" value="Test"/> 
</form> 

मेरे कर्ल अनुरोध कोड:

$arrData = array(
    'tx' => '----', 
    'cmd' => '_notify-synch', 
    'at' => '-----' 
); 
    $ch = curl_init('https://sandbox.paypal.com/cgi-bin/webscr'); 
    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1) ; 
    curl_setopt($ch, CURLOPT_POST, 1); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, $arrData); 
    $strCurlResult = curl_exec($ch); 
    curl_close($ch); 
    return $strCurlResult; 

संपादित करें:

कर्ल त्रुटि ट्रैकिंग मैं निम्न संदेश मिल गया पर:

एसएसएल: सर्टिफिकेट विषय का नाम 'www.sandbox.paypal.com' लक्ष्य होस्ट नाम से मेल नहीं खाता 'sandbox.paypal.com'

+0

संभव डुप्ले: http://stackoverflow.com/questions/1776827/php-curl-paypal-sandbox –

+0

कुल्केबिन; अगर हमने आपके समाधान में योगदान दिया तो कृपया इस प्रश्न को अपडेट करें। – Robert

उत्तर

8

बदलें: $ ch = curl_init ('https://sandbox.paypal.com/ यह एक cURL विकल्प सेट करके किया जा सकता सीजीआई-बिन/webscr ');
करने के लिए: $ ch = curl_init ('https://www.sandbox.paypal.com/cgi-bin/webscr');

कारण: www.sandbox.paypal.com का प्रमाणपत्र sandbox.paypal.com के लिए मान्य नहीं है।
वैसे भी, अपने फॉर्म की 'एक्शन' में वही परिवर्तन करें।

+0

यह प्रतिभा है! – almaruf

0

स्ट्रिंग के रूप में यह भेजें:

$arrData = array(
    'tx' => '----', 
    'cmd' => '_notify-synch', 
    'at' => '-----' 
); 

$fields_string = ""; 

foreach($arrData as $key=>$value) 
    $fields_string .= $key.'='.$value.'&'; 

rtrim($fields_string,'&'); 

$ch = curl_init('https://sandbox.paypal.com/cgi-bin/webscr'); 
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1) ; 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields_string); 
$strCurlResult = curl_exec($ch); 
curl_close($ch); 
return $strCurlResult; 
+0

कोई भाग्य ......... – KoolKabin

6

आप SSL प्रमाणपत्र सत्यापित करने नहीं कर्ल बताने के लिए की जरूरत है।

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); 

अधिक यहाँ जानकारी:

http://php.net/manual/en/function.curl-setopt.php

+1

यह हमेशा विचार नहीं किया जाता है। कुछ envs में, आपको CURLOPT_SSL_VERIFYHOST को भी अक्षम करना होगा। –

2

curl_setopt ($ ch, CURLOPT_SSL_VERIFYPEER, 0);

हालांकि उपरोक्त कार्यों की अनुशंसा नहीं की जाती है।

रॉबर्ट के रूप में कहा

बदलें:

$ ch = curl_init ('https://sandbox.paypal.com/cgi-bin/webscr');

करने के लिए:

$ ch = curl_init ('https: //www.sandbox.paypal।कॉम/सीजीआई-बिन/webscr ');

21

वास्तव में, आप केवल सहकर्मी HOST सत्यापन अक्षम कर सकते हैं। कुछ PHP/cURL संस्करण में, बस पीयर अक्षम करने के लिए पर्याप्त नहीं है:

curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); 

डॉक्स से:

CURLOPT_SSL_VERIFYHOST: 1 एसएसएल सहकर्मी प्रमाण पत्र में एक आम नाम के अस्तित्व की जाँच करने के। 2 एक सामान्य नाम के अस्तित्व की जांच करने के लिए और यह भी सत्यापित करें कि यह प्रदान किए गए होस्टनाम से मेल खाता है। उत्पादन में वातावरण इस विकल्प का मान 2 (डिफ़ॉल्ट मान) पर रखा जाना चाहिए।

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