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

时间:2014-12-16 22:16:17

标签: php stripe-payments

我一直遇到一些麻烦让Stripe为我工作,并搜索了一些例子,但似乎无法让它收费。

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

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

代码如下: 结帐页面:

<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>

实际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 :(得分: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);
     }
   });
  }
}
});

答案 1 :(得分:0)

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

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

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