注: 支付宝支付分为支付宝公钥和证书签名方式两种,如果需要使用退款功能要用证书签名方式开发

php接入支付宝证书方式签名
支付宝 PHP SDK 分为老版和新版,老版本的 PHP SDK(v3.4.2) 仅支持公钥方式加签。更新之后 PHP SDK 也可以使用证书进行签名和验签了。

支付宝官方 SDK 下载地址

下载之后将文件解压放到extend文件夹下的alipay文件


PHP普通调用示例(证书方式)
PHP接口里根据自己的需求获取订单标题/订单的描述/订单表中的订单号/订单金额

AliPay.php

<?php
/***** @package     APP支付宝支付** @subpackage  支付宝支付** @author      Tggui 2017-7-4 23:52:27**/
namespace app\app\model;use think\Controller;
use think\Model;class AliPay
{public function __construct(){require_once "/first/ky/extend/alipay/aop/AopCertClient.php";require_once "/first/ky/extend/alipay/aop/reques/AlipayTradeAppPayRequest.php";}/*** 创建APP支付订单** @param string $body 对一笔交易的具体描述信息。* @param string $subject 商品的标题/交易标题/订单标题/订单关键字等。* @param string $order_sn 商户网站唯一订单号* @param string $order_sn $total_amount   转账金额* @return array 返回订单信息*/public function tradeAppPay($body, $subject, $order_sn, $total_amount){$aop = new \AopCertClient();$appCertPath = "/cert/alipay/appCertPublicKey_2021002142648976.crt";$alipayPublicKey = "/cert/alipay/alipayCertPublicKey_RSA2.crt";$rootCertPath = "/www/cert/alipay/alipayRootCert.crt";$aop->gatewayUrl = 'https://openapi.alipay.com/gateway.do';$aop->appId = '你的appid';$aop->rsaPrivateKey = '你的应用私钥';$aop->alipayrsaPublicKey = $aop->getPublicKey($alipayCertPath);//调用getPublicKey从支付宝公钥证书中提取公钥$aop->apiVersion = '1.0';$aop->signType = 'RSA2';$aop->postCharset='utf-8';$aop->format='json';$aop->isCheckAlipayPublicCert = true;//是否校验自动下载的支付宝公钥证书,如果开启校验要保证支付宝根证书在有效期内$aop->appCertSN = $aop->getCertSN($appCertPath);//调用getCertSN获取证书序列号$aop->alipayRootCertSN = $aop->getRootCertSN($rootCertPath);//调用getRootCertSN获取支付宝根证书序列号//实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.trade.app.pay$request = new \AlipayTradeAppPayRequest();//SDK已经封装掉了公共参数,这里只需要传入业务参数$bizcontentarr = ['body' => $body,'subject' => $subject,'out_trade_no' => "$order_sn",'timeout_express' => '1d',//失效时间为 1天'total_amount' => "$total_amount",//价格'product_code' => 'QUICK_MSECURITY_PAY',];$bizcontent = json_encode($bizcontentarr, JSON_UNESCAPED_UNICODE);$host =' xxx.com';//商户外网可以访问的异步地址 (异步回掉地址,根据自己需求写)$request->setNotifyUrl("https://{$host}/app/pay/AliPayNotify");$request->setBizContent($bizcontent);//这里和普通的接口调用不同,使用的是sdkExecute$response = $aop->sdkExecute($request);return $response;}

我是将支付宝的配置写到了配置文件中,配置文件放在application/extra/alipay


这样基本可以调取到支付宝付款界面了,付款之后就是回调

 异步回调接口
class Pay extends Api
{/*** 支付宝支付异步通知*/public function AliPayNotify(){$request = input('post.');$signType = $request['sign_type'];$alipay = new AliPay();$flag = $alipay->rsaCheck($request, $signType);if ($flag) {//支付成功:TRADE_SUCCESS   交易完成:TRADE_FINISHEDif ($request['trade_status'] == 'TRADE_SUCCESS' || $request['trade_status'] == 'TRADE_FINISHED') {//这里根据项目需求来写你的操作 如更新订单状态等信息 更新成功返回'success'即可$object = json_decode(($request['fund_bill_list']), true);$trade_type = $object[0]['fundChannel'];$data1['batch'] = $request['trade_no']; //交易流水号$buyer_pay_amount = $request['buyer_pay_amount'];$out_trade_no = $request['out_trade_no']; //获取订单号//需求处理完成之后必须返回successexit('success'); //成功处理后必须输出这个字符串给支付宝}}}
}
/*** 异步通知验签** @param string $params 参数* @param string $signType 签名类型:默认RSA* @return bool 是否通过*/public function rsaCheck($params, $signType){$aop = new \AopCertClient();$alipayPublicKey = "/www/cert/alipay/alipayCertPublicKey_RSA2.crt";$aop->alipayrsaPublicKey = $aop->getPublicKey($alipayPublicKey);return $aop->rsaCheckV1($params, NULL, $signType);}

回调验签报错 openssl_verify(): supplied key param cannot be coerced into a public key
解决方案:
证书公钥要写上必须写(下面图中红色圈出)
必须!必须!必须!
重要的事情说三遍


完整的支付流程就走完了,支付成功之后的具体需求在回调接口里面完成即可!

TP5 对接支付宝支付接口开发详细步骤(证书签名方式)相关推荐

  1. android支付功能开发,对接支付宝支付接口开发详细步骤

    对接支付宝支付接口,官方文档已经写的很清楚了,但是也有很多像我一样的小白,第一次对接支付宝支付接口,会有些迷茫,所以我在此写下这篇文章,给我和我一样的同学,一点思路吧. 第一步:(先要在支付宝进行操做 ...

  2. 对接支付宝支付接口开发详细步骤

    之前做web项目接入支付宝,网上看了很多文档和案列,不是不讲重点就是过时不适用了,导致走了很多弯路,经过冷静分析总算跑通了,这里分享下接入流程. 第一步:(先要在支付宝进行操做,拿到我们需要开发的信息 ...

  3. 对接支付宝接口开发详细步骤

    对接支付宝支付接口,官方文档已经写的很清楚了,但是也有很多像我一样的小白,第一次对接支付宝支付接口,会有些迷茫,所以我在此写下这篇文章,给我和我一样的同学,一点思路吧. 第一步:(先要在支付宝进行操做 ...

  4. PHP版本对接支付宝支付接口 电脑网站 详细介绍 沙箱环境 超简单易懂

    PHP版本对接支付宝支付接口 其实理顺了思路后,按照我接下来的步骤来,真的超级简单啊,为啥有那么多的朋友们折腾了那么久呢,嘿嘿,接下来跟我走吧~ 我是昨天晚上洗完澡之后,大概八九点,才开始正式开工尝试 ...

  5. java支付接口开发原理_java对接微信支付接口开发的过程是什么?

    java对接微信支付接口开发的过程是什么?以下是小编整理的java对接微信支付接口实现的方法和过程,有需要的朋友可以学习以下的java对接微信支付接口内容. java对接微信支付接口开发的过程是什么? ...

  6. 订单支付功能对接支付宝支付接口

    求助:这张GIF的效果动图整了一个多小时,没找到好的编辑软件,都太难用了.如果恰巧看到这篇文章有好的GIF编辑或者录制软件,请推荐一 个!万谢 订单支付功能是购物的最后一个环节,本文将通过对接支付宝的 ...

  7. 支付宝html5接入,app和h5怎样对接支付宝支付接口?

    1.支付宝开放平台https://open.alipay.com 新增应用并签约手机网站支付/APP支付. 2.服务端使用java, 集成支付宝sdk. 3.为方便以后更多支付方式扩展, 先定义接口, ...

  8. 支付宝支付接口开发———在线扫码支付

    一.所需jar包 服务端sdk下载地址:https://doc.open.alipay.com/docs/doc.htm?spm=a219a.7629140.0.0.470nRM&treeId ...

  9. 支付宝支付接口开发总结

    1.需要向客户要的东西:.PID.Key.企业支付宝的账号 2.前期准备:注册好企业账号,然后申请支付套餐:https://b.alipay.com/order/productSet.htm 建议申请 ...

最新文章

  1. catia 桥接曲面圆角_4.3.7.1-Catia曲面之多桥接曲面_简单构面
  2. Java中操作字符串的工具类-判空、截取、格式化、转换驼峰、转集合和list、是否包含
  3. 经典C语言程序100例之八零
  4. RPC 框架之 Goole protobuf
  5. php输出mysql查返回行_php-MySQL简单查询返回零行
  6. BZOJ 3326 [SCOI2013]数数 (数位DP)
  7. 如何软件自动生成延时函数
  8. C#中MessageBox用法大全
  9. [书籍翻译]12周撰写期刊文章 学术出版成功指南——第 1 周:设计写作计划
  10. 最值得爸爸妈妈学习的儿童教育书籍推荐
  11. C语言实现计算数的整数次幂
  12. 顺丰数据治理总体框架与实践PPT(附下载)
  13. 【LeetCode】513. Find Bottom Left Tree Value
  14. 混合拉普拉斯分布(LMM)推导及实现
  15. CSS预处理器之Sass与Less
  16. P5303 [GXOI/GZOI2019]逼死强迫症 题解
  17. 【经典面试题】JS实现七种排序(冒泡、快排、归并、选择、插入、希尔、堆)
  18. 腾讯云配置密钥使用putty登录
  19. 51单片机课设——模拟电梯控制系统
  20. 四川途志:抖音直播带货什么产品最好卖?

热门文章

  1. 运行MeeGo SDK 的linux版本
  2. 2022-2028年全球与中国固体拦截器行业发展趋势及投资战略分析
  3. 模板卷积Template Convolution
  4. 如何选择适合你的兴趣爱好(四十七),健美操
  5. POD方法读书笔记(二)
  6. 【读论文】An Object-Based Approach for Urban Land Cover Classification(2013)
  7. 2021年中国A股上市企业市值百强排行榜:贵州茅台股价重回2000元/股,百济神州登陆A股科创板(附年榜TOP100详单)
  8. android zalo 分享sdk_zalo安卓版
  9. 【周易AIPU 仿真】R329开发板(仿真)部署AIPU初体验
  10. 使用python修改excel电子表格