条带令牌没有通过

时间:2014-11-23 10:38:30

标签: laravel laravel-4 stripe-payments

我在Laravel 4中构建了一个应用程序并使用this package

我正在关注this tutorial

这是我得到的错误http://postimg.org/image/c4qwjysgp/

我的问题是$token未正确传递或$token为空。

我已经完成了var_dump($token); die();,除了白屏外什么都没有,所以没有数据通过。

这是视图

@extends('layouts.main')

@section('content')

<h1>Your Order</h1>

<h2>{{ $download->name }}</h2>

<p>&pound;{{ ($download->price/100) }}</p>

<form action="" method="POST" id="payment-form" role="form">

<input type="hidden" name="did" value="{{ $download->id }}" />

<div class="payment-errors alert alert-danger" style="display:none;"></div>

<div class="form-group">
<label>
  <span>Card Number</span>
  <input type="text" size="20" data-stripe="number" class="form-control input-lg" />
</label>
</div>

<div class="form-group">
<label>
  <span>CVC</span>
  <input type="text" size="4" data-stripe="cvc" class="form-control input-lg" />
 </label>
</div>

<div class="form-group">  
<label>
  <span>Expires</span>      
</label>
<div class="row">
  <div class="col-lg-1 col-md-1 col-sm-2 col-xs-3">
    <input type="text" size="2" data-stripe="exp-month" class="input-lg" placeholder="MM" />
  </div>  
  <div class="col-lg-1 col-md-1 col-sm-2 col-xs-3">
    <input type="text" size="4" data-stripe="exp-year" class="input-lg" placeholder="YYYY" />
  </div>
</div>
</div>

<div class="form-group">
<button type="submit" class="btn btn-primary btn-lg">Submit Payment</button>
</div>
</form>

@stop

这是路线

Route::post('/buy/{id}', function($id)
{
Stripe::setApiKey(Config::get('laravel-stripe::stripe.api_key'));

$download = Download::find($id);
//stripeToken is form name, injected into form by js
$token = Input::get('stripeToken');
//var_dump($token);


// Charge the card
try {
    $charge = Stripe_Charge::create(array(
        "amount" => $download->price,
        "currency" => "gbp",
        "card" => $token,
        "description" => 'Order: ' . $download->name)
    );


    // If we get this far, we've charged the user successfully
    Session::put('purchased_download_id', $download->id);
    return Redirect::to('confirmed');

   } catch(Stripe_CardError $e) {
    // Payment failed
    return Redirect::to('buy/'.$id)->with('message', 'Your payment has failed.');       
}

});

这是js

$(function () {

console.log('setting up pay form');

$('#payment-form').submit(function(e) {

    var $form = $(this);

    $form.find('.payment-errors').hide();

    $form.find('button').prop('disabled', true);

    Stripe.createToken($form, stripeResponseHandler);

    return false;
});

});

function stripeResponseHandler(status, response) {

var $form = $('#payment-form');

if (response.error) {    
    $form.find('.payment-errors').text(response.error.message).show();
    $form.find('button').prop('disabled', false);
} else {

var token = response.id;       

    $form.append($('<input type="hidden" name="stripeToken" />').val(token));

    $form.get(0).submit();

}

}

这是包中的stripe.php

<?php

return array(
'api_key' => 'sk_test_Izn8gXUKMzGxfMAbdylSTUGO',

'publishable_key' => 'pk_test_t84KN2uCFxZGCXXZAjAvplKG'
);

2 个答案:

答案 0 :(得分:0)

似乎Config :: get可能是错误的。

必须以这种方式写出来。

Stripe::setApiKey(Config::get('stripe.api_key'));

答案 1 :(得分:0)

我弄明白了这个问题。在外部javascript文件的源代码中,&#34; /&#34;在相对路径的开头丢失了。这就是为什么主页的javascript文件渲染正常,但/ buy页面没有呈现javascript文件。