博客园 首页 私信博主 显示目录 隐藏目录 管理 动画

tp框架 对接支付宝身份验证产品

对接支付宝身份验证产品

环境要求
  1. Alipay SDK for PHP 需要 PHP 5.5 以上的开发环境。
  2. tp 框架
  3. 使用 Alipay SDK for PHP 之前 ,您需要先前往支付宝开发平台-开发者中心完成开发者接入的一些准备工作,包括创建应用、为应用添加功能包、设置应用的接口加签方式等。
  4. 准备工作完成后,注意保存如下信息,后续将作为使用SDK(店家下载sdk)的输入。
  • 加签模式为公钥证书模式时(推荐)
  • 使用证书验证

AppID应用的私钥应用的公钥证书文件支付宝公钥证书文件支付宝根证书文件

  • 加签模式为公钥模式时

  • AppId应用的私钥应用的公钥支付宝公钥

第一步:进行身份认证初始化

  1. 下载sdk 将sdk放到项目中的/extend/目录下

  2. image-20211216155359478

  3. 创建一个控制器,在控制器中引入下载好的sdk

  4. image-20211216155425383

    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');
    
  5. 将文档中给出的代码复制到项目中

    $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!

接入就完成了。

接入中如果出现

  1. Exception 找不到这个类

image

// 在alipaysdk\aop\AopClient类中添加 use think\Exception;
posted @   八月情  阅读(465)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· 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工具
点击右上角即可分享
微信分享提示