2

我已经实施了 Stripe 付款,但问题是我不断收到此错误:

{状态:500,错误:“缺少必需的参数:数量。”}

从代码中可以看出,我有所有的参数,但我仍然不知道为什么会出现这个错误。这是我正在使用的代码:

public function process(){
    try {
        Stripe::setApiKey('sk_text_key');
        $charge = Stripe_Charge::create(array(
                     "amount" => 2000,
                    "currency" => "USD",
                    "card" => $this->input->post('access_token'),
                    "description" => "Stripe Payment"
        ));
    } catch (Stripe_InvalidRequestError $e) {
        // Invalid parameters were supplied to Stripe's API
        echo json_encode(array('status' => 500, 'error' => $e->getMessage()));
        exit();
    }
}   

这是我用来提交表单的 javascript:

$(function() {
    var $form = $('#payment-form');
    $form.submit(function(event) {
        $form.find('.submit').prop('disabled', true);
        $form.find('.submit').val('Please wait...');

        Stripe.card.createToken($form, stripeResponseHandler);
        return false;
    });
});

function stripeResponseHandler(status, response) 
{
    if (response.error) {
        alert(response.error.message);
    } 
    else {
        $.ajax({
            url: '<?php echo base_url('payment/process');?>',
            data: {access_token: response.id},
            type: 'POST',
            dataType: 'JSON',
            success: function(response){
                console.log(response);
                if(response.success)
                window.location.href="<?php echo base_url('booking/thankyou'); ?>";
            },
            error: function(error){
                console.log(error);
            }
        });
    }
}
4

1 回答 1

5

我看到您使用的是旧代码,在较新版本的 Stripe 中,您可以Charge这样做:

// Token is created using Stripe.js or Checkout!
// Get the payment token ID submitted by the form:
$token = $_POST['stripeToken'];

$charge = \Stripe\Charge::create(array(
  "amount" => 2000,
  "currency" => "usd",
  "description" => "Stripe Payment",
  "source" => $token,
));

在此处查看更多示例。

于 2017-08-31T08:06:23.177 回答