最近准备把我自己开发的淘客系统接入滴滴联盟平台,做打车优惠券搞佣金。
由于淘客系统本身是PHP开发的,所以只能采用PHP的代码接入滴滴联盟Api

下面把滴滴联盟签名生成和接口调用的代码分享给大家

<?php
$AppKey       = "";
$accesskey    = "";
$activity     = 1492;
$promotion_id = "";
$Timestamp    = time();
$source_id    = "source_id";
$generate_link_url = "https://union.didi.cn/openapi/v1.0/link/generate";
$generate_code_url = "https://union.didi.cn/openapi/v1.0/code/generate";function get_sign($pr, $accesskey)
{
    ksort($pr);
    $ptr = array();
    foreach ($pr as $key => $val) {
        array_push($ptr, $key . "=" . $val);
    }
    $source = urlencode(implode("&", $ptr)).$accesskey;
    echo "source: ".$source."\n";
    $sign = urlencode(base64_encode(sha1($source)));
    return $sign;
}function post($url, $jsonStr, $header){
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonStr);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);	$parse_url = parse_url($url);
    if($parse_url["scheme"]=="https"){
		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
		curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
	}
    $response = curl_exec($ch);
    curl_close($ch);
	return $response;
}function get($url, $params, $header){
    $query = ''; 
    foreach ($params as $param => $value) { 
        $query .= $param.'='.$value .'&'; 
    } 
    $url = $url.'?'.$query;
    $ch = curl_init((string)$url);
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);    $parse_url = parse_url($url);
    if($parse_url["scheme"]=="https"){
		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
		curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
	}
    $response = curl_exec($ch);
    curl_close($ch);
	return $response;
}$param_to_sign = array(
    "App-Key"      =>    $AppKey,
    "Timestamp"    =>    $Timestamp,
    "source_id"    =>    $source_id,
    "activity_id"  =>    $activity,
    "link_type"    =>    "h5",
    "promotion_id" =>    $promotion_id
);$sign = get_sign($param_to_sign, $accesskey);
//由于promotion在json里必须为数字类型,这里用字符串格式化的方式避免被科学计数法。我不是专业的php程序员,如有合理的方法,欢迎向我们提供
$json = sprintf("{\"activity_id\":%d,\"source_id\":\"%s\",\"link_type\":\"%s\",\"promotion_id\":%s}", $activity, $source_id, "h5", $promotion_id);$header = array(
    "App-Key: ".$AppKey,
    "Timestamp: ". $Timestamp,
    "Sign: ".$sign,
    "Content-Type: application/json",
    "Content-Length: ".strlen($json)
);
//请求生成短链
$link_response = json_decode(post($generate_link_url, $json, $header), true);
print_r($link_response);
if ($link_response["errno"] != 0) {
    return;
}
$dsi = $link_response["data"]["dsi"];$param_to_sign = array(
    "App-Key"      =>    $AppKey,
    "Timestamp"    =>    $Timestamp,
    "source_id"    =>    $source_id,
    "dsi"          =>    $dsi,
    "type"         =>    "mini"
);$param = array(
    "source_id"    =>    $source_id,
    "dsi"          =>    $dsi,
    "type"         =>    "mini"
);$sign = get_sign($param_to_sign, $accesskey);
$header = array(
    "App-Key: ".$AppKey,
    "Timestamp: ". $Timestamp,
    "Sign: ".$sign
);
echo get($generate_code_url, $param, $header);?>


 

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信小程序

微信扫一扫体验

立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部