doufei8250 2018-07-08 15:07
浏览 26

Laravel - Stripe.js不显示卡片输入

I'm new in somethings like payments. and i have the proyects for months. I put the code like the documentation but, the card input doesn't appear... I check the html, css, even JS and there does not seem to be any kind of problem.

Please help me.

Using Laravel 5.6 Stripe v3

this is the HTML form:

<form action="{{ route('checkout') }}" method="post" id="checkout-form">
            <div class="row">
                <div class="col-xs-12 col-md-6">
                    <div class="form-group">
                        <input type="text" name="first_name" class="form-control StripeElement StripeElement--empty" placeholder="Name">
                    </div>
                </div>
                <div class="col-xs-12 col-md-6">
                    <div class="form-group">
                        <input type="text" name="last_name" class="form-control StripeElement StripeElement--empty" placeholder="Last Name">
                    </div>
                </div>
            </div>
            <div class="form-group">
                <input type="email" name="email" class="form-control StripeElement StripeElement--empty" placeholder="Email Address">
            </div>
            <div class="form-row">

                <div id="card-element">
                <!-- A Stripe Element will be inserted here. -->
                </div>

                <!-- Used to display form errors. -->
                <div id="card-errors" role="alert"></div>
            </div>

            <button class="btn btn-primary">Submit Payment</button>
            {{ csrf_field() }}
        </form>

this is the JS code:

var stripe = Stripe('sk_test_XXX');


var elements = stripe.elements();

var style = {
    base: {
        color: '#32325d',
        lineHeight: '18px',
        fontFamily: '"Helvetica Neue", Helvetica, sans-serif',
        fontSmoothing: 'antialiased',
        fontSize: '16px',
        '::placeholder': {
        color: '#aab7c4'
   }
  },
  invalid: {
      color: '#fa755a',
      iconColor: '#fa755a'
  }
};

var card = elements.create('card', {style: style});


card.mount('#card-element');


card.addEventListener('change', function(event) {
    var displayError = document.getElementById('card-errors');
    if (event.error) {
        displayError.textContent = event.error.message;
    } else {
        displayError.textContent = '';
    }
});


var form = document.getElementById('payment-form');
form.addEventListener('submit', function(event) {
event.preventDefault();

stripe.createToken(card).then(function(result) {
    if (result.error) {
        var errorElement = document.getElementById('card-errors');
        errorElement.textContent = result.error.message;
    } else {
        stripeTokenHandler(result.token);
    }
  });
});

function stripeTokenHandler(token) {
    var form = document.getElementById('payment-form');
    var hiddenInput = document.createElement('input');
    hiddenInput.setAttribute('type', 'hidden');
    hiddenInput.setAttribute('name', 'stripeToken');
    hiddenInput.setAttribute('value', token.id);
    form.appendChild(hiddenInput);

    form.submit();
   }

And my php code (just in case it has something to do):

public function postCheckout(Request $request) {
    if(!Session::has('cart')) {
        return redirect()->route('shop.shoopingCart');
    }
    $oldCart = Session::get('cart');
    $cart = new Cart($oldCart);
    Stripe::setApiKey('sk_test_XXXX');
    try {
        // $token = $_POST['stripeToken'];
        $charge = Charge::create(array(
           "amount" => $cart->totalPrice * 100,
           "currency" => "usd",
           "source" => $request->input('stripeToken'), // obtained with Stripe.js
        //    "source" => $token,
           "description" => "Test Charge"
        ));
        $order = new Order();
        $order->cart = serialize($cart);
        $order->address = $request->input('address');
        $order->name = $request->input('name');
        $order->payment_id = $charge->id;
        Auth::user()->orders()->save($order);
    }
    catch(\Exception $e) {
        return redirect()->route('checkout')->with('error', $e->getMessage());
    }
    Session::forget('cart');
    return redirect()->route('product.index')->with('success', 'Successfully purchased products!');
}
  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 素材场景中光线烘焙后灯光失效
    • ¥15 请教一下各位,为什么我这个没有实现模拟点击
    • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
    • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
    • ¥20 有关区间dp的问题求解
    • ¥15 多电路系统共用电源的串扰问题
    • ¥15 slam rangenet++配置
    • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
    • ¥15 ubuntu子系统密码忘记
    • ¥15 保护模式-系统加载-段寄存器