http://laravelacademy.org/post/1475.html
通过前两节的介绍,我想大家对Laravel Cashier已经有了一个大致的了解,Laravel Cashier实际上使用Stripe提供的API接口进行支付,且应用场景多是使用信用卡进行分期支付,比如订阅会员服务,每月支付一定费用享受会员特殊服务,还有云服务,比如我们购买阿里云和Linode的VPS,每月要支付一定费用,但是这种信用卡支付感觉国外更流行,估计老外都没有存钱的习惯~,国内的话我们看到更多的是支付宝、银联支付、微信支付等,在1024这个特殊的日子里,学院君准备开讲这一系列。
首先我们来探讨如何在Laravel应用中使用支付宝进行支付,对此,GitHub上有很多相关的包,这里我们介绍其中最流行的两个包:Omnipay For Laravel 5 & Lumen 和 Laravel AliPay。
1、使用 OmniPay For Laravel 5 & Lumen
引言&简介
在开始之前,我们先来了解下OmniPay这个GitHub项目。
OmniPay是一个独立于框架的、对多种网关支付处理提供支持的PHP库。其介绍网站是http://omnipay.thephpleague.com/,GitHub项目地址是https://github.com/thephpleague/omnipay。目前支持的支付网关包括支付宝、银联支付、Stripe、PayPal等,更多支付网关可查看其GitHub项目了解。
顾名思义,OmniPay for Laravel 5 & Lumen 是基于Laravel 5,通过一个服务提供者集成PHP OmniPay库,从而轻松实现对多种支付网关的支持。这里我们配置支付方式为支付宝。
安装&配置
在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发布配置文件。
此外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');
创建支付宝应用
使用支付宝SDK进行支付的前提是先要去支付宝开放平台(open.alipay.com)入驻成为开发者并创建网站/移动应用,等待审核通过。
然后在个人中心获取应用的APPID和PID:
支付宝开放平台获取APPID
支付宝开放平台获取PID
然后在项目中编辑配置文件config/laravel-omnipay.php:
<?php
return [
// 默认支付网关
'default' => 'alipay',
// 各个支付网关配置
'gateways' => [
'paypal' => [
'driver' => 'PayPal_Express',
'options' => [
'solutionType' => '',
'landingPage' => '',
'headerImageUrl' => ''
]
],
'alipay' => [
'driver' => 'Alipay_Express',
'options' => [
'partner' => 'your pid here',
'key' => 'your appid here',
'sellerEmail' =>'your alipay account here',
'returnUrl' => 'your returnUrl here',
'notifyUrl' => 'your notifyUrl here'
]
]
]
];
基本使用
1)定义相关路由
//支付宝支付处理
Route::get('alipay/pay','AlipayController@pay');
//支付后跳转页面
Route::post('alipay/return','AlipayController@result');
2)支付
支付宝SDK支持如下接口:
Alipay_Express 支付宝即时到账接口
Alipay_Secured 支付宝担保交易接口
Alipay_Dual 支付宝双功能交易接口
Alipay_WapExpress 支付宝WAP客户端接口
Alipay_MobileExpress 支付宝无线支付接口
Alipay_Bank 支付宝网银快捷接口
这里我们使用支付宝即时到账接口(目前即时到账接口需要商户签约才能使用,个人账户不能使用)。
新建控制器AlipayController,定义其pay方法如下:
public function pay(){
$gateway = Omnipay::gateway();
$options = [
'out_trade_no' => date('YmdHis') . mt_rand(1000,9999),
'subject' => 'Alipay Test',
'total_fee' => '0.01',
];
$response = $gateway->purchase($options)->send();
$response->redirect();
}
3)回调
接下来我们定义支付后跳转页面对应的result方法:
public function result(){
$gateway = Omnipay::gateway();
$options = [
'request_params'=> $_REQUEST,
];
$response = $gateway->completePurchase($options)->send();
if ($response->isSuccessful() && $response->isTradeStatusOk()) {
//支付成功后操作
exit('支付成功');
} else {
//支付失败通知.
exit('支付失败');
}
}
此外,由于该回调请求来自第三方API,无法通过CSRF验证,所以需要在CSRF验证中排除该URL,否则会抛出TokenMismatchException异常,具体排除方法可参考CSRF攻击原理及其防护这篇教程,这里我们要排除的URL是alipay/return。
2、使用Laravel AliPay
以上是OmniPay for Laravel 5 & Lumen这个包的使用简介,接下来我们来看另外一个封装支付宝SDK的Laravel包 —— AliPay。其GitHub项目地址是:https://github.com/Latrell/Alipay。该项目是中文版,使用说明GitHub上说的很清楚明白,这里就不在赘述了。
Laravel 支付解决方案之如何使用支付宝进行支付
前往
- Software
- ↳ CodeCharge Studio
- ↳ CodeCharge
- ↳ DemoCharge
- ↳ SuperPDF
- ↳ 551einv
- ↳ E3進銷存
- 程式語言
- ↳ PHP
- ↳ CodeLobster PHP Edition
- ↳ Yii
- ↳ CodeIgniter
- ↳ Phalcon
- ↳ Symfony
- ↳ FuelPHP
- ↳ Zend Framework 2
- ↳ laravel
- ↳ WordPress
- ↳ ASP.NET/C#
- ↳ ASP/VBScript
- ↳ JSP
- ↳ Java Servlets
- ↳ ColdFusion
- ↳ Perl
- ↳ Java Script
- ↳ jQuery
- ↳ HTML + CSS
- ↳ jQuery
- ↳ nodejs
- ↳ VB6
- ↳ Git
- ↳ App Inventor 2
- ↳ bash
- ↳ C++/ VC/ OpenCV
- ↳ OpenCV
- ↳ go
- ↳ cordova
- ↳ python
- ↳ Xamarin
- ↳ Assembly
- 資料庫
- ↳ MySQL
- ↳ PostgreSQL
- ↳ ORACLE
- ↳ Access
- ↳ SQL Server
- ↳ SQLite
- ↳ MariaDB
- ↳ Mongodb
- 作業系統
- ↳ Linux
- ↳ Ubuntu
- ↳ CentOS
- ↳ Mint
- ↳ Mandriva
- ↳ Debian
- ↳ Red Hat Enterprise Linux
- ↳ Oracle Linux
- ↳ Fedora
- ↳ Kali Linux
- ↳ OpenSUSE
- ↳ Elementary OS
- ↳ Microsoft
- ↳ Server 2008 R2
- ↳ Server 2012 R2
- ↳ Server 2012
- ↳ 8
- ↳ 10
- ↳ System Center 2016
- ↳ NOVELL
- ↳ FreeBSD
- ↳ VMware
- ↳ VirtualBox
- ↳ Mac OS X
- ↳ Solaris
- ↳ iOS
- ↳ Android
- ↳ Cloud
- ↳ OpenStack
- ↳ Docker
- ↳ Proxmox VE
- ↳ CloudReady
- ↳ chrome
- 網頁伺服器
- ↳ apache
- ↳ tomcat
- ↳ nginx
- ↳ IIS
- ↳ JBoss
- ↳ weblogic
- ↳ WebHosting
- 硬體
- ↳ 硬體及週邊
- ↳ RouterOS
- ↳ LEGO NXT
- ↳ Arduino
- ↳ MSP430
- ↳ Raspberry Pi
- ↳ OpenERP
- ↳ Storage
- ↳ Server
- ↳ Brocade
- ↳ MODELS
- ↳ FortiGate
- 軟體
- ↳ sublime
- ↳ LibreNMS