<?php
require_once 'AopEncrypt.php';
require_once 'AopCertification.php';
require_once 'EncryptParseItem.php';
require_once 'EncryptResponseData.php';
require_once 'SignData.php';
class AopCertClient
{
//应用证书地址
public $appCertSN;
//支付宝公钥证书地址
public $alipayCertSN;
//支付宝根证书地址
public $alipayRootCertSN;
//支付宝根证书地址
public $alipayRootCertContent;
//是否校验支付宝公钥证书
public $isCheckAlipayPublicCert;
//应用ID
public $appId;
//私钥文件路径
public $rsaPrivateKeyFilePath;
//私钥值
public $rsaPrivateKey;
//网关
public $gatewayUrl = "https://openapi.alipay.com/gateway.do";
//返回数据格式
public $format = "json";
//api版本
public $apiVersion = "1.0";
// 表单提交字符集编码
public $postCharset = "UTF-8";
//使用文件读取文件格式,请只传递该值
public $alipayPublicKey = null;
//使用读取字符串格式,请只传递该值
public $alipayrsaPublicKey;
public $debugInfo = false;
//签名类型
public $signType = "RSA";
//加密密钥和类型
public $encryptKey;
public $encryptType = "AES";
protected $alipaySdkVersion = "alipay-sdk-php-easyalipay-20191227";
private $fileCharset = "UTF-8";
private $RESPONSE_SUFFIX = "_response";
private $ERROR_RESPONSE = "error_response";
private $SIGN_NODE_NAME = "sign";
private $ALIPAY_CERT_SN = "alipay_cert_sn";
//加密XML节点名称
private $ENCRYPT_XML_NODE_NAME = "response_encrypted";
private $needEncrypt = false;
private $targetServiceUrl = "";
/**
* 从证书中提取序列号
* @param $cert
* @return string
*/
public function getCertSN($certPath)
{
$cert = file_get_contents($certPath);
$ssl = openssl_x509_parse($cert);
$SN = md5(array2string(array_reverse($ssl['issuer'])) . $ssl['serialNumber']);
return $SN;
}
/**
* 提取根证书序列号
* @param $cert 根证书
* @return string|null
*/
public function getRootCertSN($certPath)
{
$cert = file_get_contents($certPath);
$this->alipayRootCertContent = $cert;
$array = explode("-----END CERTIFICATE-----", $cert);
$SN = null;
for ($i = 0; $i < count($array) - 1; $i++) {
$ssl[$i] = openssl_x509_parse($array[$i] . "-----END CERTIFICATE-----");
if (strpos($ssl[$i]['serialNumber'], '0x') === 0) {
$ssl[$i]['serialNumber'] = $this->hex2dec($ssl[$i]['serialNumber']);
}
if ($ssl[$i]['signatureTypeLN'] == "sha1WithRSAEncryption" || $ssl[$i]['signatureTypeLN'] == "sha256WithRSAEncryption") {
if ($SN == null) {
$SN = md5(array2string(array_reverse($ssl[$i]['issuer'])) . $ssl[$i]['serialNumber']);
} else {
$SN = $SN . "_" . md5(array2string(array_reverse($ssl[$i]['issuer'])) . $ssl[$i]['serialNumber']);
}
}
}
return $SN;
}
/**
* 0x转高精度数字
* @param $hex
* @return int|string
*/
function hex2dec($hex)
{
$dec = 0;
$len = strlen($hex);
for ($i = 1; $i <= $len; $i++) {
$dec = bcadd($dec, bcmul(strval(hexdec($hex[$i - 1])), bcpow('16', strval($len - $i))));
}
return $dec;
}
/**
* 从证书中提取公钥
* @param $cert
* @return mixed
*/
public function getPublicKey($certPath)
{
$cert = file_get_contents($certPath);
$pkey = openssl_pkey_get_public($cert);
$keyData = openssl_pkey_get_details($pkey);
$public_key = str_replace('-----BEGIN PUBLIC KEY-----', '', $keyData['key']);
$public_key = trim(str_replace('-----END PUBLIC KEY-----', '', $public_key));
return $public_key;
}
/**
* 验证签名
* 在使用本方法前,必须初始化AopCertClient且传入公钥参数。
* 公钥是否是读取字符串还是读取文件,是根据初始化传入的值判断的。
*
* @param $params
* @param $rsaPublicKeyFilePath
* @param string $signType
* @return bool
*/
public function rsaCheckV1($params, $rsaPublicKeyFilePath, $signType = 'RSA')
{
$sign = $params['sign'];
$params['sign_type'] = null;
$params['sign'] = null;
return $this->verify($this->getSignContent($params), $sign, $rsaPublicKeyFilePath, $signType);
}
/**
* 验证签名
* 在使用本方法前,必须初始化AopCertClient且传入公钥参数。
* 公钥是否是读取字符串还是读取文件,是根据初始化传入的值判断的。
*
* @param $params
* @param $rsaPublicKeyFilePath
* @param string $signType
* @return bool
*/
public function rsaCheckV2($params, $rsaPublicKeyFilePath, $signType = 'RSA')
{
$sign = $params['sign'];
$params['sign'] = null;
return $this->verify($this->getSignContent($params), $sign, $rsaPublicKeyFilePath, $signType);
}
/**
* 在使用本方法前,必须初始化AopCertClient且传入公私钥参数。
* 公钥是否是读取字符串还是读取文件,是根据初始化传入的值判断的。
**/
public function checkSignAndDecrypt($params, $rsaPublicKeyPem, $rsaPrivateKeyPem, $isCheckSign, $isDecrypt, $signType = 'RSA')
{
$charset = $params['charset'];
$bizContent = $params['biz_content'];
if ($isCheckSign) {
if (!$this->rsaCheckV2($params, $rsaPublicKeyPem, $signType)) {
echo "<br/>checkSign failure<br/>";
exit;
}
}
if ($isDecrypt) {
return $this->rsaDecrypt($bizContent, $rsaPrivateKeyPem, $charset);
}
return $bizContent;
}
/**
* 在使用本方法前,必须初始化AopCertClient且传入公私钥参数。
* 公钥是否是读取字符串还是读取文件,是根据初始化传入的值判断的。
**/
public function encryptAndSign($bizContent, $rsaPublicKeyPem, $rsaPrivateKeyPem, $charset, $isEncrypt, $isSign, $signType = 'RSA')
{
// 加密,并签名
if ($isEncrypt && $isSign) {
$encrypted = $this->rsaEncrypt($bizContent, $rsaPublicKeyPem, $charset);
$sign = $this->sign($encrypted, $signType);
$response = "<?xml version=\"1.0\" encoding=\"$charset\"?><alipay><response>$encrypted</response><encryption_type>RSA</encryption_type><sign>$sign</sign><sign_type>$signType</sign_type></alipay>";
return $response;
}
// 加密,不签名
if ($isEncrypt && (!$isSign)) {
$encrypted = $this->rsaEncrypt($bizContent, $rsaPublicKeyPem, $charset);
$response = "<?xml version=\"1.0\" encoding=\"$charset\"?><alipay><response>$encrypted</response><encryption_type>$signType</encryption_type></alipay>";
return $response;
}
// 不加密,但签名
if ((!$isEncrypt) && $isSign) {
$sign = $this->sign($bizContent, $signType);
$response = "<?xml version=\"1.0\" encoding=\"$charset\"?><alipay><response>$bizContent</response><sign>$sign</sign><sign_type>$signType</sign_type></alipay>";
return $response;
}
// 不加密,不签名
$response = "<?xml version=\"1.0\" encoding=\"$charset\"?>$bizContent";
return $response;
}
/**
* 在使用本方法前,必须初始化AopCertClient且传入公私钥参数。
**/
public function rsaEncrypt($data, $rsaPublicKeyFilePath, $charset)
{
if ($this->checkEmpty($this->alipayPublicKey)) {
//读取字符串
$pubKey =
没有合适的资源?快使用搜索试试~ 我知道了~
PHP实例开发源码-PHP得推CMS乡镇拼车系统.zip
共1376个文件
php:1375个
readme:1个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 43 浏览量
2022-10-15
17:15:18
上传
评论
收藏 1.23MB ZIP 举报
温馨提示
PHP实例开发源码—PHP得推CMS乡镇拼车系统.zip PHP实例开发源码—PHP得推CMS乡镇拼车系统.zip PHP实例开发源码—PHP得推CMS乡镇拼车系统.zip
资源推荐
资源详情
资源评论
收起资源包目录
PHP实例开发源码-PHP得推CMS乡镇拼车系统.zip (1376个子文件)
AopCertClient.php 47KB
AopClient.php 40KB
AopCertification.php 16KB
AlipayAcquireCreateandpayRequest.php 11KB
AlipayOpenAgentZhimabriefSignRequest.php 9KB
AlipayAcquireCreateRequest.php 9KB
AlipayMobileLoginUnifyalipayLoginRequest.php 9KB
AlipayMemberCardTemplateSaveRequest.php 9KB
AlipayAcquirePrecreateRequest.php 8KB
AlipayEbppPdeductSignAddRequest.php 8KB
AlipayOpenAgentFacetofaceSignRequest.php 6KB
AlipayEbppBillAddRequest.php 6KB
AlipayOpenAgentZhimarentSignRequest.php 6KB
AlipayInsDataDsbImageUploadRequest.php 6KB
AlipayMobilePublicMultiMediaClient.php 6KB
AlipayEbppBillAddTeachRequest.php 5KB
AlipayOpenAgentMobilepaySignRequest.php 5KB
AlipayMobileSecuritiesInfoUpdateRequest.php 5KB
AlipayOpenAgentMiniCreateRequest.php 5KB
AlipayOpenAgentOfflinepaymentSignRequest.php 5KB
AlipayAcquireOverseasSpotPayRequest.php 5KB
AlipayEbppPdeductPayRequest.php 5KB
AlipayMobilePublicInfoModifyRequest.php 4KB
AlipayAcquireRefundRequest.php 4KB
AlipayMobileCodeCreateRequest.php 4KB
AlipayEcardEduDepositOrderAddRequest.php 4KB
AlipayEcapiprodDataPutRequest.php 4KB
AlipayDiscoveryTaxiOrderConfirmRequest.php 4KB
AlipayFundTransferBatchCreatebatchRequest.php 4KB
AlipayMemberCouponQuerylistRequest.php 4KB
AlipayEbppPdeductSignCancelRequest.php 4KB
AlipayInsSceneClaimAttachmentUploadRequest.php 4KB
AlipayEbppBillSearchRequest.php 4KB
AlipayEcapiprodDrawndnRepaymentrecordQueryRequest.php 4KB
AlipayEcapiprodDrawndnFeerecordQueryRequest.php 4KB
AlipayEcapiprodDrawndnLendingrecordQueryRequest.php 3KB
AlipayMicropayOrderFreezeRequest.php 3KB
AlipayEbppBillSearchTeachRequest.php 3KB
AlipayMarketingCampaignRuleTagCreateRequest.php 3KB
AlipayAcquireOverseasSpotRefundRequest.php 3KB
AlipayMobilePublicAccountResetRequest.php 3KB
AlipayMobilePublicAccountAddRequest.php 3KB
AlipayMobileUrlDeviceverifyAddRequest.php 3KB
AlipayMicropayOrderConfirmpayurlGetRequest.php 3KB
AlipayCertifyVerifyIdcardRequest.php 3KB
AlipayEcardEduBalanceGetRequest.php 3KB
AlipayMicropayOrderDirectPayRequest.php 3KB
AlipayEcardEduPublicBindRequest.php 3KB
AlipayDataAlisisOlapQueryRequest.php 3KB
AlipayFundTransferBatchCreateorderRequest.php 3KB
AlipayInsDataAutodamageImageUploadRequest.php 3KB
AlipayInsDataAutoCoefficientSyncRequest.php 3KB
AlipayEbppRechargeItemGetRequest.php 3KB
AlipayMobileRecommendGetRequest.php 3KB
AlipayEcapiprodDrawndnContractGetRequest.php 3KB
AlipayEcapiprodDrawndnPaymentscheduleGetRequest.php 3KB
AlipayEcapiprodDrawndnDrawndnlistQueryRequest.php 3KB
AlipayEcapiprodCreditGetRequest.php 3KB
AlipayGotoneMessageCourierSendRequest.php 3KB
AlipayAcquireCancelRequest.php 3KB
AlipayGotoneMessageMailSendRequest.php 3KB
AlipayEbppRechargeItemUpdateRequest.php 3KB
AlipayOfflineMaterialImageUploadRequest.php 3KB
AlipayEbppConfigProductSearchRequest.php 3KB
AlipayEbppProdmodeAgreementUploadRequest.php 3KB
AlipayDataServiceOpenAnalyzeRequest.php 3KB
AlipayGotoneAckcodeVerifyRequest.php 3KB
AlipayEbppRechargeOrderUpdateRequest.php 3KB
AlipayLifeassistantProdGatewayAccessRequest.php 3KB
AlipayGotoneMessageSmsSendRequest.php 3KB
AlipayEbppConfigChargeinstSearchRequest.php 3KB
AlipayLifeassistantProdBillGetRequest.php 3KB
AlipayEcapiprodFileUploadRequest.php 3KB
AlipayCommerceAppUploadRequest.php 3KB
AlipayDataAlisisSpeedupQueryRequest.php 3KB
AlipayDataAlisisSpeedupEnableRequest.php 3KB
AlipayDataAlisisAuthorityGrantRequest.php 2KB
AlipayAcquireCloseRequest.php 2KB
AlipayOfflineMarketingVoucherCodeUploadRequest.php 2KB
AlipayMobileMovieActivityNotifyRequest.php 2KB
AlipayDatabizCorePaymentAbilityGetRequest.php 2KB
AlipayDataBillDownloadurlGetRequest.php 2KB
AlipayOpenAppFangzhongGetRequest.php 2KB
AlipayOfflineMarketShopPublicUnbindRequest.php 2KB
AlipayEbppConfigCitySearchRequest.php 2KB
AlipayFlashsalesStockSyncUpdateRequest.php 2KB
AlipayMobilePublicMessageCustomSendRequest.php 2KB
AlipayOfflineMarketShopPublicBindRequest.php 2KB
AlipayMobileStdPublicMessageMatcherSendRequest.php 2KB
AlipayMobilePublicMessageMatcherSendRequest.php 2KB
AlipayMobileBksigntokenVerifyRequest.php 2KB
AlipayDataAlisisAuthorityQueryRequest.php 2KB
AlipayMobileUrlDeviceverifyQueryRequest.php 2KB
AlipayMobilePublicMultiMediaExecute.php 2KB
AlipayBaitiaoprodAccountQueryRequest.php 2KB
AlipayOfflineMarketShopModifyRequest.php 2KB
AlipayAcquireQueryRequest.php 2KB
AlipayEbppBillGetRequest.php 2KB
AlipayMobileShakeUserQueryRequest.php 2KB
AlipayMobileDeviceinfoGetidbytokenRequest.php 2KB
共 1376 条
- 1
- 2
- 3
- 4
- 5
- 6
- 14
资源评论
易小侠
- 粉丝: 6476
- 资源: 9万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功