在PHP中使用Stripe Checkout(新版本)的信用卡付款示例


介绍

由于可以将信用卡支付引入网站的" Stripe Checkout"版本已更新,因此,我将编写一次一次性信用卡支付示例。

示例代码环境

CentOS 8
php 7.2
stripe-php 7.6

stripe-php由composer安装。

1
composer require stripe/stripe-php

付款页面样本

通过将金额,产品名称,重定向URL等定义为要传递到Stripe付款表的信息来创建会话。
如果将{CHECKOUT_SESSION_ID}添加到重定向目标URL的参数中,它将在重定向时自动转换为session_id。

Payment.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<?php
require './vendor/autoload.php';

// ご自身のAPIキーを入力
$secretKey = 'sk_test_xxxxxxxx';
$publicKey = 'pk_test_xxxxxxxx';

$stripe = new \Stripe\StripeClient($secretKey);

$session = $stripe->checkout->sessions->create([
    'payment_method_types' => ['card'],
    'line_items' => [[
        'price_data' => [
            'currency' => 'JPY',
            'product_data' => [
                'name' => '商品名',
            ],
            'unit_amount' => 100,
        ],
        'quantity' => 1,
    ]],
    'mode' => 'payment',
    // ご自身のサイトURLを入力
    'success_url' => 'https://192.168.56.101/success.php?session_id={CHECKOUT_SESSION_ID}',
    'cancel_url' => 'https://192.168.56.101/success.php?session_id={CHECKOUT_SESSION_ID}',
]);
?>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
支払いページ
<script src="https://js.stripe.com/v3/"></script>
</head>

<body>
<button id="checkout-button">支払う</button>
<script type="text/javascript">
  var stripe = Stripe('<?php echo $publicKey;?>');

  var checkoutButton = document.getElementById('checkout-button');
  checkoutButton.addEventListener('click', function() {
    stripe.redirectToCheckout({sessionId: "<?php echo $session->id;?>"})
    .then(function (result) {
      if (result.error) {
        // var displayError = document.getElementById('error-message');
        // displayError.textContent = result.error.message;
      }
    });
  });
</script>
</body>
</html>

打开

付款页面,然后按"付款"按钮转到Stripe的付款页面。
card.PNG
如果输入您的信用卡信息并付款,您将被重定向到success_url。

完成页示例

success_url的success.php文件。使用GET中传递的session_id来检查付款是否完成。

success.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<?php
require './vendor/autoload.php';

// ご自身のAPIキーを入力
$secretKey = 'sk_test_xxxxxxxx';

$stripe = new \Stripe\StripeClient($secretKey);

$session = $stripe->checkout->sessions->retrieve($_GET['session_id'], []);
?>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
完了ページ
<script src="https://js.stripe.com/v3/"></script>
</head>

<body>
<?php
if ($session->payment_status === 'paid') {
    echo '<p>支払いが完了しました</p>';
}
if ($session->payment_status === 'unpaid') {
    echo '<p><center>[wp_ad_camp_2]</center></p><p>支払いが完了していません</p>';
}
?>
</body>
</html>

付款完成后,显示"付款完成"。如果取消付款,将显示"付款未完成"。

检查

条纹仪表板以确保付款已完成。

与旧版相比有什么变化

现在始终创建客户

现在总是在付款完成后创建客户。由于卡信息被保留,因此您将能够从仪表板上制作其他账单。您可以从仪表板上删除客户。

与Apple Pay和Google Pay

兼容

您可以在仪表板设置中打开和关闭Apple Pay和Google Pay。

支持3D Secure

它似乎支持3D Secure进行个人身份验证。

弹出窗口变为页面过渡

对于

旧版,当您按下付款按钮时,会打开一个弹出窗口,但是现在您可以通过页面转换来付款。

您现在可以更改付款表格

的颜色

您可以创建与您自己的网站融合的设计。


有关更多详细信息,请参见Stripe Checkout文档。

仅此而已。