2015-02-01 4 views
1

Привет, я пытаюсь интегрировать Paypal с корзиной покупок для своего сайта с использованием Omnipay paypal с Laravel 4. В основном я использовал THIS учебник.Требуется параметр количества - Omnipay paypal с laravel

Я все еще на начальных этапах, но я попал в ловушку. Когда я пытаюсь проверить, я получаю сообщение об ошибке «Требуется параметр количества».

Я немного нуб, поэтому, возможно, я делаю что-то глупое, но если я запишусь в сумме (т.е.: «цена» => 25.00,), то он работает так, как должен. Декрипция и валюта также вытаскиваются из базы данных и отправляются на штрафную страницу в PayPal. Вопросы, которые я нашел здесь, похоже, не имеют людей, которые динамически переносят данные на свой контроллер, поэтому, возможно, я что-то делаю неправильно?

Вот соответствующая часть моего контроллера:

<?php 
use Omnipay\Omnipay; 

class PaymentController extends Controller { 

    public function postPayment() { 

     $params = array( 
      'cancelUrl' => 'http://localhost/cancel_order', 
      'returnUrl' => 'http://localhost/payment_success', 
      'name' => Input::get('name'), 
      'description' => Input::get('description'), 
      'price' => Input::get('price'), 
      'currency' => Input::get('currency')); 

      Session::put('params', $params); 

      Session::save(); 

      $gateway = Omnipay::create('PayPal_Express'); 

      $gateway->setUsername('my username'); 

      $gateway->setPassword('my pass'); 

      $gateway->setSignature('my signature'); 

      $gateway->setTestMode(true); 



      $response = $gateway->purchase($params)->send(); 

Вот моя кнопка Корзина Оформить заказ:

  {{ Form::open([ 'url' => 'pay_via_paypal', 'method' => 'post' ]) }} 
      {{Form::hidden('product',Product::find($productID)->name)}} 
      {{Form::hidden('description',Product::find($productID)->description)}} 
      {{Form::hidden('amount',Product::find($productID)->price)}} 
      {{Form::hidden('currency',Product::find($productID)->currency)}} 
      {{Form::submit('CHECKOUT')}} 
      {{Form::close()}} 

форма может выглядеть немного запутанным, но значения показывают, что все до штрафа на форме прежде чем я подчинюсь.

Спасибо за любую помощь.

ответ

3

Если вы внимательно изучите учебник, вы увидите, что есть функция index(), которая отвечает за создание формы. и функцию postPayment(), которая обрабатывает форму submit.

В функции индекса() (в учебнике)

в hello.blade.php есть параметр, называемый price

<input type="hidden" value="{{ $price }}" name="price" /> 

в вашем случае

{{ Form::hidden('amount',Product::find($productID)->price) }} 

следует заменить

{{ Form::hidden('price',Product::find($productID)->price) }} 

тогда, когда вы заполните форму он направит к функции postPayment(), в здесь, так Route::post('pay_via_paypal', '[email protected]'); этот маршрут должен быть в вашем route файле

в postPayment() функции,

$params = array( 
     'cancelUrl' => 'http://localhost/cancel_order', 
     'returnUrl' => 'http://localhost/payment_success', 
     'name' => Input::get('name'), 
     'description' => Input::get('description'), 
     // you dont need this price parameter ('price' => Input::get('price'),) 
     'amount' => Input::get('price'), // add amount parameter which is required in paypal. 
     'currency' => Input::get('currency')); 

только за нотой ,

Вы повторно пользуетесь Product::find($productID), который не является хорошей практикой. Если вы получите этот продукт в переменную Object, вы можете использовать этот объект, не повторяя Product::find($productID).

делать, что вы можете передать object к виду лопатки, от контроллера,

как,

$product = Product::find($productId); 
return View::make('hello')->with(Array("product" => $product)); 

в представлении лезвия,

.... 

{{ Form::hidden('product',$product->name) }} 
{{ Form::hidden('description',$product->description) }} 

.... 

.. и так далее

+0

Большое спасибо! Я уверен, что это была одна перестановка, которую я не пробовал! Спасибо за другую заметку. Я попытаюсь реализовать это. –

+0

oky :). рад помочь вам. счастливое кодирование :) –

Смежные вопросы