搜索PHP示例新条纹“ checkout”集成stripe-php - php

我必须更改我的代码以从旧的条纹签出迁移到新的签出吗?我对他们的措辞感到困惑。我发现的大多数示例都是古老的(2015-1016 ...是“古老的方式”)
由于SCA,Stripe希望我升级到新的结帐

这是我的工作条纹结帐,我有一个打开结帐框的按钮

<script>
var handler = StripeCheckout.configure({
  key: '<? echo $stripe_p_key;?>',
  image: 'https://stripe.com/img/documentation/checkout/marketplace.png',
  locale: 'auto',
  token: function(token) {
    var $form = $('#f2');
    var token = token.id;
    showloader('loaderid');
        $form.prepend($('<input type="hidden" style="display:none" name="stripeToken">').val(token));
        $form.prepend($('<input type="hidden" style="display:none" name="cc_currency">').val('<? echo $dialog_waehrung_kreditkarte;?>'));
      $form.get(0).submit();  

  }
});

document.getElementById('customButton').addEventListener('click', function(e) {
  // Open Checkout with further options:
  handler.open({
    name: '',
    description: '<? echo $dialog_titel;?>',
    zipCode: true,
    currency: '<? echo $dialog_waehrung_kreditkarte;?>',
    email: '<? echo $dialog_email_kreditkarte;?>',
    amount: <? echo $dialog_preis_kreditkarte;?>
  });
  e.preventDefault();
});

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

然后我在下一步为卡充值

    Stripe::setApiKey($params['private_live_key']);
    $pubkey = $params['public_live_key'];
    try {
        $charge = Stripe_Charge::create(array(       
              "amount" => $amount_cents,
              "currency" => $_SESSION['cc_currency'],
              "source" => $_SESSION['stripeToken'],
              "description" => $description,
        "expand" =>array("balance_transaction")
        )             
        );

如果没有错误,我将客户转发到他的下载页面。

我想要一个非常简单的方法,我不需要客户,账单,支票付款或其他任何费用。我不希望客户处理此类问题。付款和再见...

Stripe说我必须更改此过程。
但是他们的例子让我感到困惑:
https://stripe.com/docs/payments/checkout/migration#api-products
(我从来没有创建过一个客户,例如,为什么?)

有人可以告诉我要迁移到新的Checkout版本需要做什么吗?

参考方案

基本设置(您可以从此处进行设置)

后端:

更新您的Stripe PHP Library。

按照以下格式从\ Stripe \ Charge更改为\ Stripe \ PaymentIntent:

$charge = \Stripe\Charge::create([
    'source' => $token_id,
    'amount' => $amount,
    'currency' => 'usd',
]);
$intent = \Stripe\PaymentIntent::create([
        'payment_method_data' => [
            'type' => 'card',
            'card' => ['token' => $token_id],
        ],
        'amount' => $amount,
        'currency' => 'usd',
        'confirmation_method' => 'manual',
        'confirm' => true,
    ]);

前端:

更新您的Stripe JS以使用v3。

<script src='https://js.stripe.com/v3/' type='text/javascript'></script>

更新处理您付款表格的JS代码:

document.addEventListener("DOMContentLoaded", function(event) {
    var stripe = Stripe('xxxxxxxxxx'); // test publishable API key
    var elements = stripe.elements();

    var card = elements.create('card');
    // Add an instance of the card UI component into the `card-element` <div>
    card.mount('#card-element');

    // Handle events and errors
    card.addEventListener('change', function(event) {
      var displayError = document.getElementById('card-errors');
      if (event.error) {
        displayError.textContent = event.error.message;
      } else {
        displayError.textContent = '';
      }
    });

    function stripeTokenHandler(token) {
      // Insert the token ID into the form so it gets submitted to the server
      var form = document.getElementById('payment-form');
      var hiddenInput = document.createElement('input');
      hiddenInput.setAttribute('type', 'hidden');
      hiddenInput.setAttribute('name', 'stripeToken');
      hiddenInput.setAttribute('value', token.id);
      form.appendChild(hiddenInput);

      // Submit the form
      form.submit();
    }

    function createToken() {
      stripe.createToken(card).then(function(result) {
        if (result.error) {
          // Inform the user if there was an error
          var errorElement = document.getElementById('card-errors');
          errorElement.textContent = result.error.message;
        } else {
          // Send the token to your server
          stripeTokenHandler(result.token);
        }
      });
    };

    // Create a token when the form is submitted.
    var form = document.getElementById('payment-form');
    form.addEventListener('submit', function(e) {
      e.preventDefault();
      createToken();
    });
});

编辑您的HTML表单:

    <form action="process_payment.php" method="post" id="payment-form">
          <div class="form-row">
            <label for="card-element">
              Credit or debit card
            </label>
            <div id="card-element"><!-- Your form goes here --></div>                  
            </div>        
            <!-- Used to display form errors -->
            <div id="card-errors" role="alert"></div>
          </div>
        <button type="submit">Pay</button>
    </form>

如何从php中获取datatables jQuery插件的json数据 - php

我是PHP的新手,正在尝试使用Datatables jQuery插件。我知道我必须从.php文件中获取数据,然后在数据表中使用它,但是我似乎无法通过ajax将其传递给数据表。我设法从数据库中获取数据,并对其进行json编码,但是后来我不知道如何在我的index.php文件中调用它,并在其中显示它。我究竟做错了什么?这是我的代码:HTML(已编辑): <…

PHP:将数组值加在一起 - php

我相信这比标题听起来要难一些,但我可能完全错了。我有一个像这样的数组:[["londrina",15],["cascavel",34],["londrina",23],['tiradentes',34],['tiradentes',21]] 我希望能够采用通用…

PHP JQuery复选框 - php

我有以下片段。 var myData = { video: $("input[name='video[]']:checked").serialize(), sinopse: $("#sinopse").val(), dia: $("#dia").val(), quem: $(&#…

PHP:对数组排序 - php

请如何排序以下数组Array ( 'ben' => 1.0, 'ken' => 2.0, 'sam' => 1.5 ) 至Array ( 'ken' => 2.0, 'sam' => 1.5, 'ben' =&…

PHP:不推荐使用password_hash的'salt'选项 - php

我正在使用密码哈希进行注册。我需要手动创建Salt,以下是我使用的代码:$options = [ 'cost' => 11, 'salt' => mcrypt_create_iv(22, MCRYPT_DEV_URANDOM) ]; $password = password_hash( $this->…