公钥证书方式下如何使用HTTP方式调用支付宝接口

本文介绍了在公钥证书环境下,如何通过HTTP方式调用支付宝接口。分享了转化SN码、生成签名等关键步骤的代码,并提供了调用支付宝模板消息接口的示例,帮助开发者理解并实现相关功能。
摘要由CSDN通过智能技术生成

       最近因为业务需求,公司调用支付宝接口采用公钥证书方式,由于之前使用的是普通公钥方式,所以我也抽空研究了两者不同,最终在公钥证书方式下采用HTTP方式调用接口,成功请求支付宝接口,下面跟大家分享代码,首先是公钥证书方式下转化SN码代码:

/**
 * 从证书中提取公钥
 * @param $cert
 * @return mixed
 */
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;
}

/**
 * 从证书中提取序列号
 * @param $cert
 * @return string
 */
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
 */
function getRootCertSN($certPath)
{
    $cert = file_get_contents($certPath);
    $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'] = hex2dec($ssl[$i]['serialNumber']);
        }
        if ($ssl[$i]['signatureTypeLN'] == "sha1WithRSAEncryption" || 
        $ssl[$i]['signatureTypeLN'] == "sha256WithRSAEncryption") {
            if ($SN == null) {
                $SN = md5(array2string(array_reverse($ssl[$i]['issuer'])) . 
  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

佛布朗斯基

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值