मेरे पास एक ऐप है जो पेपैल कनेक्ट से जुड़ता है। पेपैल कनेक्ट बटन पर क्लिक करें मुझे पेपैल वेबसाइट पर ले जाया गया है और मुझे एक कोड प्राप्त होता है जो वे प्रमाणीकरण के बाद भेजते हैं। लेकिन फिर मैं उपयोगकर्ता जानकारी की आवश्यकता के लिए प्राधिकरण_कोड के साथ पेपैल को POST अनुरोध नहीं भेज सकता, मुझे एक त्रुटि मिल रही है। मुझे यह त्रुटि मिल रही है: अमान्य प्रमाणीकरण क्रेडेंशियल या गुम होने के कारण प्रमाणीकरण विफल हो गया .. और मुझे पूरा यकीन है कि मेरी साख अच्छी है। क्या मैं कुछ भूल रहा हूँ?

पेपैल मुझे यही देता है:

curl -X POST https://api.sandbox.paypal.com/v1/oauth2/token \
-H 'Authorization: Basic {Your Base64-encoded ClientID:Secret}=' \
-d 'grant_type=refresh_token&refresh_token={refresh token}'

मैं पोस्ट अनुरोध भेजने के लिए Guzzle का उपयोग कर रहा हूं। कृपया नीचे कोड देखें

$client = new \GuzzleHttp\Client();
$headers = [
    'Authorization' => 'Basic clientID:clientSecret'
];

$response = $client->request('POST',
'https://api.sandbox.paypal.com/v1/oauth2/token',
[
    'grant_type ' => 'authorization_code',
    'code' => $data['code']
], 
$headers);
1
Sallmin Rexha 21 मई 2019, 09:54

1 उत्तर

सबसे बढ़िया उत्तर

paypal api दस्तावेज़, ऐसा प्रतीत होता है कि आपका प्राधिकरण शीर्षलेख गलत है।

प्राधिकरण अनुरोध शीर्षलेख: बेस64-एन्कोडेड क्लाइंट आईडी और गुप्त क्रेडेंशियल एक कोलन (:) द्वारा अलग किए गए हैं। पार्टनर के क्रेडेंशियल्स का इस्तेमाल करें।

ऐसा करने के लिए आप php के base64_encode() फ़ंक्शन का उपयोग कर सकते हैं।

$client = new \GuzzleHttp\Client();

$authorizationString = base64_encode($clientId . ':' . $clientSecret);

$client->request(
    'POST', 
    'https://api.sandbox.paypal.com/v1/oauth2/token', 
    [
        'headers' => [
            'Authorization' => 'Basic ' . $authorizationString
        ], 
        'form_params' => [
            'grant_type ' => 'authorization_code',
            'code' => $data['code']
        ]
    ]
);
3
Jeemusu 21 मई 2019, 08:16