ThinkPHP5.1 有赞接口开发

公共方法

/* 有赞公共方法 */

function parse_response($response_data) {
    $data = json_decode($response_data, true);
    if (null === $data) {
        throw new Exception('response invalid, data: ' . $response_data);
    }
    return $data;
}

function sent_post($url, $params) {
    $headers = array();
    $body = http_build_query($params);
    return request_curl($url, 'POST', $body, $headers);
}

function group_url($method, $api_version) {
    $method_array = explode(".", $method);
    $method = '/' . $api_version . '/' . $method_array[count($method_array) - 1];
    array_pop($method_array);
    $method = implode(".", $method_array) . $method;
    $url = config('request_url_oauthentry') . $method;
    return $url;
}

function build_request_params($method, $api_params) {
    if (!is_array($api_params)) {
        $api_params = array();
    }
    $pairs = get_common_params(getYouzanToken(), $method);
    foreach ($api_params as $k => $v) {
        if (isset($pairs[$k])) {
            throw new Exception('参数名冲突');
        }
        $pairs[$k] = $v;
    }
    return $pairs;
}

function get_common_params($access_token, $method) {
    $params = array();
    $params['access_token'] = $access_token;
    $params['method'] = $method;
    return $params;
}

function getYouzanToken() {
    $access_token = cache('access_token_youzan');
    if ($access_token) {
        return $access_token;
    } else {
        $params = array();
        $params['client_id'] = config('client_id');
        $params['client_secret'] = config('client_secret');
        $params['grant_type'] = 'silent';
        $params['kdt_id'] = config('kdt_id');
        $access_token_arr = parse_response(sent_post(config('request_url_token'), $params));
        cache('access_token_youzan', $access_token_arr["access_token"], $access_token_arr["expires_in"]);
        return $access_token_arr["access_token"];
    }
}

function request_curl($url, $method, $postfields = NULL, $headers = array()) {
    $ci = curl_init();
    /* Curl settings */
    curl_setopt($ci, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0);
    curl_setopt($ci, CURLOPT_USERAGENT, 'X-YZ-Client 2.0.0 - PHP');
    curl_setopt($ci, CURLOPT_CONNECTTIMEOUT, 30);
    curl_setopt($ci, CURLOPT_TIMEOUT, 30);
    curl_setopt($ci, CURLOPT_RETURNTRANSFER, TRUE);
    curl_setopt($ci, CURLOPT_ENCODING, "");
    curl_setopt($ci, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ci, CURLOPT_SSL_VERIFYHOST, 2);
    curl_setopt($ci, CURLOPT_HEADER, FALSE);

    switch ($method) {
        case 'POST':
            curl_setopt($ci, CURLOPT_POST, TRUE);
            if (!empty($postfields)) {
                curl_setopt($ci, CURLOPT_POSTFIELDS, $postfields);
            }
            break;
    }

    curl_setopt($ci, CURLOPT_URL, $url);
    curl_setopt($ci, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($ci, CURLINFO_HEADER_OUT, TRUE);

    $response = curl_exec($ci);

    curl_close($ci);
    return $response;
}

index.php

//根据订单号,通过接口获取订单详细信息,筛选返回有用的信息
    private function get_trade($tid) {
        $method = 'youzan.trade.get'; //要调用的api名称
        $api_version = '4.0.0'; //要调用的api版本号
        $my_params = ['tid' => $tid]; 
        $my_files = [];
        $trade_arr = parse_response(sent_post(group_url($method, $api_version), build_request_params($method, $my_params), $my_files));
        dump($trade_arr);
    }

App.php配置相关参数

//有赞参数
    'client_id' => '',
    'client_secret' => '',
    'kdt_id' => '',
    'request_url_token' => 'https://open.youzan.com/oauth/token',
    'request_url_oauthentry' => 'https://open.youzan.com/api/oauthentry/',

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值