v枫叶v

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

快手小程序 担保支付 PHPdemo

<?php

function _getKsAccessToken() {
    $postData['app_id'] = 'k**********5';
    $postData['app_secret'] = 'x***********Q';
    $postData['grant_type'] = 'client_credentials';
    $res = httpCurlPost('https://open.kuaishou.com/oauth2/access_token', $postData);
    $res = json_decode($res, 1);
    return $res['access_token'];
}

function _makeKsSgin($query, $postData) {
    unset($query['access_token']);
    $arr = array_merge($query, $postData);
    foreach ($arr as $k => $item) {
        if (empty($item)) {
            unset($arr[$k]);
        }
    }
    ksort($arr, 2);
    $str = '';
    foreach ($arr as $k => $v) {
        $str .= $k . '=' . $v . '&';
    }
    $str = substr($str, 0, strlen($str) - 1);
    $md5 = $str . 'x**********Q';
    return md5($md5);
}

function _getKuaishouInfo() {
    $getData['access_token'] = _getKsAccessToken();
    $getData['app_id'] = 'ks715********0745';
    $postData['open_id'] = 'f198e1*********951e3'; //用户的openid
    $postData['out_order_no'] = time();
    $postData['total_amount'] = rand(1, 100);
    $postData['subject'] = '中文';
    $postData['detail'] = '描述';
    $postData['attach'] = 'asdfasdf';
    $postData['type'] = 1297;
    $postData['expire_time'] = 172800;
    $postData['notify_url'] = 'https://k**********.net/m*******ksnotify'; //
    $sign = _makeKsSgin($getData, $postData);
    $postData['sign'] = $sign;
    $url = 'https://open.kuaishou.com/openapi/mp/developer/epay/create_order?' . http_build_query($getData);
    $json = json_encode($postData, 320);
    $res = jsonPost($url, $json);
    var_dump($res);
}

_getKuaishouInfo();

function jsonPost($url, $data = NULL, $times = 0) {
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
    curl_setopt($curl, CURLOPT_POST, 1);
    curl_setopt($curl, CURLOPT_TIMEOUT, 2); //超时时间2秒
    curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
    curl_setopt($curl, CURLOPT_HEADER, 0);
    curl_setopt($curl, CURLOPT_HTTPHEADER, array(
        'Content-Type: application/json; charset=utf-8',
        'Content-Length:' . strlen($data),
        'Cache-Control: no-cache',
        'Pragma: no-cache'
    ));
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    $res = curl_exec($curl);
    curl_close($curl);
    return $res;
}

function httpCurlPost($url, $data, $times = 1) {
    $curl = curl_init();
    // 启动一个CURL会话
    curl_setopt($curl, CURLOPT_URL, $url);
    // 要访问的地址
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
    // 对认证证书来源的检测
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2);
    // 从证书中检查SSL加密算法是否存在
    curl_setopt($curl, CURLOPT_HTTPHEADER, array('Expect:'));
    //解决数据包大不能提交
    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
    // 使用自动跳转
    curl_setopt($curl, CURLOPT_AUTOREFERER, 1);
    // 自动设置Referer
    curl_setopt($curl, CURLOPT_POST, 1);
    // 发送一个常规的Post请求
    curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
    // Post提交的数据包
    curl_setopt($curl, CURLOPT_TIMEOUT, 30);
    // 设置超时限制防止死循
    curl_setopt($curl, CURLOPT_HEADER, 0);
    // 显示返回的Header区域内容
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    // 获取的信息以文件流的形式返回
    $tmpInfo = curl_exec($curl);
    // 执行操作
    curl_close($curl);
    // 关键CURL会话
    return $tmpInfo;
    // 返回数据
}

 

posted on 2022-08-22 10:28  v枫叶v  阅读(206)  评论(0)    收藏  举报