如何将条带令牌传递到服务器、创建用户帐户、从信用卡中扣款并将其全部显示在仪表板上

Posted

技术标签:

【中文标题】如何将条带令牌传递到服务器、创建用户帐户、从信用卡中扣款并将其全部显示在仪表板上【英文标题】:How to pass stripe token to the server, create a user account, charge the credit card and have it all show up on the dashboard 【发布时间】:2014-01-05 15:47:13 【问题描述】:

所以我试图在我的服务器上设置条带,但我遇到了问题。 我在我的页面上使用 checkout v2 并且表单运行良好,但是令牌永远不会传递到我的 php 文件。该卡已收费,但信息未显示在仪表板上,但它在日志中。

这是我所拥有的:

<form action="assets/php/slingshot.php" method="POST">
 <button id="customButton">Purchase</button>
 <script>
    $('#customButton').click(function()
    var token = function(res)
    var $input = $('<input type=hidden name=stripeToken />').val(res.id);
    $('form').append($input).submit();
    ;

  StripeCheckout.open(
    key:         'pk_live_*************************',
    address:     true,
    amount:      2500,
    currency:    'usd',
    name:        'test',
    description: 'A bag of test',
    panelLabel:  'Checkout',
    token:       token
  );

  return false;
  );
  </script>
</form>

然后是 slingshot.php:

<?php
require_once(dirname(__FILE__) . '/config.php');

$token = $POST['stripeToken']; //get the creditcard details from the form
try        
$charge = Stripe_Charge::create(array(
        'card' => $token,
        'amount'   => 2500,  //amount in cents
        'currency' => 'usd',
        'description' => 'Get Bacon Direct, LLC'
        ));

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

echo '<h1>Successfully charged $25.00 </h1>';

?>

还有我的 config.php 文件:

<?php
require_once('stripe-php/lib/Stripe.php');
// Set your secret key: remember to change this to your live secret key in production
// See your keys here https://manage.stripe.com/account

$stripe = array(
"secret_key"        => "sk_live_************************************",
"publishable_key"   => "pk_live_************************************"
);

Stripe::setApiKey($stripe['secret_key'] );

?>

你能帮帮我吗?

【问题讨论】:

这救了我的命。你自己想出了这个代码吗?因为这不在他们的文档中 我从网上阅读的他们的文档和论坛中整理出来的 【参考方案1】:

我不完全确定收费是如何进行的,但我相当有信心你没有得到令牌的原因是因为这条线

$token = $POST['stripeToken']; //get the creditcard details from the form

在 PHP 中访问 POST 数据时,全局变量带有下划线前缀,所以你需要这样做

$token = $_POST['stripeToken']; //get the creditcard details from the form

这应该可以解决它。

-- 更新 ---

为了便于阅读,在您的 javascript 中,我将指定输入字段如下

var $input = $('<input type="hidden" name="stripeToken" />').val(res.id);

我还再次查看了 stripe 文档,看起来 card 属性是可选的,就像 customer 一样,但它确实声明必须提供一个。很有可能,它不会抛出错误,因为他们的代码存在问题,无法捕捉到两者都没有提供的可能性。

【讨论】:

亲爱的,非常感谢。我什至没有意识到 $_post 是不正确的。

以上是关于如何将条带令牌传递到服务器、创建用户帐户、从信用卡中扣款并将其全部显示在仪表板上的主要内容,如果未能解决你的问题,请参考以下文章

如何将 Magento 客户授权令牌从 php curl 传递到浏览器?

将 csrf 令牌传递给 Stripe

使用单独的元素创建条带标记

客户未在 wix 网站上输入付款方式的条带错误

如何汇款到特定的条带帐户?

如何通过条带结帐传递帐单详细信息