laravel 支付宝怎么把支付宝及时支付做成服务

Laravel5 支付宝 - 博客频道 - CSDN.NET
刘英杰的博客
学习沟通交流
composer require latrell/alipay dev-master
找到 config/app.php 配置文件中, key 为 providers 的数组,在数组中添加服务提供者.
'providers' =& [
Latrell\Alipay\AlipayServiceProvider::class,
在项目根目录中运行
php artisan vendor:publish
配置文件说明
config/latrell-alipay.php 为公共配置信息文件.config/latrell-alipay-web.php 为 Web 版支付宝 SDK 配置.config/latrell-alipay-mobile.php 为手机端支付宝 SD K配置
先给支付添加一个路由和方法.
public function alipay()
$orderId = time();
$orderPrice = 0.01;
$goodsName = '外星人笔记本电脑';
$goodsDescription = '外星人笔记本电脑';
$alipay = app('alipay.web');
$alipay-&setOutTradeNo($orderId);
$alipay-&setTotalFee($orderPrice);
$alipay-&setSubject($goodsName);
$alipay-&setBody($goodsDescription);
return redirect()-&to($alipay-&getPayLink());
public function alipay()
$orderId = time();
$orderPrice = 0.01;
$goodsName = '外星人笔记本电脑';
$goodsDescription = '外星人笔记本电脑';
$alipay = app('alipay.mobile');
$alipay-&setOutTradeNo($orderId);
$alipay-&setTotalFee($orderPrice);
$alipay-&setSubject($goodsName);
$alipay-&setBody($goodsDescription);
return $alipay-&getPayPara();
Web 端回调
public function webNotify()
if (! app('alipay.web')-&verify()) {
Log::notice('Alipay notify post data verification fail.', [
'data' =& Request::instance()-&getContent()
return 'fail';
switch (Input::get('trade_status')) {
case 'TRADE_SUCCESS':
case 'TRADE_FINISHED':
: 支付成功,取得订单号进行其它相关操作。
Log::debug('Alipay notify post data verification success.', [
'out_trade_no' =& Input::get('out_trade_no'),
'trade_no' =& Input::get('trade_no')
return 'success';
public function webReturn()
if (! app('alipay.web')-&verify()) {
Log::notice('Alipay return query data verification fail.', [
'data' =& Request::getQueryString()
return view('alipay.fail');
switch (Input::get('trade_status')) {
case 'TRADE_SUCCESS':
case 'TRADE_FINISHED':
: 支付成功,取得订单号进行其它相关操作。
Log::debug('Alipay notify get data verification success.', [
'out_trade_no' =& Input::get('out_trade_no'),
'trade_no' =& Input::get('trade_no')
return view('alipay.success');
public function alipayNotify()
if (! app('alipay.mobile')-&verify()) {
Log::notice('Alipay notify post data verification fail.', [
'data' =& Request::instance()-&getContent()
return 'fail';
switch (Input::get('trade_status')) {
case 'TRADE_SUCCESS':
case 'TRADE_FINISHED':
: 支付成功,取得订单号进行其它相关操作。
Log::debug('Alipay notify get data verification success.', [
'out_trade_no' =& Input::get('out_trade_no'),
'trade_no' =& Input::get('trade_no')
return 'success';
排名:千里之外/hyperbolaa/Alipay
composer require hyperbolaa/alipay dev-master
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:1555次
排名:千里之外您的位置:
& Laravel 5.1 服务篇
Laravel 支付解决方案之如何使用银联支付进行支付
上一节我们讨论了在Laravel中如何使用支付宝进行支付,这一节我们讲另一种常见的支付方式:银联支付。通过上一节的学习想必大家已经了解了OmniPay这个牛逼的GitHub项目,也对如何使用OmniPay for Laravel 5 & Lumen这个Laravel包有了大致的了解。没错,我们接下来要讲的银联支付还是使用这个Laravel包,并集成OmniPay提供的银联支付(UnionPay)接口——UmniPay UnionPay。
1、安装银联支付依赖包
废话不多说,下面直接切入正题。由于我们在上一节已经安装了ignited/laravel-omnipay这个包,这里我们只需要安装银联支付包即可:
composer require lokielse/omnipay-unionpay dev-master
2、获取银联支付配置信息
到银联支付开发者中心注册账户并提交商户资料进行审核,等待审核通过后获取相关证书ID等信息用于填写银联支付配置选项。
如果你是测试的话银联支付提供了相应的测试接口和配置数据:
以及测试银行卡信息:
短信验证码
然后我们去/ajweb/help/file/techFile下载PHP版本的实例代码,比如我们这里测试的是网关支付,那就下载网关支付对应的实例代码,解压下载的压缩文件,然后将下面这个三个文件拷出来放到Laravel项目指定目录(比如storage/app/unionpay/certs):
3、配置文件
配置config/laravel-omnipay.php(如果没有该配置文件参考上一节相应操作),添加银联支付配置:
'unionpay' =& [
'driver' =& 'UnionPay_Express',
'options' =& [
'merId' =& '462',
'certPath' =& '/path/to/storage/app/unionpay/certs/PM_001_acp.pfx',
'certPassword' =&'000000',
'certDir'=&'/path/to/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网关。
//银联支付处理
Route::get('unionpay/pay','UnionpayController@pay');
//支付后回调页面
Route::post('unionpay/return','UnionpayController@result');
新建控制器UnionPayController,定义pay方法:
public function pay(){
$gateway = Omnipay::gateway('unionpay');
$order = [
'orderId' =& date('YmdHis'),
'txnTime' =& date('YmdHis'),
'orderDesc' =& 'My test order title', //订单名称
'txnAmt' =& '100', //订单价格
$response = $gateway-&purchase($order)-&send();
$response-&redirect();
定义result方法:
public function result(){
$gateway = Omnipay::gateway('unionpay');
$response = $gateway-&completePurchase(['request_params'=&$_REQUEST])-&send();
if ($response-&isPaid()) {
exit('支付成功!');
exit('支付失败!');
此外,由于该回调请求来自第三方API,无法通过CSRF验证,所以需要在CSRF验证中排除该URL,否则会抛出TokenMismatchException异常,具体排除方法可参考CSRF攻击原理及其防护这篇教程,这里我们要排除的URL是unionpay/return。
5、银联支付测试
在浏览中访问http://laravel.app:8000/unionpay/pay,页面会跳转到银联支付页面:
我们将测试银行卡号填写到输入框并点击下一步:
将测试卡号对应身份证号码填入输入框,然后点击“免费获取”,最后直接将手机验证码111111填写到验证码输入框,然后点击“确认付款”,页面就会跳转到支付成功页面:
点击“返回商户”,则页面跳转到http://laravel.app:8000/unionpay/return并显示:
我们这里简单测试了支付和回调接口,更多接口方法使用请参考Omnipay: UnionPay。
本站部份内容来源自网络,文字、素材、图片版权属于原作者,本站转载素材仅供大家欣赏和分享,切勿做为商业目的使用。如有侵权请联系:QQ
Copyright (C)
All Rights Reserved.
网站备案号:

我要回帖

更多关于 laravel 支付宝 sdk 的文章

 

随机推荐