laravel 对接支付宝
使用的库
申请支付宝支付
这个就不说了, 不明白如何下手的伙伴让运营去和支付宝客服联系吧
composer 安装git库
将以下代码添加到 composer.json
{ "require": { "lokielse/omnipay-alipay": "dev-master" }}
执行composer命令更新依赖
$ curl -s http://getcomposer.org/installer | php
$ php composer.phar update
用法
该库提供了 6 种不同的接口,各种接口有不同的配置和用法,我用过Alipay_Express 和 Alipay_WapExpress,下面会有这两种支付的步骤。
- Alipay_Express (Alipay Express Checkout) 支付宝即时到账接口
- Alipay_Secured (Alipay Secured Checkout) 支付宝担保交易接口
- Alipay_Dual (Alipay Dual Function Checkout) 支付宝双功能交易接口
- Alipay_WapExpress (Alipay Wap Express Checkout) 支付宝WAP客户端接口
- Alipay_MobileExpress (Alipay Mobile Express Checkout) 支付宝无线支付接口
- Alipay_Bank (Alipay Bank Checkout) 支付宝网银快捷接口
Alipay_EXpress
支付 控制器中:
use Omnipay\Omnipay;
//调用支付网关, 这一步其实就是配置参数,可以写成通用函数
$gateway = Omnipay::create('Alipay_Express'); //创建网关类
$gateway->setPartner('8888666622221111'); //合作者id
$gateway->setKey('your**key**here'); //支付key
$gateway->setSellerEmail('merchant@example.com'); 收款账户email
$gateway->setReturnUrl('http://www.example.com/return'); //返回url, 用户支付后会跳转到这个地址, 可以定义支付成功或者支付失败等页面返回增加用户体验
$gateway->setNotifyUrl('http://www.example.com/notify'); //通知url,每次支付完成后, 支付宝服务器会向这个地址发请求,返回支付状态
//设置订单
$options = [
'out_trade_no' => date('YmdHis') . mt_rand(1000,9999), //你自己网站的唯一订单号
'subject' => 'test', //订单标题
'total_fee' => '0.01', //订单价格
//这里也可以带上其他参数,支付完之后支付宝会返回该参数和对应的值,不过设置了之后后面处理支付状态需要多一步操作。我一般会设置'paytype' => 'alipay',
];
//跳转支付
$response = $gateway->purchase($options)->send();
$response->redirect();
处理支付状态
这个可以写在支付是指定的returnurl或者notifyurl对应到控制器里面
use Omnipay\Omnipay;
$gateway = Omnipay::create('Alipay_Express');
$gateway->setPartner('8888666622221111');
$gateway->setKey('your**key**here');
$gateway->setSellerEmail('merchant@example.com');
$options = [ 'request_params' => $_REQUEST, ]; //这条语句前提是你在前面支付的时候没有带其他到参数,如果带了, 需要将其他参数unset, 比如我一般会带上一个&paytype=alipay用来标识是支付宝支付, 所以我就需要在这条语句前先执行unset($_REQUEST['paytype']);
if ( $response->isSuccessful() && $response->isTradeStatusOk() ) {
echo "支付成功";
//写自己的逻辑, 比如把支付状态写入订单表里面
} else {
echo "支付失败";
}
测试
如果你都配置好了的话那就测试吧
应该是手机浏览器访问支付链接会先访问pc版支付宝页面后跳转到支付宝app里面,
pc访问的话就是访问pc页面扫码支付
Alipay_WapExpress
支付 控制器中:
//和上面基本没什么差别 , 差别就是需要带上你的服务器使用openssl生成的rsa私钥和支付宝的公钥,
//另外在此之前需要先上传你的rsa公钥到支付宝,[上传RSA公钥](https://doc.open.alipay.com/doc2/detail.htm?spm=a219a.7629140.0.0.7n6Wbd&treeId=58&articleId=103578&docType=1)
use Omnipay\Omnipay;
//调用支付网关, 这一步其实就是配置参数,可以写成通用函数
$gateway = Omnipay::create('Alipay_Express');
$gateway->setPartner('8888666622221111'); //合作者id
$gateway->setKey('your**key**here'); //支付key
$gateway->setSellerEmail('merchant@example.com'); 收款账户email
// private key : [RSA私钥及公钥生成](https://doc.open.alipay.com/doc2/detail?treeId=58&articleId=103242&docType=1)
//alipay public key : 支付宝公钥,
//查看地址为:b.alipay.com->我的商家服务->[查看PID、Key](https://b.alipay.com/order/serviceIndex.htm),
//找到合作伙伴密钥管理->查看支付宝公钥。
//**注:PHP和.NET使用DEMO中已有的alipay_public_key.pem密钥文件。**
//demo下载地址[https://doc.open.alipay.com/doc2/detail?treeId=54&articleId=103419&docType=1](https://doc.open.alipay.com/doc2/detail?treeId=54&articleId=103419&docType=1)
$gateway->setPrivateKey('这里是一大串rsa钥匙');
$gateway->setAlipayPublicKey('这里是一大串支付宝的公钥');
$gateway->setReturnUrl('http://www.example.com/return'); //返回url, 用户支付后会跳转到这个地址, 可以定义支付成功或者支付失败等页面返回增加用户体验
$gateway->setNotifyUrl('http://www.example.com/notify'); //通知url,每次支付完成后, 支付宝服务器会向这个地址发请求,返回支付状态
//设置订单
$options = [
'out_trade_no' => date('YmdHis') . mt_rand(1000,9999), //你自己网站的唯一订单号
'subject' => 'test', //订单标题
'total_fee' => '0.01', //订单价格
];
//跳转支付
$response = $gateway->purchase($options)->send();
$response->redirect();
处理支付状态
和Alipay_Express的没有区别
测试
只用手机测试过, 跳转到支付宝手机网页支付的页面。
文章结束
支付宝文档可能会更新,文档地址链接可能不能用,本文链接更新时间为20160527
其他php框架或者原生php的处理是类似的,希望此篇文章对你以后的开发有帮助。
原文地址:https://www.jianshu.com/p/e0d4f0d0d3f1
laravel 对接支付宝的更多相关文章
- App对接支付宝移动支付功能
前段时间看了下app对接支付宝移动支付的功能,并自己总结了下支付宝移动支付的实现流程 一.申请流程 前提是已有现成的应用. 1. 申请地址 https://b ...
- laravel实现支付宝支付功能
起因 前段时间因为项目中需要实现支付宝手机网站支付功能,所以写下这篇文章以作记录,不足之处,欢迎指教. 后端框架:Laravel 5.5 业务功能 适用于商家在移动端网页应用中集成支付宝支付功能.商家 ...
- Python对接支付宝支付自实现
Python对接支付宝支付自实现 # -*- coding: utf-8 -*- import base64 import json import urllib.parse from datetime ...
- newbee-mall 开源商城新计划:秒杀功能、优惠券、对接支付宝
新项目是 newbee-mall 的升级版本,暂时就叫它 newbee-mall-plus 吧,第一阶段会开发秒杀功能.优惠券.对接支付宝这些功能,也会慢慢加入 Redis. Elastic Sear ...
- thinkphp框架对接支付宝即时到账接口回调的代码
关于支付宝即时收款接口的对接过程,很简单,也有很多人发过,我这里就不在啰嗦了,对接完成后,在线支付成功后的回调,相对来说,是个难点,,我重点分享下我的经验. 我在开发二代旅游CMS(http://ww ...
- Django 对接 支付宝支付, 回调
平台 点击这里进入 蚂蚁金服开放平台 沙箱 点击这里进入 沙箱环境 初始界面 设置公钥 下载创建秘钥工具 1. 进入文档中心 这里 2. 选中 电脑网站支付 3. 进入后选中 API 列表 中的 统 ...
- DUMP4 企业级电商项目 —— 对接支付宝扫码支付
延展 <谈谈微信支付曝出的漏洞> [联调 DEMO下载地址]https://docs.open.alipay.com/194/105201/ [内置 一份 说明文档可做参考] [impor ...
- laravel 对接 UCenter 基础
说明:1,运行环境 laravel 5.3 php7+nginx+mysql 2,使用安装包 https://github.com/goodspb/laravel5-ucenter 上面有对接方 ...
- Laravel 开发支付宝支付与提现转账问题小结
由于项目需要,所以需要开发支付宝支付与微信支付,支付部分采用了 yansongda/pay https://packagist.org/packages/yansongda/pay https ...
随机推荐
- 【转】.NET 应用程序是怎么运行的
原文:http://www.cnblogs.com/xishuai/p/mono-dotnetcore.html .NET应用程序运行过程 C#程序运行过程 CLR结构
- 伸展树(Splay Tree)进阶 - 从原理到实现
目录 1 简介 2 基础操作 2.1 旋转 2.2 伸展操作 3 常规操作 3.1 插入操作 3.2 删除操作 3.3 查找操作 3.4 查找某数的排名.查找某排名的数 3.4.1 查找某数的排名 3 ...
- MySQL存储引擎中的MyISAM和InnoDB
在使用MySQL的过程中对MyISAM和InnoDB这两个概念存在了些疑问,到底两者引擎有何分别一直是存在我心中的疑问.为了解开这个谜题,搜寻了网络,找到了如下信息: MyISAM是MySQL的默认数 ...
- 有关线程安全的探讨--final、static、单例、线程安全
我的代码中已经多次使用了线程,然后还非常喜欢使用据说是线程不安全的静态方法,然后又看到很多地方最容易提的问题就是这个东西线程不安全 于是我不免产生了以下几个亟待解决的问题: 什么样的代码是天生线程 ...
- 理解SQL Server中索引的概念,原理
转自:http://www.cnblogs.com/CareySon/archive/2011/12/22/2297568.html 简介 在SQL Server中,索引是一种增强式的存在,这意味着, ...
- python startswith() 函数
startswith() 作用:判断字符串是否以指定字符或子字符串开头 >>> s = "my name is ming" >>> >&g ...
- 实习培训——Java基础(4)
实习培训——Java基础(4) 1 多态 多态是同一个行为具有多个不同表现形式或形态的能力. 多态就是同一个接口,使用不同的实例而执行不同操作,多态性是对象多种表现形式的体现. 现实中,比如我们按下 ...
- 2.keras实现-->字符级或单词级的one-hot编码 VS 词嵌入
1. one-hot编码 # 字符集的one-hot编码 import string samples = ['zzh is a pig','he loves himself very much','p ...
- zend studio9破解版
一.下载window http://downloads.zend.com/studio-eclipse/9.0.3/ZendStudio-9.0.3.msi 下载linux64 http://down ...
- #C++初学记录(深度搜索#递归)
深度搜索 走地图的题目是深度搜索里比较容易理解的题目,更深层次的是全排列和七皇后等经典题目,更加难以理解,代码比较抽象. 题目:红与黑 蒜厂有一间长方形的房子,地上铺了红色.黑色两种颜色的正方形瓷砖. ...