118 lines
4.9 KiB
PHP
118 lines
4.9 KiB
PHP
<?php
|
|
|
|
namespace extend\alipay;
|
|
|
|
require_once APP_PATH . 'extends/alipay/aop/AopCertClient.php';
|
|
require_once APP_PATH . 'extends/alipay/aop/AopCertification.php';
|
|
require_once APP_PATH . 'extends/alipay/aop/request/AlipayUserCertifyOpenInitializeRequest.php';
|
|
require_once APP_PATH . 'extends/alipay/aop/request/AlipayUserCertifyOpenCertifyRequest.php';
|
|
require_once APP_PATH . 'extends/alipay/aop/request/AlipayUserCertifyOpenQueryRequest.php';
|
|
|
|
/**
|
|
* 证书类型AopClient功能方法使用测试
|
|
* 1、execute 调用示例
|
|
* 2、sdkExecute 调用示例
|
|
* 3、pageExecute 调用示例
|
|
*/
|
|
|
|
class Aliverify
|
|
{
|
|
|
|
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://vps.juip.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;
|
|
}
|
|
|
|
}
|
|
|
|
|
|
}
|