Paypal: Unable to Reauthorize Authorized Payment E

2019-06-04 15:01发布

问题:

Paypal: Unable to Reauthorize Authorized Payment

Below is my code

$clientId = 'XXXXX';
$secret = 'XXXX';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://api.sandbox.paypal.com/v1/oauth2/token");
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, "grant_type=client_credentials");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERPWD, $clientId . ":" . $secret);
$result = curl_exec($ch);

if (empty($result)) {
    die("Error: No response.");
} else {
    $json = json_decode($result);
    //echo "<pre>";
    //print_r($json);
    //exit;
    $token_type = $json->token_type;
    $access_token = $json->access_token;
    $nonce = $json->nonce;

    //echo "Authorization: " . $token_type . " " . $access_token;

    if (!empty($token_type) && !empty($access_token)) {

        // START REAUTHORIZE PAYMENT
        $authorizationId = 'AF998724VR277443T';
        $currency = 'USD';
        $amount = '20.00';
        $data = '{
                    "amount": {
                    "total": "' . $amount . '",                     
                    "currency": "' . $currency . '"

                    }
                };';


        $ch1 = curl_init();
        curl_setopt($ch1, CURLOPT_URL, "https://api.sandbox.paypal.com/v1/payments/authorization/" . $authorizationId . "/reauthorize");
        curl_setopt($ch1, CURLOPT_POST, true);
        curl_setopt($ch1, CURLOPT_POSTFIELDS, $data);
        curl_setopt($ch1, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch1, CURLOPT_HTTPHEADER, array(
            "Content-Type: application/json",
            "Authorization: " . $token_type . " " . $access_token,
            "Content-length: " . strlen($data))
        );

        $result1 = curl_exec($ch1);
        if (empty($result1)) {
            die("Error: No response.");
        } else {
            $json1 = json_decode($result1);
            echo "<pre>";
            print_r($json1);
            exit;
            //echo $json1->id;
        }
        // END REAUTHORIZE PAYMENT
    }
}

It gives below error

stdClass Object
(
    [name] => INTERNAL_SERVICE_ERROR
    [message] => An internal service error occurred.
    [information_link] => https://developer.paypal.com/webapps/developer/docs/api/#INTERNAL_SERVICE_ERROR
    [debug_id] => b220155a9c70e
)

https://developer.paypal.com/docs/api/payments/#authorization_reauthorize

What i'm missing. I'm running above code on WAMP.

As per Paypal :

After the three-day honor period authorization expires, you can reauthorize the payment.

回答1:

It looks like the authorization id is already reauthorized and still inside the honor period. Hence PayPal is not allowing the Reauthorization. You may try again after the honor period expire.



回答2:

Add

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 

HTTPS link, could be related to your problem