Files
juipphp/alipay/AliverifyPublic.php
“wanyongkang” e993b0ea00 实名认证
2022-09-28 18:27:13 +08:00

204 lines
8.3 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
namespace alipay;
require_once APP_PATH . 'alipay/aop/AopCertClient.php';
require_once APP_PATH . 'alipay/aop/AopCertification.php';
require_once APP_PATH . 'alipay/aop/request/AlipayUserCertifyOpenInitializeRequest.php';
require_once APP_PATH . 'alipay/aop/request/AlipayUserCertifyOpenCertifyRequest.php';
require_once APP_PATH . 'alipay/aop/request/AlipayUserCertifyOpenQueryRequest.php';
require_once APP_PATH . 'alipay/aop/AopClient.php';
require_once APP_PATH . 'alipay/aop/request/AlipayOpenPublicTemplateMessageIndustryModifyRequest.php';
/**
* 证书类型AopClient功能方法使用测试
* 1、execute 调用示例
* 2、sdkExecute 调用示例
* 3、pageExecute 调用示例
*/
class AliverifyPublic
{
public static function initVerify($temp)
{
global $config;
$aop = new \AopCertClient();
$res = [];
$res['name'] = $temp['name'];
$res['id_code'] = $temp['id_code'];
$appCertPath = $config['alipay']['app_crt'];
$alipayCertPath = $config['alipay']['public_crt'];
$rootCertPath = $config['alipay']['root_crt'];
$aop->gatewayUrl = 'https://openapi.alipay.com/gateway.do';
$aop->appId = $config['alipay']['app_id'];
$aop->rsaPrivateKey = $config['alipay']['private_key'];
$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获取支付宝根证书序列号
$request = new \AlipayUserCertifyOpenInitializeRequest();
//$request = new AlipayUserCertifyOpenInitializeRequest (); //TODO 官方这个地方写错了,应该用下面的代码才能实现
$newsigndata=array();
$newsigndata['outer_order_no']=md5(time());
$newsigndata['biz_code']="FACE";
$newsigndata['identity_param']['identity_type']="CERT_INFO";
$newsigndata['identity_param']['cert_type']="IDENTITY_CARD";
$newsigndata['identity_param']['cert_name']=$res['name'];
$newsigndata['identity_param']['cert_no']= $res['id_code'];
$newsigndata['merchant_config']['return_url']="http://rg.jkip.com/";
$newsigndata['face_contrast_picture']="xydasf==";
$tosign=json_encode($newsigndata);
$request->setBizContent($tosign);
$result = $aop->execute ( $request);
$responseNode = str_replace(".", "_", $request->getApiMethodName()) . "_response";
$resultCode = $result->$responseNode->code;
$certify_id = $result->$responseNode->certify_id;
if(!empty($resultCode)&&$resultCode == 10000){
$request = new \AlipayUserCertifyOpenCertifyRequest ();
$data['certify_id'] = $certify_id;
$tosign=json_encode($data);
$request->setBizContent($tosign);
$result = $aop->pageExecute($request,"GET");
$res['certifyId'] = $certify_id;
$res['url'] = $result;
return $res;
} else {
return false;
}
}
public static function getResult($certify_id)
{
global $config;
$aop = new \AopCertClient();
$appCertPath = $config['alipay']['app_crt'];
$alipayCertPath = $config['alipay']['public_crt'];
$rootCertPath = $config['alipay']['root_crt'];
$aop->gatewayUrl = 'https://openapi.alipay.com/gateway.do';
$aop->appId = $config['alipay']['app_id'];
$aop->rsaPrivateKey = $config['alipay']['private_key'];
$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获取支付宝根证书序列号
$request = new \AlipayUserCertifyOpenQueryRequest ();
$data['certify_id'] = $certify_id;
$tosign=json_encode($data);
$request->setBizContent($tosign);
$result = $aop->execute ( $request);
$responseNode = str_replace(".", "_", $request->getApiMethodName()) . "_response";
$resultCode = $result->$responseNode->passed;
if($resultCode == 'T'){
return true;
} else {
return false;
}
}
public static function initVerify2($temp)
{
global $config;
$res = [];
$res['name'] = $temp['name'];
$res['id_code'] = $temp['id_code'];
$c = new \AopClient;
$c->gatewayUrl = "https://openapi.alipay.com/gateway.do";
$c->appId = $config['alipay2']['app_id'];
$c->rsaPrivateKey = $config['alipay2']['private_key'] ;
$c->format = "json";
$c->charset= "utf-8";
$c->signType= "RSA2";
$c->alipayrsaPublicKey = $config['alipay2']['public_key'];
//实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称alipay.open.public.template.message.industry.modify
$request = new \AlipayOpenPublicTemplateMessageIndustryModifyRequest();
//SDK已经封装掉了公共参数这里只需要传入业务参数
//此次只是参数展示,未进行字符串转义,实际情况下请转义
$newsigndata=array();
$newsigndata['outer_order_no']=md5(time());
$newsigndata['biz_code']="FACE";
$newsigndata['identity_param']['identity_type']="CERT_INFO";
$newsigndata['identity_param']['cert_type']="IDENTITY_CARD";
$newsigndata['identity_param']['cert_name']=$res['name'];
$newsigndata['identity_param']['cert_no']= $res['id_code'];
$newsigndata['merchant_config']['return_url']="http://www.juip.com/User/Index?realname=true";
$newsigndata['face_contrast_picture']="xydasf==";
$tosign=json_encode($newsigndata);
$request->setBizContent($tosign);
$result= $c->execute($request);
$responseNode = str_replace(".", "_", $request->getApiMethodName()) . "_response";
$resultCode = $result->$responseNode->code;
$certify_id = $result->$responseNode->certify_id;
if(!empty($resultCode)&&$resultCode == 10000){
$request = new \AlipayUserCertifyOpenCertifyRequest ();
$data['certify_id'] = $certify_id;
$tosign=json_encode($data);
$request->setBizContent($tosign);
$result = $c->pageExecute($request,"GET");
$res['certifyId'] = $certify_id;
$res['url'] = $result;
return $res;
} else {
return false;
}
}
public static function getResult2($certify_id)
{
//--------------------------------
global $config;
$aop = new \AopClient ();
$aop->gatewayUrl = 'https://openapi.alipay.com/gateway.do';
$aop->appId = $config['alipay2']['app_id'];;
$aop->rsaPrivateKey = $config['alipay2']['private_key'] ;
$aop->format = "json";
$aop->charset= "utf-8";
$aop->signType= "RSA2";
$aop->alipayrsaPublicKey = $config['alipay2']['public_key'];
$aop->format='json';
$request = new \AlipayUserCertifyOpenCertifyRequest ();
$data['certify_id'] = $certify_id;
$tosign=json_encode($data);
$request->setBizContent($tosign);
$result = $aop->execute ( $request);
$responseNode = str_replace(".", "_", $request->getApiMethodName()) . "_response";
$resultCode = $result->$responseNode->passed;
if($resultCode == 'T'){
return true;
} else {
return false;
}
}
}