【问题标题】:STRIPE: How Do I get this checkout form to work条纹:我如何让这个结帐表格工作
【发布时间】:2015-02-15 08:59:00
【问题描述】:

我在让 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 代码在他们的最后工作并检查库是否被正确调用。 error_log 中没有任何警告,也没有任何内容。

有人有什么想法吗?它应该是世界上最简单的东西,我在上面扯头发却看不到它。

【问题讨论】:

  • 您是否尝试过在您的服务器上使用 Fiddler 或 Wireshark 之类的东西来查看该库是否实际上正在向 Stripe 的服务器发出 REST 请求?由于一些奇怪的配置问题,它甚至没有尝试过。
  • 再次检查到站点/lib/Stripe.php 的绝对链接是否正确,如果charge 与lib 在同一个文件夹中,则应该是./lib/Stripe.php

标签: php stripe-payments


【解决方案1】:

问题可能是卡不接受aud,你应该试试visa或mastercard。如果您在仪表板中看到生成的令牌,请尝试以下 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);
     }
   });
  }
}
});

【讨论】:

    【解决方案2】:

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

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

    回显错误等,您可能会发现问题。

    【讨论】:

      猜你喜欢
      • 2021-01-08
      • 1970-01-01
      • 2016-06-01
      • 2017-12-05
      • 2021-08-01
      • 2015-11-05
      • 2017-01-22
      • 2020-12-13
      • 2020-12-13
      相关资源
      最近更新 更多