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 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
    • ¥20 怎么用dlib库的算法识别小麦病虫害
    • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
    • ¥15 java写代码遇到问题,求帮助
    • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
    • ¥15 有了解d3和topogram.js库的吗?有偿请教
    • ¥100 任意维数的K均值聚类
    • ¥15 stamps做sbas-insar,时序沉降图怎么画
    • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
    • ¥15 关于#Java#的问题,如何解决?