首页 文章

STRIPE:如何使此结帐表单生效

提问于
浏览
0

让Stripe为我工作时我遇到了一些麻烦,并且用谷歌搜索了一些例子,但似乎无法让它收费 .

我正在使用Stripes,简单的结帐表单,它肯定会生成条带令牌,因为我可以在条带日志中看到它 . 然后,我将表单执行charge.php,它接收条带令牌作为POST变量,这是def工作,因为我可以回显令牌 .

问题是它什么都不做,不会抛出任何错误,也不会对卡充电 .

代码如下:Checkout页面:

<form action="charge.php" method="POST">
  <script
    src="https://checkout.stripe.com/checkout.js" class="stripe-button"
    data-key="test key"
    data-amount="2000"
    data-name="Demo Site"
    data-description="2 widgets ($20.00)"
    data-image="/128x128.png">
  </script>
</form>

收费的Actual PHP脚本:charge.php

<?php

require('Absolute Link to site /lib/Stripe.php');
// Set your secret key: remember to change this to your live secret key in production
// See your keys here https://dashboard.stripe.com/account
Stripe::setApiKey("test key");

// Get the credit card details submitted by the form
$token = $_POST['stripeToken'];
// Create the charge on Stripe's servers - this will charge the user's card
try {
    $charge = Stripe_Charge::create(array(
        "amount" => 1000, // amount in cents, again
        "currency" => "aud",
        "card" => $token,
        "description" => "VIP Basic"
    ));
} catch(Stripe_CardError $e) {
    // The card has been declined
}

?>

我通过电子邮件发送了条带支持,他们说 charge.php 代码在他们的结尾工作,并检查是否正确调用了lib . error_log中没有任何警告和任何内容 .

有没有人有任何想法?它应该是世界上最简单的东西,我把它的头发撕掉,只是看不到它 .

2 回答

  • 0

    问题可能是卡不接受审计,你应该尝试签证或万事达卡 . 如果您在仪表板中看到生成的令牌,请尝试以下ajax方法 . 包括stripe.js和jquery .

    <input type="text" id="card_number">
     <input type="text" id="cvc">
     <input type="text" id="ex_month">
     <input type="text" id="ex_year">
     <button id="paynow">Pay Now</button>   
    
    $('#paynow').click(function(){
    Stripe.setPublishableKey('pk_test_Bwg5tfiOULnNK8DvS60zJ2Sm');
        Stripe.card.createToken({
          number: $("#card_number").val(),
          cvc: $("#cvc").val(),
          exp_month: $("#ex_month")val(),
          exp_year: $("#ex_year").val()
        }, stripeResponseHandler);
    function stripeResponseHandler(status, error){
      if(response.error){
          alert(response.error.message);
      }
      else {
       $.ajax({
         url: 'charge.php',
         type:'POST',
         data:{token:response.id},
         cache:false,
         success: function(data){
              alert(data);
         }
       });
      }
    }
    });
    
  • 0

    您的代码看起来是正确的并且应该有效,因此问题很可能是卡被拒绝,但您没有处理错误 . 在此部分添加一些代码:

    } catch(Stripe_CardError $e) {
        // The card has been declined
    }
    

    回应错误等,你可能会发现问题 .

相关问题