簡體   English   中英

使用 php 集成條帶支付網關

[英]integrate stripe payment gateway using php

根據stripe給出的文檔,我使用了以下代碼

<script src="https://checkout.stripe.com/checkout.js"></script>

<button id="customButton">Purchase</button>

<script>
  var handler = StripeCheckout.configure({
    key: 'key',
    image: '/img/documentation/checkout/marketplace.png',
    locale: 'auto',
    token: function(token) {
      // Use the token to create the charge with a server-side script.
      // You can access the token ID with `token.id`
    }
  });

  $('#customButton').on('click', function(e) {
    // Open Checkout with further options
    handler.open({
      name: 'Demo.',
      description: '2 widgets',
      currency: "gbp",
      amount: 2000
    });
    e.preventDefault();
  });

  // Close Checkout on page navigation
  $(window).on('popstate', function() {
    handler.close();
  });
</script>

但是我也希望實現 billingAddress 和 shippingAddress 以便用戶也可以輸入這兩個地址,所以我添加了這兩行

billingAddress = "true",
shippingAddress = "true",

但它沒有效果,任何人都可以告訴使用這兩個參數的正確方法

我可以幫助您將第 3 版 Stripe api 與 php 集成

安裝條帶依賴首先composer require stripe/stripe-php:6.31

<script src="https://js.stripe.com/v3/"></script>

<?
    require_once('vendor/autoload.php');

\Stripe\Stripe::setApiKey('sk_test_XXXXXXXXXX');

$session = \Stripe\Checkout\Session::create([
  'customer_email' => 'customer@example.com',
  'payment_method_types' => ['card'],
  'line_items' => [[
    'name' => 'T-shirt',
    'description' => 'Comfortable cotton t-shirt',
    'images' => ['https://example.com/t-shirt.png'],
    'amount' => 500,
    'currency' => 'USD',
    'quantity' => 1,
  ]],
  'success_url' => 'https://example.com/success',
  'cancel_url' => 'https://example.com/cancel',
]);


$session_id = $session->id;

if ($session_id) {

    echo "<script>
          var stripe = Stripe('pk_test_XXXXXXXXXXXXX');
          stripe.redirectToCheckout({
          sessionId: '" . $session_id . "'
          }).then(function (result) {
          });
          </script>";

} else {

    echo 'No Session ID!';

}

?>


<!DOCTYPE html>
<html>
<head>
    <title>My Purchase</title>
    <script src="https://js.stripe.com/v3/"></script>

    <script>
        <!--
        function checkout(session_id) {

            var stripe = Stripe('pk_test_XXXXXXXXXXXXXXXXXX');

            stripe.redirectToCheckout({
                sessionId: '<? echo $session_id; ?>'
            }).then(function (result) {
                // If `redirectToCheckout` fails due to a browser or network
                // error, display the localized error message to your customer
                // using `result.error.message`.
            });

            }

        //-->
</script>

</head>
<body>

<form>
    <input type="button" onclick="checkout()" value="Buy Now!" />
</form>

</body>
</html>

要將帳單和送貨地址集合添加到結帳表單,您需要在handler.open()調用中傳遞這些參數:

handler.open({
  name: 'Demo.',
  description: '2 widgets',
  currency: "gbp",
  amount: 2000,
  billingAddress: true,
  shippingAddress: true
});

請注意,帳單地址將自動“嵌入”到 Checkout 返回的令牌中,因為帳單地址是card object 的一個屬性,該令牌表示該對象 不同的字段也將作為stripeBilling* 參數傳遞給表單處理程序。

另一方面,送貨地址僅作為stripeShipping*參數返回。 如果您希望將送貨地址添加到您創建的費用客戶中,您必須自己轉發參數。

(此外,這更像是 JavaScript 問題而不是 PHP 問題。您可能需要考慮更改標簽。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM