stripe checkout custom button not charging

前端 未结 2 1970
一个人的身影
一个人的身影 2021-01-02 21:22

I am trying to get Stripe\'s Checkout Custom Button to charge a credit card but all it does is minimize after I enter the credit card details. I am using the code found in t

相关标签:
2条回答
  • 2021-01-02 22:03

    Finally got it to work. Had to change a bunch of it. Here is the code:

    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>";
    ?>
    

    I wish Stripe's documentation was more straightforward but this code handles the charge and it logs it on your dashboard.

    0 讨论(0)
  • 2021-01-02 22:04

    @BlueSix is right, why do you have:

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

    Just because the value is hidden, does not mean it cannot be edited by the end user.

    It would be much better to set $amount = $price directly, passing the variable through your application backend.

    0 讨论(0)
提交回复
热议问题