tp框架 对接支付宝身份验证产品
对接支付宝身份验证产品
环境要求
- Alipay SDK for PHP 需要 PHP 5.5 以上的开发环境。
- tp 框架
- 使用 Alipay SDK for PHP 之前 ,您需要先前往支付宝开发平台-开发者中心完成开发者接入的一些准备工作,包括创建应用、为应用添加功能包、设置应用的接口加签方式等。
- 准备工作完成后,注意保存如下信息,后续将作为使用SDK(店家下载sdk)的输入。
- 加签模式为公钥证书模式时(推荐)
- 使用证书验证
AppID
、
应用的私钥、
应用的公钥证书文件、
支付宝公钥证书文件、
支付宝根证书文件
加签模式为公钥模式时
AppId
、
应用的私钥、
应用的公钥、
支付宝公钥
第一步:进行身份认证初始化
-
下载sdk 将sdk放到项目中的/extend/目录下
-
-
创建一个控制器,在控制器中引入下载好的sdk
-
require_once(EXTEND_PATH.'alipaysdk/aop/AopClient.php'); require_once(EXTEND_PATH.'alipaysdk/aop/AopCertClient.php'); require_once(EXTEND_PATH.'alipaysdk/aop/AopCertification.php'); require_once(EXTEND_PATH.'alipaysdk/aop/request/AlipayUserCertifyOpenInitializeRequest.php'); require_once(EXTEND_PATH.'alipaysdk/aop/request/AlipayTradeQueryRequest.php'); require_once(EXTEND_PATH.'alipaysdk/aop/request/AlipayTradeWapPayRequest.php'); require_once(EXTEND_PATH.'alipaysdk/aop/request/AlipayTradeAppPayRequest.php'); require_once(EXTEND_PATH.'alipaysdk/aop/request/AlipayUserCertifyOpenCertifyRequest.php');
-
将文档中给出的代码复制到项目中
$c = new \AopCertClient(); // 因为是引入的类所以要添加 '\' $appCertPath = "应用证书路径(要确保证书文件可读),例如:/home/admin/cert/appCertPublicKey.crt"; $alipayCertPath = "支付宝公钥证书路径(要确保证书文件可读),例如:/home/admin/cert/alipayCertPublicKey_RSA2.crt"; $rootCertPath = "支付宝根证书路径(要确保证书文件可读),例如:/home/admin/cert/alipayRootCert.crt"; $c->gatewayUrl = "应用网关"; $c->appId = '应用id'; $c->rsaPrivateKey = '密钥'; $c->format = "json"; $c->charset= "UTF-8"; $c->signType= "RSA2"; //调用getPublicKey从支付宝公钥证书中提取公钥 $c->alipayrsaPublicKey = $c->getPublicKey($alipayCertPath); //是否校验自动下载的支付宝公钥证书,如果开启校验要保证支付宝根证书在有效期内 $c->isCheckAlipayPublicCert = true; //调用getCertSN获取证书序列号 $c->appCertSN = $c->getCertSN($appCertPath); //调用getRootCertSN获取支付宝根证书序列号 $c->alipayRootCertSN = $c->getRootCertSN($rootCertPath); //实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.open.public.template.message.industry.modify $request = new \AlipayUserCertifyOpenInitializeRequest();// 因为是引入的类所以要添加 '\' 进行身份认证初始化 //SDK已经封装掉了公共参数,这里只需要传入业务参数 //此次只是参数展示,未进行字符串转义,实际情况下请转义 /* • cert_type:证件类型,必填,当前支持: • IDENTITY_CARD:身份证。 • HOME_VISIT_PERMIT_HK_MC:港澳居民来往内地通行证。 • HOME_VISIT_PERMIT_TAIWAN:台湾居民来往内地通行证。 • RESIDENCE_PERMIT_HK_MC:港澳居民居住证。 • RESIDENCE_PERMIT_TAIWAN:台湾居民居住证。*/ $request->setBizContent(json_encode([ "outer_order_no" => md5("XYLD".substr(time(), -9).rand(0,10000).uniqid()), // 随机32位唯一标识 "biz_code" => "CERT_PHOTO", "identity_param" => [ "identity_type" => "CERT_INFO", "cert_type" => "IDENTITY_CARD", "cert_name" => "真实姓名", "cert_no" => "真实身份证号" ], "merchant_config" => ["return_url" => "回到页面地址"], "face_contrast_picture" => "xydasf==" ], JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES)); $response= $c->execute($request); $certify_id = json_decode(json_encode($response),TRUE); dd($response);
第二步:身份认证开始认证
$certify_id = json_decode(json_encode($response),TRUE)["alipay_user_certify_open_initialize_response"]["certify_id"]; // 上面认证拿到的certify_id 作为参数传入 $request = new \AlipayUserCertifyOpenCertifyRequest (); $request->setBizContent(json_encode([ "certify_id" => $certify_id ], JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES)); $result = $c->pageExecute ( $request); dd($result);
后续就是验证 没有记录
over! over! over!
接入就完成了。
接入中如果出现
- Exception 找不到这个类
// 在alipaysdk\aop\AopClient类中添加 use think\Exception;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具