laravel 网银支付

一,安装&配置(网关支付的闭包)

composer.json中添加如下依赖:

"ignited/laravel-omnipay": "2.*",

"lokielse/omnipay-alipay": "dev-master"


运行composer update安装这些依赖。


第一种方法:配置文件注册服务

安装完成后在config/app.php中注册服务提供者:

Ignited\LaravelOmnipay\LaravelOmnipayServiceProvider::class


同时添加OmniPay门面到门面数组:

'Omnipay' => Ignited\LaravelOmnipay\Facades\OmnipayFacade::class

最后,通过php artisan vendor:publish生成配置文件config/laravel-omnipay.php

 laravel 网银支付_第1张图片


第二种配置方法:lumen注册服务

此外OmniPay for Laravel 5 & Lumen还支持Lumen。在bootstrap/app.php中注册服务提供者:

$app->register(Ignited\LaravelOmnipay\LumenOmnipayServiceProvider::class);


laravel-omnipay.php文件复制到config/laravel-omnipay.php,然后在bootstrap/app.php中添加如下代码:

$app->configure('laravel-omnipay');


自己总结:

laravel5.2 以上版本建议使用第一种方法注册闭包,避免报异常错误

laravel 5 建议使用第二种lumen注册,对老版本有很好的支持

 

二、接着再安装银联支付依赖包

1ignited/laravel-omnipay这个包,这里我们只需要安装银联支付包即可:

composer require lokielse/omnipay-unionpay dev-master

2、获取银联支付配置信息

银联支付开发者中心注册账户并提交商户资料进行审核,等待审核通过后获取相关证书ID等信息用于填写银联支付配置选项。

如果你是测试的话银联支付提供了相应的测试接口和配置数据:


laravel 网银支付_第2张图片


以及测试银行卡信息:

卡号

卡性质

机构名称

手机号码

密码

CVN2

有效期

证件号

姓名

 

6216261000000000018

借记卡

平安银行

13552535506

123456

 

 

341126197709218366

全渠道

 

6221558812340000

贷记卡

平安银行

13552535506

123456

123

1711

341126197709218366

互联网

 

短信验证码

111111

 


然后我们去https://open.unionpay.com/ajweb/help/file/techFile下载PHP版本的实例代码,比如我们这里测试的是网关支付,那就下载网关支付对应的实例代码,解压下载的压缩文件,然后将下面这个三个文件拷出来放到Laravel项目指定目录(比如public/certs:


老版本PHP测试包

 

新版本PHP测试包

 

以下我用的是新版本的PHP测试包

3、配置文件

配置config/laravel-omnipay.php(如果没有该配置文件参考上一节相应操作),添加银联支付配置:

'unionpay' => [

    'driver' => 'UnionPay_Express',

    'options' => [

        'merId' => '777290058120462',

        'certPath' => 'certs/acp_test_sign.pfx',

        'certPassword' =>'000000',

        'certDir'=>'certs',

        'returnUrl' => 'Your ReturnUrl Here',

        'notifyUrl' => 'Your NotifyUrl Here'

    ]

]


代码如下:(特别注意路径要写正确)

 laravel 网银支付_第3张图片


4网关种类

OmniPay UnionPay提供了以下支付网关接口:

· Union_Express 银联全产品网关(PCAPPWAP支付)

· Union_LegacyMobile 银联老网关(APP

· Union_LegacyQuickPay 银联老网关(PC

本例中我们使用Union_Express网关。

定义路由

 

支付

新建控制器UnionPayController,定义UnionPay方法:(下面所有方法都在一个控制器)

 laravel 网银支付_第4张图片

回调

定义UnionPayReturn方法:

 laravel 网银支付_第5张图片


此外,由于该回调请求来自第三方API,无法通过CSRF验证,所以需要在CSRF验证中排除该URL,否则会抛出TokenMismatchException异常,具体排除方法可参考CSRF攻击原理及其防护这篇教程,这里我们要排除的URL unionpay/return

找到中间件:app\Http\Middleware\VerifyCsrfToken.php

 laravel 网银支付_第6张图片

5、银联支付测试

在浏览中访问http://ms.house.com/UnionPay,页面会跳转到银联支付页面:

 laravel 网银支付_第7张图片


将测试银行卡号填写到输入框并点击下一步:

 laravel 网银支付_第8张图片


将测试卡号对应身份证号码填入输入框,然后点击“免费获取”,最后直接将手机验证码111111填写到验证码输入框,然后点击“确认付款”,页面就会跳转到支付成功页面:

 laravel 网银支付_第9张图片

点击“返回商户”,则页面跳转到http://ms.house.com/UnionPayReturn并显示:

支付成功!

这里简单测试了支付和回调接口,更多接口方法使用请参考Omnipay: UnionPay

连接:http://blog.csdn.net/pz_winner/article/details/78538119


你可能感兴趣的:(laravel 网银支付)