在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,
第二种配置方法: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注册,对老版本有很好的支持
二、接着再安装银联支付依赖包
1,ignited/laravel-omnipay这个包,这里我们只需要安装银联支付包即可:
composer require lokielse/omnipay-unionpay dev-master
到银联支付开发者中心注册账户并提交商户资料进行审核,等待审核通过后获取相关证书ID等信息用于填写银联支付配置选项。
如果你是测试的话银联支付提供了相应的测试接口和配置数据:
以及测试银行卡信息:
卡号 |
卡性质 |
机构名称 |
手机号码 |
密码 |
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测试包
配置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'
]
]
代码如下:(特别注意路径要写正确)
4、网关种类
OmniPay UnionPay提供了以下支付网关接口:
· Union_Express 银联全产品网关(PC,APP,WAP支付)
· Union_LegacyMobile 银联老网关(APP)
· Union_LegacyQuickPay 银联老网关(PC)
本例中我们使用Union_Express网关。
新建控制器UnionPayController,定义UnionPay方法:(下面所有方法都在一个控制器)
定义UnionPayReturn方法:
此外,由于该回调请求来自第三方API,无法通过CSRF验证,所以需要在CSRF验证中排除该URL,否则会抛出TokenMismatchException异常,具体排除方法可参考CSRF攻击原理及其防护这篇教程,这里我们要排除的URL unionpay/return。
找到中间件:app\Http\Middleware\VerifyCsrfToken.php
在浏览中访问http://ms.house.com/UnionPay,页面会跳转到银联支付页面:
将测试银行卡号填写到输入框并点击下一步:
将测试卡号对应身份证号码填入输入框,然后点击“免费获取”,最后直接将手机验证码111111填写到验证码输入框,然后点击“确认付款”,页面就会跳转到支付成功页面:
点击“返回商户”,则页面跳转到http://ms.house.com/UnionPayReturn并显示:
支付成功!
这里简单测试了支付和回调接口,更多接口方法使用请参考Omnipay: UnionPay。
连接:http://blog.csdn.net/pz_winner/article/details/78538119