web-dev-qa-db-ja.com

ストライプエラー400-ストライプトークンを複数回使用することはできません

ストライプダッシュボードでエラーコード400を受け取り続けます。 imが同じストライプトークンを複数回使用しているようで、これによりエラーが発生します。以下は私のコードです。

Js:

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

    var handler = StripeCheckout.configure({
        key: 'pk_test_******************',
        image: '/img/documentation/checkout/marketplace.png',
        token: function(token) {
          /*$.post("php/charge.php",{stripeToken:token.id},function(data,status){
              console.log("Data: "+ data+"\nStatus: "+status);
          });*/
          alert(token.used);//alerts false
          $.post("php/charge.php",{stripeToken:token.id});
          alert(token.used);// still alerts false
        }
      });

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

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

PHP:

<?php
  require_once('config.php');

  $token  = $_POST['stripeToken'];

  $customer = \Stripe\Customer::create(array(
      'email' => '[email protected]',
      'card'  => $token
  ));

  //try {
    $charge = \Stripe\Charge::create(array(
      "amount" => 1000, // amount in cents, again
      "currency" => "cad",
      "source" => $token,
      "description" => "Example charge")
    );
    //}catch(\Stripe\Error\Card $e) {
      // The card has been declined
    //}
?>

なぜ顧客に請求できないのか、誰にも教えてもらえますか?キーを複数回使用するにはどうすればよいですか?

20
alaboudi

トークンを2回使用します。

まず、顧客を作成するとき。第二に、カードを充電しようとするとき。

代わりに、顧客を作成し、$customer->idチャージ作成時にStripeに:

$charge = \Stripe\Charge::create(array(
  "amount" => 1000, // amount in cents, again
  "currency" => "cad",
  "customer" => $customer->id,
  "description" => "Example charge")
);
48
Tushar

何度も請求するには、顧客を作成する必要があります。

1)クレジットカードトークンを顧客に追加し、顧客を作成します

2)ユーザーIDを使用してユーザーに請求する

if (isset($_POST['stripeToken'])){

        $token = $_POST['stripeToken'];

// Create a Customer
$customer = \Stripe\Customer::create(array(
  "source" => $token,
  "description" => "Example customer")
);

// Charge the Customer instead of the card
\Stripe\Charge::create(array(
  "amount" => 1000, # amount in cents, again
  "currency" => "usd",
  "customer" => $customer->id)
);
    }

詳細なヘルプをご覧ください: https://stripe.com/docs/tutorials/charges

4
Ali Zain