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

 


第二种配置方法: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等信息用于填写银联支付配置选项。

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




以及测试银行卡信息:

卡号

卡性质

机构名称

手机号码

密码

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'

    ]

]


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

 


4网关种类

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

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

· 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

 

5、银联支付测试

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

 


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

 


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

 

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

支付成功!

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值