gpt4 book ai didi

php - 金额参数是必需的 - Omnipay paypal with laravel

转载 作者:太空宇宙 更新时间:2023-11-03 15:53:18 27 4
gpt4 key购买 nike

您好,我一直在尝试使用 Omnipay paypal 和 Laravel 4 将 paypal 与我网站的购物车集成。我主要使用 THIS到目前为止的教程。

我仍处于初始阶段,但遇到了障碍。当我尝试结帐时,我收到一条错误消息,提示“需要金额参数”。

我有点菜鸟,所以我可能会做一些愚蠢的事情,但如果我对金额进行硬编码(即:“价格”=> 25.00,),那么它就会正常工作。描述和货币也都从数据库中提取并发送到 Paypal 页面。我在这里发现的问题似乎没有人将数据动态地拉到他们的 Controller ,所以也许我做错了什么?

这是我的 Controller 的相关部分:

<?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()}}

表单可能看起来有点困惑,但在我提交之前,表单上的所有值都显示正常。

感谢您的帮助。

最佳答案

如果你仔细查看教程,你会看到有一个 index() 函数负责生成表单。以及处理表单提交的 postPayment() 函数。

在 index() 函数中(在教程中)

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', 'PaymentController@postPayment'); 这个路由应该在你的 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') );

仅供引用,

you are repeatedly use Product::find($productID) which is not a good practice, If you get that product into a Object variable then, You can use that object without repeating Product::find($productID).

为此,您可以将对象从 Controller 传递给 Blade View ,

喜欢,

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

在 Blade View 中,

....

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

....

..等等

关于php - 金额参数是必需的 - Omnipay paypal with laravel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28259318/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com