Stripe SCA IPN: когда считается, что платеж завершен? - PullRequest
0 голосов
/ 09 января 2020

Я пытаюсь настроить полосу на своем сайте с помощью PHP, но я теряюсь из-за разной документации, которую я нахожу.

Я успешно создал кнопку оплаты со следующим кодом

include(ROOT.'/files/lib/stripe-php-7.16.0/init.php');
\Stripe\Stripe::setApiKey('sk_test_XXXXXXX');

// ___________

$session = \Stripe\Checkout\Session::create([
  'payment_intent_data' => [
    'setup_future_usage' => 'on_session',
  ],    
  'payment_method_types' => ['card'],
  'line_items' => [[
    'name' => 'Acheter des chaussures',
    'description' => 'Acheter des chaussures sur le site web',
    'images' => ['https://i.imgur.com/J4o8Fmt.png'],
    'amount' => 600,
    'currency' => 'eur',
    'quantity' => 1,
  ],
],
  'success_url' => 'https://www.my-site.com/store/test',
  'cancel_url' => 'https://www.my-site.com/store/test',
  'mode' => 'payment',
  'customer' => $customer_stripe_id,
  'client_reference_id' => '123456',
]);

А затем:

<span id="payment" class="btn btn-info">Tester</span>

<script src="https://js.stripe.com/v3/"></script>
<script>
    $('#payment').on('click', function(){
        var stripe = Stripe('pk_test_YYYYYYYY');
        stripe.redirectToCheckout({
          sessionId: '<?= $session->id ?>',
        }).then(function (result) {
          alert(result.error.message);
        });
    });
</script>

Но когда я плачу, я получаю два IPN: один payment_intent.succeeded и один charge.succeeded .

enter image description here

enter image description here

Дело в том, что я вообще не знаю разницы и полезность двух, потому что загрузка IPN не содержит client_reference_id (который я должен восстановить, чтобы проверить заказ в php), но payment_intent.succeeded не содержит не все данные.

I Хотелось бы узнать о полезности того и другого, узнать, нет ли ошибки в моем способе управления ipn, и особенно о том, на каком IPN я могу считать, что платеж завершен, и что я могу отправить продукт клиенту.

Спасибо!

...