laravel 5.5 接入蚂蚁金服官方SDK(支付宝APP支付为例)开发步骤
一、创建应用及配置
首先需要到蚂蚁金服开放平台(https://docs.open.alipay.com)注册应用,获取应用id(APP_ID),并且配置应用,主要是签约应用,这个需要审核,一般2-5个工作日,审核通过后,去生成公钥私钥这些东西,具体步骤参考蚂蚁金服官方文档,上面说明的比较清楚;
二、下载对应SDK
下载的是服务端SDK,注意不要下错,下载地址:https://docs.open.alipay.com/54/103419/;
三、准备好域名
这个一般都已经有了吧。
四、接入SDK
因为SDK不能用composer安装,所以需要自定义laravel的第三方库。
具体的步骤:
1:首先将下载下来的包解压后,放到laravel可以自动加载的地方,我放在app/packages/alipay(packages是自己新建的文件夹,下载下来的包我重命名了alipay),结构如图:
2:在composer.json中的autoload下的classmap下加入"app/Packages/alipay";
3:运行composer dumpautoload 命令
这样接入SDK算是完成了。
5.具体使用案例
首先在config/alipay.php文件中,配置好相关参数,具体如图:
然后我直接在AopSdk.php的同名目录新建了一个Alipay.php
文件中简单写了一个生产APP支付订单信息的方法
<?php
/**
* Created by PhpStorm.
* User: 寞小陌
* Date: 2018/4/18
* Time: 9:49
*/ namespace app\Packages\alipay;
use Mockery\CountValidator\Exception; require ('AopSdk.php'); class Alipay
{ /**
* 生成APP支付订单信息
* @param string $orderId 商品订单号
* @param string $subject 支付商品的标题
* @param string $body 支付商品描述
* @param float $total_amount 商品总支付金额
* @param int $expire 支付过期时间,分
* @return bool|string 返回支付宝签名后订单信息,否则返回false
*/
public function generateOrder($orderId, $subject, $body, $total_amount, $expire){
try{
$aop = new \AopClient();
$aop->gatewayUrl = config('alipay.gatewayUrl');
$aop->appId = config('alipay.app_id');
$aop->rsaPrivateKey = config('alipay.private_key');
$aop->alipayrsaPublicKey = config('alipay.public_key');
$aop->format= 'json';//固定
$aop->charset = config('alipay.charset');
$aop->signType = config('alipay.sign_type');
$request = new \AlipayTradeAppPayRequest();
//SDK已经封装掉了公共参数,这里只需要传入业务参数
$bizcontent = "{\"body\":\"{$body}\"," //支付商品描述
. "\"subject\":\"{$subject}\"," //支付商品的标题
. "\"out_trade_no\":\"{$orderId}\"," //商户网站唯一订单号
. "\"timeout_express\":\"{$expire}m\"," //该笔订单允许的最晚付款时间,逾期将关闭交易。取值范围:1m~15d。m-分钟,h-小时,d-天,1c-当天(1c-当天的情况下,无论交易何时创建,都在0点关闭)。 该参数数值不接受小数点, 如 1.5h,可转换为 90m。
//注:若为空,则默认为15d。
. "\"total_amount\":\"{$total_amount}\"," //订单总金额,单位为元,精确到小数点后两位,取值范围[0.01,100000000]
. "\"product_code\":\"QUICK_MSECURITY_PAY\""
. "}";
$request->setNotifyUrl(config('alipay.notify_url'));
$request->setBizContent($bizcontent);
//这里和普通的接口调用不同,使用的是sdkExecute
$response = $aop->sdkExecute($request);
//htmlspecialchars是为了输出到页面时防止被浏览器将关键参数html转义,实际打印到日志以及http传输不会有这个问题
return htmlspecialchars($response);//就是orderString 可以直接给客户端请求,无需再做处理。
}catch(Exception $e){
//失败返回false
return false;
}
}
}
注意:一定要引入SDK的入口文件AopSdk.php,require ('AopSdk.php');
否则会报 AopClient Not Found这类的错误信息;
注意:$aop = new \AopClient();这里有个“\”。
至此,支付宝的SDK就可以用了,还有许多其他的业务比如退款,对账等功能,参考其官方文档就好,迈出了第一步,接下来的路就好走多了。
本文属于个人原创,欢迎转载,转载请附链接:http://www.cnblogs.com/x-x-j/p/8875636.html
laravel 5.5 接入蚂蚁金服官方SDK(支付宝APP支付为例)开发步骤的更多相关文章
- laravel 接入蚂蚁金服SDK(以支付宝APP支付为例)开发步骤
一.创建应用及配置 首先需要到蚂蚁金服开放平台(https://docs.open.alipay.com)注册应用,获取应用id(APP_ID),并且配置应用,主要是签约应用,这个需要审核,一般2-5 ...
- 蚂蚁金服缘何自研Service Mesh?
2018年,微服务方兴未艾,Service Mesh(服务网格)又快速崛起.有观点认为,2018年可被称之为“Service Mesh元年”,在未来两年中,Service Mesh将迎来爆发式增长,成 ...
- 干货 | 蚂蚁金服是如何实现经典服务化架构往 Service Mesh 方向的演进的?
干货 | 蚂蚁金服是如何实现经典服务化架构往 Service Mesh 方向的演进的? https://www.sohu.com/a/235575064_99940985 干货 | 蚂蚁金服是如何实现 ...
- 蚂蚁金服新一代数据可视化引擎 G2
新公司已经呆了一个多月,目前着手一个数据可视化的项目,数据可视化肯定要用到图形库如D3.Highcharts.ECharts.Chart等,经决定我的这个项目用阿里旗下蚂蚁金服所开发的G2图表库. 官 ...
- 蚂蚁金服研发的金融级分布式中间件SOFA背后的故事
导读:GIAC大会期间,蚂蚁金服杨冰,黄挺等讲师面向华南技术社区做了<数字金融时代的云原生架构转型路径>和<从传统服务化走向Service Mesh>等演讲,就此机会,高可用架 ...
- 蚂蚁金服 Service Mesh 渐进式迁移方案|Service Mesh Meetup 实录
小蚂蚁说: 本文是基于在 Service Mesher Meetup 上海站的主题分享<蚂蚁金服 Service Mesh 渐进式迁移方案>内容整理,完整的分享 PPT 获取方式见文章底部 ...
- 蚂蚁金服“定损宝”现身AI顶级会议NeurIPS
小蚂蚁说: 长期以来,车险定损(通过现场拍摄定损照片确定车辆损失,以作为保险公司理赔的依据)是车险理赔中最为重要的操作环节.以往传统保险公司的车险处理流程,一般为报案.现场查勘.提交理赔材料.审核.最 ...
- 蚂蚁金服互联网IT运维体系实践
摘要: 本文来自蚂蚁金服首席技术架构师,基础技术部负责人胡喜.从2010年支撑双十一最高交易峰值2万笔/分钟到2015年双十一的8.59万笔/秒,蚂蚁金服的技术架构和运维体系一直都在不断摸索和实践.本 ...
- 蚂蚁金服 Service Mesh 实践探索
SOFAMesh是蚂蚁金服在ServiceMesh方向上的探索,下面是它高级技术专家敖小剑在QCon上海2018上的演讲. Service Mesh 是一个 基础设施层,用于处理服务间通讯.现代云原生 ...
随机推荐
- 网络通信 --> ZMQ安装和使用
ZMQ安装和使用 ZMQ 并不像是一个传统意义上的消息队列服务器,事实上,它也根本不是一个服务器,它更像是一个底层的网络通讯库,在 Socket API 之上做了一层封装,将网络通讯.进程通讯和线程通 ...
- 后台返回null iOS
1.第一种解决方案 就是在每一个 可能传回null 的地方 使用 if([object isEqual:[NSNUll null]]) 去判断 2.第二种解决方案 网上传说老外写了一个Categor ...
- 一周总结:AutoEncoder、Inception 、模型搭建及下周计划
一周总结:AutoEncoder.Inception .模型搭建及下周计划 1.AutoEncoder: AutoEncoder: 自动编码器就是一种尽可能复现输入信号的神经网络:自动编码器必须捕 ...
- 分享两个提高效率的AndroidStudio小技巧
这次分享两个 Android Studio 的小技巧,能够有效提高效率和减少犯错,尤其是在团队协作开发中. Getter 模板修改--自动处理 null 判断 格式化代码自动整理方法位置--广度 or ...
- Beta 凡事预则立
写在Beta冲刺前 关于组长是否重选的议题和结论 总体结论 组长无需更换 队内无人替代 理由 当前组长能够较好的号召和组织团队成员进行工作 当前组长能够对项目有合理的规划 当前组长被大家一致认可可以继 ...
- alpha-咸鱼冲刺day5
一,合照 emmmmm.自然还是没有的. 二,项目燃尽图 三,项目进展 !!!QAQ可以做到跟数据库交互了!!!!先来撒花花!(然后继续甲板) 四,问题困难 日常啥都不会,百度真心玩一年. 还得自学n ...
- iOS中CocoaPods的安装及错误详解
什么是CocoaPods CocoaPods是OS X和iOS下的一个第三类库管理工具,通过CocoaPods工具我们可以为项目添加被称为"Pods"的依赖库(这些类库必须是Coc ...
- HTTP协议中PUT和POST使用区别
有的观点认为,应该用POST来创建一个资源,用PUT来更新一个资源:有的观点认为,应该用PUT来创建一个资源,用POST来更新一个资源:还有的观点认为可以用PUT和POST中任何一个来做创 ...
- codevs 3981 动态最大子段和
3981 动态最大子段和 http://codevs.cn/problem/3981/ 题目等级 : 钻石 Diamond 题目描述 Description 题目还是简单一点好... 有n个 ...
- UVA 10622 Perfect P-th Powers
https://vjudge.net/problem/UVA-10622 将n分解质因数,指数的gcd就是答案 如果n是负数,将答案除2至奇数 原理:(a*b)^p=a^p*b^p #include& ...