Paypal dernière étape

Par SirPixel, il y a 5 ans


Bonjour,

Voila je rencontre un petit problème avec mon code.

https://i.imgur.com/kLeqpFy.png

Ce que je fais

Décrivez ici votre code ou ce que vous cherchez à faire

private function auth() { $postvals = "grant_type=client_credentials"; $uri = $this->uri . "v1/oauth2/token"; $auth_response = $this->curl($uri, "POST", $postvals, true); if ( is_object($auth_response) and property_exists($auth_response, "access_token") and property_exists($auth_response, "token_type") ) { $this->accessToken = $auth_response->access_token; $this->tokenType = $auth_response->token_type; } } private function curl(string $url, string $method = "GET", $postvals = null, $auth = false): ?stdClass { $ch = curl_init($url); if ($ch === false) { throw new Exception('failed to initialize'); } //if we are sending request to obtain bearer token if ($auth) { $clientId = ""; $secret = ""; if (property_exists($this, "id") and property_exists($this, "secret")) { $clientId = $this->id; $secret = $this->secret; } $headers = ["Accept: application/json", "Accept-Language: en_US"]; curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); curl_setopt($ch, CURLOPT_USERPWD, $clientId . ":" . $secret); } else { // if we are sending request with the bearer token for protected resources $headers = ["Content-Type:application/json", "Authorization:{$this->tokenType} {$this->accessToken}"]; } $options = [ // CURLOPT_HEADER => true, CURLOPT_HEADER => false, CURLINFO_HEADER_OUT => true, CURLOPT_HTTPHEADER => $headers, CURLOPT_RETURNTRANSFER => true, CURLOPT_VERBOSE => true, CURLOPT_TIMEOUT => 10, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_2TLS, CURLOPT_SSL_VERIFYPEER => true, CURLOPT_SSL_VERIFYHOST => 2, CURLOPT_SSLVERSION => CURL_SSLVERSION_MAX_DEFAULT, ]; if ($method === "POST") { $options[CURLOPT_POSTFIELDS] = $postvals; $options[CURLOPT_CUSTOMREQUEST] = $method; } curl_setopt_array($ch, $options); $response = curl_exec($ch); if ($response === false) { throw new Exception(curl_error($ch), curl_errno($ch)); } // $header = substr($response, 0, curl_getinfo($ch, CURLINFO_HEADER_SIZE)); // $body = json_decode(substr($response, curl_getinfo($ch, CURLINFO_HEADER_SIZE))); curl_close($ch); // return ['header' => $header, 'body' => $body]; return json_decode($response); } public function order() { $uri = $this->uri . "v2/checkout/orders"; $postvals = [ "intent" => "CAPTURE", "purchase_units" => [ [ "reference_id" => "test_ref_id1", "amount" => [ "currency_code" => "USD", "value" => "100.00" ] ] ], "application_context" => [ "cancel_url" => "https://paypal.exemple.fr/cancel.php", "return_url" => "https://paypal.exemple.fr/return.php" ] ]; return $this->curl($uri, "POST", json_encode($postvals)); } $paypal = new Paypal(); $response = $paypal->order(); if ( is_object($response) and property_exists($response, "id") ) { header("Location: https://www.sandbox.paypal.com/checkoutnow?token=" . $response->id); exit; } public function completed(string $token): ?stdClass { $uri = $this->uri . "v2/checkout/orders/{$token}/capture"; return $this->curl($uri, "POST", ""); }

Ce que je veux

Obtenir le statut terminer sur paypal.

Ce que j'obtiens

J'obtien le statut Non récupéré.

Je ne vois quel étape il me reste a faire.
J'utilise les liens checkout V2.
Et j'ai tenté d'utilisé l'api fourni par paypal mais je me retrouve au même résultat.
Je suis obligé de confirmer le paiement manuellement sur l'interface paypal.

1 réponse

SirPixel, il y a 5 ans

Il suffit de changer la devise en EUR.