PHP封装cURL方法,同时支持JWT认证、SSL证书认证

工欲善其事,必先利其器

 

封装一个规范、多用、满足各种场景的cURL请求方法,不仅可以提高研发效率,而且保障项目代码质量、便于维护。

<?php

/**
 * cURL请求方法
 *
 * @param string $url 目标地址
 * @param string $sData post数据
 * @param string $second 最大请求时间
 * @param string $aHeader Header头
 * @param string $aCertfile cert file path
 * @return array 返回网页内容
 */
function curl_post_ssl($url, $sData, $second = 30, $aHeader = [], $aCertfile = [])
{
    $ch = curl_init();
    
    curl_setopt($ch, CURLOPT_TIMEOUT, $second);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
    
    if( isset($aCertfile['cert']) ){                
        curl_setopt($ch, CURLOPT_SSLCERTTYPE, 'PEM');
        curl_setopt($ch, CURLOPT_SSLCERT, $aCertfile['cert']);
    }
    
    if( isset($aCertfile['key']) ){                
        curl_setopt($ch, CURLOPT_SSLKEYTYPE, 'PEM');
        curl_setopt($ch, CURLOPT_SSLKEY, $aCertfile['key']);
    }
 
    if( count($aHeader) >= 1 ){
        curl_setopt($ch, CURLOPT_HTTPHEADER, $aHeader);
    }
    
    if( $sData ){
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $sData);
    }
 
    $data = curl_exec($ch);
    
    if ($data) {
        curl_close($ch);
        return $data;
    } else {
        $error = curl_errno($ch);
        curl_close($ch);
        return false;
    }
}


//POST 数据
$apiParams = [
    //...
];

//目标地址
$sGateway = "https://openapi.alipay.com/gateway.do";

//您获取的accessToken
$accessToken = "xxxx";

//Example 1:请求accessToken认证的网关接口
$sResponse = curl_post_ssl( $sGateway, http_build_query($apiParams), 30, ["Authorization: bearer {$accessToken}"] );
    
    
    
//目标地址
$sGateway = "https://api.mch.weixin.qq.com/secapi/pay/refund";

$certFile = [
    'cert' => "./wechat/apiclient_cert.pem",
    'key' => "./wechat/apiclient_key.pem"
];

//Example 2:请求带SSL证书认证的网关接口
$sResponse = curl_post_ssl($sGateway, $apiParams, 6, [], $certFile);

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值