php curl提交数据请求封装方法

/**
 * 调用curl提交请求
 */
public function index(){
    $url = 'http://192.168.2.50:8083/gateway/payapi/1.0/doPay'; 
    $data = array(
        'appid'  => '1293392335',                   //商户号
        'method' => 'ali_native',                   //接口名称
        'data' => array(
            'store_id'            =>'',                     //多个门店可选传,如不传系统默认已创建最早的门店为主
            'total'               =>1,                      //总金额 单位:分
            'nonce_str'           =>'t2s4rkfbti20m26g',     //随机字符串 字符范围a-zA-Z0-9
            'body'                =>'VIP',                  //商品名称
            'out_trade_no'        =>'KY180926510710745562', //订单号
        ),
    );
    $data['sign'] = $this->Sign($data['data']);

    $jsonStr = json_encode($data);

    $result = json_decode($this->curl_post($url,$jsonStr),true);
    dd($result);
}

/**
 * curl提交请求
 * @param $url 提交地址
 * @param array $data
 * @param bool $https
 * @return mixed
 */
public function curl_post($url,$data=array(),$https=true)
{
    $curl = curl_init();                                    //创建一个新CURL资源 返回一个CURL句柄,出错返回 FALSE。
    curl_setopt($curl, CURLOPT_REFERER,$_SERVER['HTTP_HOST']);           //构造来源
    curl_setopt($curl, CURLOPT_USERAGENT,$_SERVER['HTTP_USER_AGENT']);     //模拟用户使用的浏览器
    curl_setopt($curl, CURLOPT_CONNECTTIMEOUT,300);                    //在发起连接前等待的时间,如果设置为0,则无限等待。
    curl_setopt($curl, CURLOPT_TIMEOUT, 300);                     //设置CURL允许执行的最长秒数
    curl_setopt($curl, CURLOPT_RETURNTRANSFER,true);               //获取的信息以文件流的形式返回,而不是直接输出。
    if ($https) {                                                       //设置为https请求,不验证证书和hosts
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
    }
    $header[] = 'ContentType:application/json;charset=UTF-8';
    curl_setopt($curl, CURLOPT_HTTPHEADER, $header);               //用来设置HTTP头字段的数组
    curl_setopt($curl, CURLOPT_URL, $url);                          //设置请求地址
    curl_setopt($curl, CURLOPT_POST,true);                       //发送POST请求
    curl_setopt($curl, CURLOPT_POSTFIELDS, $data);                  //发送的POST数据
    curl_setopt($curl, CURLINFO_HEADER_OUT, TRUE);                //启用时追踪句柄的请求字符串
    $result = curl_exec($curl);                               //执行CURL
    if(curl_errno($curl)){                                  //检查是否有错误发生
        echo 'Curl error: ' . curl_error($curl);                  //返回最后一次的错误号
    }
    curl_close($curl);                                     //关闭CURL 并且释放系统资源
    return $result;
}
/**
 * md5 签名
 * @param $value
 * @return string
 */
public function Sign($value)
{
    $value = array_filter($value);
    ksort($value);
    $str = '';
    foreach($value as $k=>$v){
        if($k == 'sign' || $v == null || $v == ''){
            continue;
        }
        $str.=$k.'='.$v.'&';
    }
    $str = $str.'key=';  //此处填写appKey
    $str = strtoupper(md5($str));
    return $str;
}

打印返回结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值