0

我绝对无法在网上找到任何东西来帮助我将条带与 Laravel 5.2 集成。由于版本之间存在如此多的弃用,因此学习这个框架一直很有挑战性:(

无论如何,这就是我正在使用的

用于捕获输入的 JS 文件

$(function() {
  var $form = $('#payment-form');
  $form.submit(function(event) {
    // Disable the submit button to prevent repeated clicks:
    $form.find('.submit').prop('disabled', true);

    // Request a token from Stripe:
    Stripe.card.createToken($form, stripeResponseHandler);

    // Prevent the form from being submitted:
    return false;
  });
});
function stripeResponseHandler(status, response) {
  // Grab the form:
  var $form = $('#payment-form');
  var CSRF_TOKEN = $('meta[name="csrf-token"]').attr('content');

  if (response.error) { // Problem!

    // Show the errors on the form:
    $form.find('.payment-errors').text(response.error.message);
    $form.find('.submit').prop('disabled', false); // Re-enable submission

  } else { // Token was created!

    // Get the token ID:
    var token = response.id;
    console.log(token);
    // Insert the token ID into the form so it gets submitted to the server:
    $form.append($('<input type="hidden" name="stripeToken">').val(token));

    // Submit the form:
    $form.get(0).submit();
  }
};

表单完成后,我{{ route('success') }}通过action=""表单中的属性将用户路由到。

Route::any('/success', ['as' => 'success', 'uses' =>'ChargeController@pay']);

这是我的控制器,其代码由条带提供...如您所见,它不起作用

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Requests\CreateSongRequest;
use Illuminate\Foundation\Http\FormRequest;
use Billable;
use Input;

class ChargeController extends Controller
{
    public function pay(Request $request){
        if(Input::has('stripeToken')){
            $token = Input::get('stripeToken');
            $amount = 10;
// I cannot use this part even though it is in the stripe documentation
            $customer = Stripe_Customer::create(array(
                                'card' => $token
                            ));
            $charge = Stripe_Charge::create(array(
                        'customer' => $customer->id,
                        'amount' => ($amount*100),
                        'currency' => 'usd',
                        'description' => "test"
                    ));
            echo 'success!';
        }
    }
}

我正在考虑使用StripeJS 文档而不是收银员。目前,我正在查看此错误

Fatal error: Class 'App\Http\Controllers\Stripe_Customer' not found

这就是文档结束的地方。有什么帮助吗?我更喜欢使用收银员,但我找不到任何基于“非订阅”使用的文档,而且 laravel 网站也没有多大帮助。

4

2 回答 2

2

我建议使用收银员。在您的作曲家中要求:

"laravel/cashier": "~6.0"

您还需要在 config/app.php 中添加提供程序:

Laravel\Cashier\CashierServiceProvider::class

在 config/services 添加您的 Stripe API 密钥,这就是设置。要将条带用于单个产品购买,只需集成条带购买按钮:

{!! Form::open(array('url' => '/checkout')) !!}
  {!! Form::hidden('product_id', $product->id) !!}
  <script
     src="https://checkout.stripe.com/checkout.js" class="stripe-button"
     data-key="{{env('STRIPE_API_PUBLIC')}}"
     data-name="your app"
     data-billingAddress=true
     data-shippingAddress=true
     data-label="Buy ${{ $product->price }}"
     data-description="{{ $product->name }}"
     data-amount="{{ $product->priceToCents() }}">
   </script>
{!! Form::close() !!}

或者,您可以集成一个购物车并将整个购买从那里传递到条带,但这稍微复杂一些。我强烈推荐这个,它帮助我为我的商店解决了所有问题:https ://leanpub.com/easyecommerce

一旦从表单路由中,您将传递给您获取请求的控制器方法:

public function index(Request $request)
{ ....

您可以 var_dump 查看条纹按钮传递的各种数据。

于 2016-06-03T19:38:05.700 回答
2

凯文的回答很好,无论如何,如果你仍然对你的代码有什么问题感兴趣

这是解决方案

在控制器中尝试此代码

首先你需要添加这个包

composer require stripe/stripe-php 

然后尝试

class ChargeController extends Controller
{

    public function __construct(){
     \Stripe\Stripe::setApiKey('d8e8fca2dc0f896fd7cb4cb0031ba249');
    }

    public function pay(Request $request){
        if(Input::has('stripeToken')){
            $token = Input::get('stripeToken');
            $amount = 10;

            $charge = \Stripe\Charge::create(array(
                        'customer' => $customer->id,
                        'amount' => ($amount*100),
                        'currency' => 'usd',
                        'description' => "test",
                        'card' => $token
                    ));
            echo 'charged successfuly!';
        }
    }
}

如果这引发与客户 ID 相关的错误,您可以先创建客户然后收费

于 2016-06-04T02:49:17.640 回答