PHP版滴滴cps联盟Api签名生成和接口调用方法分享

这篇具有很好参考价值的文章主要介绍了PHP版滴滴cps联盟Api签名生成和接口调用方法分享。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

最近准备把我自己开发的淘客系统接入滴滴联盟平台,做打车优惠券搞佣金。
由于淘客系统本身是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);

?>


 文章来源地址https://www.toymoban.com/news/detail-721693.html

到了这里,关于PHP版滴滴cps联盟Api签名生成和接口调用方法分享的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微信小程序 - 调用后台api接口方法

    2024年01月16日
    浏览(50)
  • 怎么调用文心一言的api接口生成一个简单的聊天机器人(python代码)

    寒假在学习大模型,但也没弄出多少眉目,电脑性能还有点小问题,大模型总跑不起来,只会简单调用一下现有的大模型的接口,例如:文心一言,下面展示一下代码: 至于如何获取这其中的两个key,网上有太多文章了,大家可以去找找看,比如这篇文章:百度文心一言AP

    2024年04月09日
    浏览(77)
  • PHP调用java class 类实现文件签名

    起因:对接某平台API接口,发送的文件需要做 SM3 签名,对方平台是java写的,只有java加密示例,照着java的加密算法翻译为PHP版本,在编码转换上始终有些差异。没办法,只能想办法使用他们的java方式。 Demo.java文件:

    2024年02月09日
    浏览(53)
  • PHP实践:用openssl打造安全可靠的API签名验证系统

    🏆作者简介,黑夜开发者,全栈领域新星创作者✌,CSDN博客专家,阿里云社区专家博主,2023年6月CSDN上海赛道top4。 🏆数年电商行业从业经验,历任核心研发工程师,项目技术负责人。 🏆本文已收录于PHP专栏:PHP进阶实战教程。 🏆另有专栏PHP入门基础教程,希望各位大佬

    2024年02月14日
    浏览(40)
  • 最详细的SpringBoot实现接口校验签名调用

    代码地址:GitHub - passerbyYSQ/DemoRepository: 各种开发小demo 概念 开放接口 验签 接口验签调用流程 1. 约定签名算法 2. 颁发非对称密钥对 3. 生成请求参数签名 4. 请求携带签名调用 代码设计 1. 签名配置类 2. 签名管理类 3. 自定义验签注解 4. AOP实现验签逻辑 5. 解决请求体只能读取一

    2024年02月09日
    浏览(35)
  • 三方开放接口,Springboot通过AOP实现API接口的签名验证

    前言 对外开放的接口,需要验证请求方发送过来的数据确实是由发送方发起的,并且中途不能被篡改和伪造,所以才会对接口的访问进行签名验证,以保证双方获取到的原来的信息是没有经过篡改的。 实现方法 对请求的信息内容,通过MD5运算或者其他算法(必须是 不可逆的

    2024年02月07日
    浏览(52)
  • WEB API 接口签名sign验证入门与实战

    B站讲的最好的接口加密解密以及接口签名sign原理 加密:在网络上传输的原始数据(明文)经过加密算法加密后形成(密文)传输,防止被窃取 解密:将密文还原成原始数据 对称式加密:对加密和解密使用同一个秘钥 非对称加密:非对称式加密需要两个秘钥(双钥),分别

    2024年02月01日
    浏览(54)
  • API接口的安全设计验证:ticket,签名,时间戳

    概述 与前端对接的API接口,如果被第三方抓包并进行恶意篡改参数,可能会导致数据泄露,甚至会被篡改数据,我主要围绕时间戳,token,签名三个部分来保证API接口的安全性 1.用户成功登陆站点后,服务器会返回一个token,用户的任何操作都必须带了这个参数,可以将这个

    2024年04月27日
    浏览(40)
  • 记录一次调用奇门api报错信息Invalid signature (签名无效)

    奇门有msg对应错误的记录 我可能是 3.1   以下是还原场景 第一个方法 第二个方法 以下是运行结果 很奇怪----下第一个打印是正常的,而第二个出现 错误,我对map底层没有特别多的理解 第二个方法修正: 加入代码: 修改MapString,String参数名称为map 这样就正常了

    2024年02月22日
    浏览(50)
  • API接口的安全设计验证:ticket,签名,时间戳(1)

    result.put(“success”,false); result.put(“ticket”,“”); result.put(“code”,“999”); result.put(“message”,“用户名和密码不匹配”); return result; } if (personEntity.getLoginName().equals(username) personEntity.getPassword().equals(password)){ String ticket = UUID.randomUUID().toString(); ticket = ticket.replace(“-”,“”);

    2024年04月27日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包