首页 文章

条纹结帐自定义按钮不充电

提问于
浏览
6

我试图让Stripe的Checkout自定义按钮为信用卡收费,但在输入信用卡详细信息后,它所做的就是最小化 . 我正在使用文档中的代码但我无法使其工作 . 简单的按钮很容易使用,我认为它就像定制那个简单,但它是非常不同的 .

这是代码:

Payment Page

<form action="charge.php" method="post">
            <script src="https://checkout.stripe.com/checkout.js"></script>
            <input type="submit" value="Pay with card" id="customButton"/>
            <?php require_once('./config.php'); ?>
                <script>
                var handler = StripeCheckout.configure({
                    key: '<?php echo $stripe['publishable_key']; ?>',
                    image: 'favicon.png',
                    token: function(token, args) {
                    // Use the token to create the charge with a server-side script.
                    // You can access the token ID with `token.id`
                    }
                });

                document.getElementById('customButton').addEventListener('click', function(e) {
                    // Open Checkout with further options
                    handler.open({
                    name: 'Imprintnation',      
                    description: 'Decals',
                    amount: <?php echo $stripeTotal; ?>

                });
                    e.preventDefault();
                });
                </script>
                </form>

Charge Page(charge.php)

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

$token  = $_POST['stripeToken'];

$customer = Stripe_Customer::create(array(
  'email' => 'customer@example.com',
  'card'  => $token
));

$charge = Stripe_Charge::create(array(
  'customer' => $customer->id,
  'amount'   => 5000,
  'currency' => 'usd'
));

echo '<h1>Successfully charged $5!</h1>';
?>

Configuration Page(config.php)

<?php
require_once('./lib/Stripe.php');

$stripe = array(
secret_key      => 'sk_test_************************',
publishable_key => 'pk_test_************************'
);

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

我在这里想念的是什么?我甚至无法获取它来检索令牌 .

How can I retrieve a token and charge a card?

2 回答

  • 12

    终于搞定了 . 不得不改变一堆 . 这是代码:

    Payment page

    <form action="charge.php" method="post">
    <script src="https://checkout.stripe.com/checkout.js"></script>
    <script src="http://code.jquery.com/jquery-latest.min.js"></script> 
    
    <button id="customButton">Pay with Card</button>
    <style>
    #customButton{
    width:300px;
    height:50px;
    background-color:orange;
    color:white;
    border:2px solid green;
    }
    </style>
     <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:         '<?php echo $stripe['publishable_key']; ?>',
     address:     false,
     amount:      '<?php echo $price; ?>',
     currency:    'usd',
     name:        'test',
     description: '<?php echo $desc; ?>',
     panelLabel:  'Checkout',
     token:       token
     });
    
     return false;
     });
     </script>
     <input type="hidden" name="desc" value="<?php echo $desc; ?>"/>
     <input type="hidden" name="totalPrice" value="<?php echo $price; ?>"/>
    </form>
    

    charge.php

    <?php
    require_once(dirname(__FILE__) . '/config.php');
    
    $token  = $_POST['stripeToken'];
    $amount = $_POST['totalPrice'];
    $desc = $_POST['desc'];
    $percent = "0.01";
    $realAmount = $amount * $percent;
    try {       
    $charge = Stripe_Charge::create(array(
        'card' => $token,
        'amount'   => $amount,  
        'currency' => 'usd',
        'description' => $desc
        ));
    
        } catch(Stripe_CardError $e) {
    // The card has been declined
    }
    
    echo "<h1>Successfully charged $$realAmount!</h1>";
    ?>
    

    我希望Stripe的文档更直接,但是这段代码处理费用并将其记录在仪表板上 .

  • 1

    @BlueSix是对的,为什么你有:

    <input type="hidden" name="totalPrice" value="<?php echo $price; ?>"/>

    仅仅因为隐藏了这个值,并不意味着最终用户无法编辑它 .

    最好直接设置 $amount = $price ,通过应用程序后端传递变量 .

相关问题