Php 在Laravel 4.2中实现第三方类
我试图在一个Laravel项目中首次集成一个基于中东的支付网关,用于通过借记卡进行支付。我过去在定制PHP项目中使用过这个支付网关,但在将它集成到Laravel项目中时遇到了问题 基本上,这个支付网关文件由一个名为e24PaymentPipe的类和一个resource/resource.cgn组成。这两个文件的简要结构如下: E24付款管 完整类源代码: 实施 在显示付款按钮的页面中,需要添加以下代码:Php 在Laravel 4.2中实现第三方类,php,laravel,laravel-4,payment-gateway,Php,Laravel,Laravel 4,Payment Gateway,我试图在一个Laravel项目中首次集成一个基于中东的支付网关,用于通过借记卡进行支付。我过去在定制PHP项目中使用过这个支付网关,但在将它集成到Laravel项目中时遇到了问题 基本上,这个支付网关文件由一个名为e24PaymentPipe的类和一个resource/resource.cgn组成。这两个文件的简要结构如下: E24付款管 完整类源代码: 实施 在显示付款按钮的页面中,需要添加以下代码: // BENEFIT PAYMENT Code require('e24PaymentP
// BENEFIT PAYMENT Code
require('e24PaymentPipe.inc.php');
date_default_timezone_set('Asia/Bahrain');
$accATM = new e24PaymentPipe;
$accATM->resourcePath = 'resource/';
$accATM->alias = 'SECRET_ALIAS_OF_MERCHANT';
$accATM->action = '1';
$accATM->currency = '048';
$accATM->language = 'USA';
$accATM->amt = 'PRICE_HERE';
$accATM->responseURL = '/response.php';
$accATM->errorURL = '/error_page.php';
$accATM->trackId = date('YmdHis');
$TransVal = $accATM->performPaymentInitialization();
$varRawResponse = $accATM->getRawResponse();
$varPaymentId = $accATM->getPaymentId();
$varPaymentPage = $accATM->getPaymentPage();
$varErrorMsg = $accATM->getErrorMsg();
HTML表单,显示按钮,将用户带到支付网关页面完成借记卡支付,完成后用户将重定向回网站
<!-- Benefit Debit Card Payment Button -->
<form action="<?php echo $varPaymentPage; ?>" method="get" class="pull-left" style="margin-left:20px;">
<input id="PaymentID" name="PaymentID" type="hidden" value="<?php echo $varPaymentId; ?>" />
<input type="submit" class="btn btn-warning btn-lg" value="Debit Card Payment" />
</form>
payment.blade.php
在应用程序根目录中创建e24PaymentPipe 打开composer.json
"classmap": [
"database",
"app/e24PaymentPipe" <-- add this line to classmap
],
我会将付款类添加到特殊文件夹中,比如app文件夹中的payments,或者您喜欢的任何东西 然后将composer中的路径添加到自动加载部分:
"autoload": {
"classmap": [
"app/commands",
"app/controllers",
... etc..
"app/payments"
],
然后跑
composer转储自动加载,因此将加载文件
然后将表单和其余代码添加到相应的类/视图中
在控制器中,当您将管理付款时,我不知道您将使用哪一个
在方法中添加:
$payment=新的E24付款管道
public function payment()
{
$accATM = new e24PaymentPipe;
$accATM->resourcePath = 'resource/';
$accATM->alias = 'SECRET_ALIAS_OF_MERCHANT';
$accATM->action = '1';
$accATM->currency = '048';
$accATM->language = 'USA';
$accATM->amt = 'PRICE_HERE';
$accATM->responseURL = '/response.php';
$accATM->errorURL = '/error_page.php';
$accATM->trackId = date('YmdHis');
$TransVal = $accATM->performPaymentInitialization();
$varRawResponse = $accATM->getRawResponse();
$varPaymentId = $accATM->getPaymentId();
$varPaymentPage = $accATM->getPaymentPage();
$varErrorMsg = $accATM->getErrorMsg();
return View::make('myfolder/payment')->with(... here you will list array of data you will send to the view...);
}
其中myfolder/payment将是myfolder/payment.blade.php文件
编辑:
尝试发送:
View::make('site.payment')->with('accATM',$accATM);
鉴于此,您应该使用以下内容:
签入视图,如果数据已发送:
@if($accATM) ...
我建议您创建一个这样的定制服务提供商
<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
class YourServiceProvider extends ServiceProvider
{
/**
* Register the application services.
*
* @return void
*/
public function register()
{
//
$this->app->bind('YOUR_CUSTOM_CLASS_NAMESPACE_PATH');
}
}
然后在任何地方你都可以使用你的自定义类
$class = new YOUR_CUSTOM_CLASS();//use use to import the class namespace path
需要添加到相应视图文件中的其余代码和表单如何?谈论我的原始帖子的实现部分。@Jazzbot我已经更新了-但这是一个更类似的草稿,你如何使用它,你需要添加适当的数据。。。我刚刚复制/粘贴了您的代码OK,我所做的是:添加了$accATM=新的e24PaymentPipe;在我的控制器函数中,然后返回视图::make'site.payment',compact'acccatm';在site/payment.blade.php中编写了其余的代码,但它的意思是试图获取非对象视图的属性:payment.blade.php您在payment.blade.php中有哪些内容?我已经更新了我的原始帖子,并在我的控制器函数中添加了我正在做的事情,并且View尝试了这一点,然后将实现代码和表单添加到我的付款页面视图中,就像我在原始帖子中所显示的那样。打开页面时出现此错误:从空值视图创建默认对象:payment.blade.php我应该在何处创建此自定义服务提供商?很抱歉提出这个问题..:您可以在任何地方创建服务提供商,但最佳做法是在/app/providers/中创建服务提供商,但您必须提供正确的命名空间。您的名称空间将是名称空间应用程序\提供程序;在将文件注册到config/app.php时,请像下面这样注册app\Providers\CUSTOM\u SERVICE\u PROVIDER::class
public function payment()
{
$accATM = new e24PaymentPipe;
$accATM->resourcePath = 'resource/';
$accATM->alias = 'SECRET_ALIAS_OF_MERCHANT';
$accATM->action = '1';
$accATM->currency = '048';
$accATM->language = 'USA';
$accATM->amt = 'PRICE_HERE';
$accATM->responseURL = '/response.php';
$accATM->errorURL = '/error_page.php';
$accATM->trackId = date('YmdHis');
$TransVal = $accATM->performPaymentInitialization();
$varRawResponse = $accATM->getRawResponse();
$varPaymentId = $accATM->getPaymentId();
$varPaymentPage = $accATM->getPaymentPage();
$varErrorMsg = $accATM->getErrorMsg();
return View::make('myfolder/payment')->with(... here you will list array of data you will send to the view...);
}
View::make('site.payment')->with('accATM',$accATM);
@if($accATM) ...
<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
class YourServiceProvider extends ServiceProvider
{
/**
* Register the application services.
*
* @return void
*/
public function register()
{
//
$this->app->bind('YOUR_CUSTOM_CLASS_NAMESPACE_PATH');
}
}
YOUR_SERVICE_PROVIDER_NAMESPACE_YOU_CREATED::class,
$class = new YOUR_CUSTOM_CLASS();//use use to import the class namespace path