2016-06-03 5 views
0

Ich kann absolut nichts online finden, um mir zu helfen, Stripe mit Laravel 5.2 zu integrieren. Es ist schon eine Herausforderung, diesen Rahmen zu lernen, weil so viele Veraltete zwischen den Versionen :(Single Charge mit StripeJS mit Laravel 5.2

Wie auch immer, hier ist was ich arbeite mit

JS-Datei Eingang zu erfassen

$(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(); 
    } 
}; 

sobald das Formular erfolgen ich Strecke der Benutzer {{ route('success') }} über das action="" Attribut in Form.

Route::any('/success', ['as' => 'success', 'uses' =>'[email protected]']); 

hier ist mein Controller mit Code durch Streifen versehen ... wie Sie es nicht

arbeiten sehen
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!'; 
     } 
    } 
} 

Ich suche die StripeJS documentation statt Kassierer bei Verwendung. Derzeit suche ich auf diesem Fehler

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

Und das ist, wo die Dokumentation endet. Irgendeine Hilfe? Ich würde es vorziehen, Kasse zu verwenden, aber ich kann keine Dokumentation für "nicht-Abonnement" basierte Verwendung finden und die Laravel-Website ist nicht viel Hilfe.

+0

Haben Sie eine Stripe_Customer-Klasse? –

+0

Dieser Fehler sucht nach einem Controller, existiert Stripe_Controller an diesem Ort? –

+0

@AchrafKhouadja die Klasse existiert nicht, da es keine Tutorials gibt, die mir sagen, was ich da hineinlegen soll. Die StripeJS Docs stoppen dort –

Antwort

1

Kevins Antwort ist in Ordnung, jedenfalls wenn man auf noch intrested sind, was mit Ihrem Code falsch ist

hier wird die Lösung

Versuchen Sie diesen Code in der Steuerung

Zunächst alles, was Sie brauchen hinzufügen, um dieses Paket

composer require stripe/stripe-php 

versuchen Dann

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!'; 
     } 
    } 
} 

Wenn dies einen Fehler in Bezug auf die Kunden-ID auslöst, können Sie zuerst den Kunden erstellen und dann

2

Ich empfehle Cashier. In Ihrem Komponisten erfordern:

"laravel/cashier": "~6.0" 

Sie müssen an die Anbieter in Ihrer config/app.php auch hinzufügen:

Laravel\Cashier\CashierServiceProvider::class 

Unter config/Dienste fügen Sie Ihre Streifen API-Schlüssel und das ist über es für die Einrichtung. Streifen für ein einzelnes Produkt zu erwerben zu integrieren verwenden Sie einfach den Streifen Kauf-Taste:

{!! 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() !!} 

Alternativ können Sie einen Wagen integrieren und den gesamten Kauf Streifen von dort passieren, aber das ist etwas mehr beteiligt. Ich dies sehr empfehlen, es hat mir geholfen, es heraus alles für mein Geschäft aus: https://leanpub.com/easyecommerce

Einmal aus dem Formular Route, übergeben Sie an eine Controller-Methode, wo Sie die Anforderung greifen:

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

Sie var_dump könnte Sehen Sie sich die verschiedenen Daten an, die der Stripe-Button passiert.

+0

Aber wie "belasten" Sie die Karte auf dem Backend? Von dem, was ich mit dieser Methode verstehe, ist, dass es ein Token generiert, aber Sie müssen etwas damit tun –

+0

Ich habe es herausgefunden. Die '/ checkout'-Seite muss den PHP-Code von hier enthalten https://stripe.com/docs/charges –

+0

Ja, sie verarbeiten auf ihrem Ende, aber Sie können auch alle Daten in Ihrem Controller als eine Anfrage –