Bonjour,
J'ai un problème avec paypal depuis les mises à jours vers TLS 1.2 et HTTP 1.1. J'ai bien fais une requête de test vers https://tlstest.paypal.com et je reçois bien le message "Paypal_Connection_OK" donc j'en déduis que mon serveur est opérationnel. Je précise qu'avant cette mise à jour mon code fonctionnait très bien.

Voila le code en question que j'ai retiré de mon projet afin de le rendre plus clair

paypal_form.php

<!DOCTYPE html>
<html lang="fr" dir="ltr">
    <head>
        <meta charset="utf-8">
        <title>Paypal</title>
        <script src="https://www.paypalobjects.com/api/checkout.js"></script>
    </head>
    <body>
        <div id="paypal-button-container"></div>
        <script>
          paypal.Button.render({
              env: 'sandbox',
              commit: true,
              locale: 'fr_FR',
              style: { size: 'medium', color: 'gold', shape: 'rect', label: 'paypal' },
              payment: function(){
                  return paypal.request.get('http://MON_SITE.DOMAINE/paypal_create.php')
                  .then(function(res) {
                      console.log(res);
                      return res.id;
                  });
              },
              onAuthorize: function(data, actions) {
                  console.log(data);
                  return paypal.request.post('http://MON_SITE.DOMAINE/paypal_execute.php', { paymentID: data.paymentID, payerID: data.payerID})
                  .then(function(res){
                      console.log(res);
                  })
                  .catch(function(error){ console.log("error", error); });
              }
            }, '#paypal-button-container');
        </script>
    </body>
</html>

paypal_create.php

<?php
require __DIR__ .'/vendor/autoload.php';
$id = 'MON_ID_PAYPAL';
$secret = 'MON_SECRET_PAYPAL';
$token = 10.0;
$context = new PayPal\Rest\ApiContext(
    new PayPal\Auth\OAuthTokenCredential(
        $id,
        $secret
    )
);
$payment = new \PayPal\Api\Payment();
$redirectUrls = (new \PayPal\Api\RedirectUrls())
    ->setReturnUrl('http://MON_SITE.DOMAINE/return.php')
    ->setCancelUrl('http://MON_SITE.DOMAINE/cancel.php');
$payment->setRedirectUrls($redirectUrls);
$payer = (new \PayPal\Api\Payer())->setPaymentMethod('PayPal');
$payment->setPayer($payer);
$list = new \PayPal\Api\ItemList();
$item = new \PayPal\Api\Item();
$item->setName(sprintf('Achat de %g Token sur MON SITE',$token));
$item->setPrice($token);
$item->setCurrency('EUR');
$item->setQuantity(1);
$list->addItem($item);
$details = (new \PayPal\Api\Details())->setSubtotal($token);
$amount = (new \PayPal\Api\Amount())
    ->setTotal($token)
    ->setCurrency('EUR')
    ->setDetails($details);
$transaction = (new \PayPal\Api\Transaction())
    ->setItemList($list)
    ->setDescription(sprintf('Achat de %g Token sur MON SITE',$token))
    ->setAmount($amount);
$payment->setTransactions([$transaction]);
$payment->setIntent('sale');
$payment->create($context);
echo json_encode(array('id' => $payment->getId()));
?>

paypal_execute.php

<?php

require __DIR__ .'/vendor/autoload.php';
$id = 'MON_ID_PAYPAL';
$secret = 'MON_SECRET';
$context = new PayPal\Rest\ApiContext(
    new PayPal\Auth\OAuthTokenCredential(
        $id, // PayPal API Account ID
        $secret // PayPal API Account Secret
    )
);
$payment = \PayPal\Api\Payment::get($_POST['paymentID'], $context);
$execution = (new \PayPal\Api\PaymentExecution())
    ->setPayerId($_POST['payerID'])
    ->setTransactions($payment->getTransactions());
$payment->execute($execution, $this->context);
if($payment->getState() == 'approved'){
    echo json_encode(array('status' => 'success'));
}
else{
    echo json_encode(array('status' => 'error', 'message' => "error"));
}

?>

Lorsque je vais sur paypal_form.php j'ai bien le bouton Paypal qui apparaît, je clique, une fenêtre s'ouvre et la j'ai le droit à un chargement infini ... Si je lance la console sur la fenêtre de Paypal j'ai cette erreur :
Error: Parent component window is on a different domain - expected https://www.sandbox.paypal.com - can not retrieve props

Merci d'avance pour vos réponses, en éspérant trouver une solution.

Aucune réponse