求帮忙写个案列 php代码翻译易语言如何让写[PHP] 纯文本查看 复制代码 <?php
//require_once 'aop/AopCertClient.php';
//require_once 'aop/AopCertification.php';
//require_once 'aop/request/AlipayTradeQueryRequest.php';
//require_once 'aop/request/AlipayTradeWapPayRequest.php';
//require_once 'aop/request/AlipayOpenOperationOpenbizmockBizQueryRequest.php';
//$aop = new AopCertClient ();
$appCertPath = dirname(__FILE__) . "\appCertPublicKey_2021002180699711.crt";
$alipayCertPath = dirname(__FILE__) . "\alipayCertPublicKey_RSA2.crt";
$certContent = dirname(__FILE__) . "\alipayRootCert.crt";
//$aop->gatewayUrl = 'https://openapi.alipay.com/gateway.do';
//$aop->appId = '2021002180699711';
//$aop->rsaPrivateKey = 'MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCAa1Bn04GbHPPPqntp31OeMS3DBaD35IkiWuUCCK9MqYVGkpG3fd5X24TActIyCTlWpOq69pKoin7ifcvbZodNrbYn51rN4JpgOjCXW1Cn85DxVPzxRNAJlvgpauTgC86/EFaWKqmThe8pCX/v2WGJlOS7UBsmv8x9UG1PZGldMOqkF3qbQP8jBfAGWpGI1d1WVRscAMxMFE74n13g/jj7NZSSRXTiIC82zcGad+tvDnVZ5KvkI6UT9DutgqRWmhQkXE8f9NYQjjEmA1FXkl9USgxnAUgLY+2gFq+W5/JQJJOAiT57pZolDWMuZtOWQiVXTm24p/hc0MYxxsX85khTAgMBAAECggEAFTWkKgG8vimh+wJlL6862D23GSas10RfgdURTayxhy/YWzeJ6YxYVJpk6oQMQ0dSuQSz3/0pa7y0CCROrwXYAvRVyXFkhew6kvoJXHYwdAy+O52VySNcWLkec3i8JGTO2K+SHWseZscQIO74ulxkx5xXyrgIQ/YZh/jolNw4qrNVkJffU4JmID3sD3nQ/7C00JyPqUJsCOxUROdmy9G2y75mZ1NO1T6JmE9UNveMPVfL5GtDKEDLLRnZcJE1vQzhyESKLoEu15rjMUbZSIUKP4c/0eqGqTRjTEgYwTvC5FItMfI/D/JXST7SEUICyh6ccgpiIHjGxFDYBT6x0GdZQQKBgQC/26c+azrm6R5hzyvdWuN/vtTxZEoXkEJlCKyo665umAv6PblOY6yNMyIbDfhcy8LsDqnZ2cJOXjfKbTZHubH3+Lb743z5V3JnGEs515o3wB+BYnGFXYVxn6gX6a23nYoDOIQyZfmaJSbXGOOoaK+EfVLmJ+EIA7qvgZTjz2RdnwKBgQCrWjCpqOM90PylK+FOWWytaCpx2506DAk6s1B3lAvNeY42Gmt18uClEaZvVw1jYewlSq6gYnVQU5tdhCll7OFTfKrBGD/rRgdJ3EmIeQIeAqEA3hi79/eK7vHI1u+VU7CqS3BOERkAq++9dzyv57ixfIp5HjylHIxuVlnUMpawzQKBgAoby6MJSVAzRiuHG9uM12G6r0OMsi6tpiHmpBo+WLFxB2iG6gWMUOIbqJdeVBCnl7ySRTa6N3ejlTLwMCT1TsAu9Y0t/j6w8dEmwYfpqTF4yPArPKn3NHm5HMUtxb5f6Y6j4qs5Hj6V6Ib6w7vy0BSd+ckwnrWqZKKspCigm7wnAoGAC+bPynj4j6qcYbySgaakbcb2a8IdQZLkcTdTN3sI9tSilA9xt1ePUufO75zUSTrb9Bsj1fAAxfuIpw4u8e1qGSpnkdHlXqoWh4LNeLUu+HamSDEk9qlagEPod1K2gWC2vJ1Qx5tYaTuIA1js1ir6IRnNZGw9OhqphmBpDNwWq2ECgYAQoSkjYpaGRP4ugw4QP5s2THvK2zgUvvM5RGYLvgMkwIE4T+Gfc9rbaYFQfCBz+ryFYFXjetMQ9onDiD95868nd+gioEaPQgSmCOlyNytn0DLrNucYKa7KSLAMu4pe2Ves7+YILHU7GvPK6JEK9z6PYO43fbtu/TyxYdWyQzVkfw==';
//$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获取证书序列号
$p = [];
$str = file_get_contents($certContent );
$p["alipay_root_cert_sn"] = getRootCertSN($str);
$str = file_get_contents('./alipayCertPublicKey_RSA2.crt');
$p["alipay_cert_sn"] = getCertSN($str);
$str = file_get_contents($appCertPath);
$p["app_cert_sn"] = getCertSN($str);
var_export($p);
function getRootCertSN($str)
{
$arr = preg_split('/(?=-----BEGIN)/', $str, -1, PREG_SPLIT_NO_EMPTY);
var_dump($arr );
$str = null;
foreach ($arr as $e) {
$sn = getCertSN($e, true);
if (!$sn)
continue;
if ($str === null)
$str = $sn;
else
$str .= "_" . $sn;
}
return $str;
}
function getCertSN($str, $matchAlgo=false)
{
/*
根据java SDK源码:AntCertificationUtil::getRootCertSN
对证书链中RSA的项目进行过滤(猜测是gm国密算法java抛错搞不定,故意略去)
java源码为:
if(c.getSigAlgOID().startsWith("1.2.840.113549.1.1"))
根据 https://www.alvestrand.no/objectid/1.2.840.113549.1.1.html
该OID为RSA算法系。
*/
if ($matchAlgo) {
openssl_x509_export($str, $out, false);
if (!preg_match('/Signature Algorithm:.*?RSA/im', $out, $m))
return;
}
$a = openssl_x509_parse($str);
$issuer = null;
// 注意:根据java代码输出,需要倒着排列 CN,OU,O
foreach ($a["issuer"] as $k=>$v) {
if ($issuer === null) {
$issuer = "$k=$v";
}
else {
$issuer = "$k=$v," . $issuer;
//echo $issuer ."<br>";
//echo $a["serialNumber"] ."<br>";
}
}
$sn = md5($issuer . $a["serialNumber"]);
return $sn;
}
|