Php 在Laravel 4.2中实现第三方类

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

我试图在一个Laravel项目中首次集成一个基于中东的支付网关,用于通过借记卡进行支付。我过去在定制PHP项目中使用过这个支付网关,但在将它集成到Laravel项目中时遇到了问题

基本上,这个支付网关文件由一个名为e24PaymentPipe的类和一个resource/resource.cgn组成。这两个文件的简要结构如下:

E24付款管

完整类源代码:

实施

在显示付款按钮的页面中,需要添加以下代码:

// 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