字节跳动小程序担保支付请求签名算法-Java实现
最近在做字节跳动小程序支付相关的功能,官方提供的支付接口,调用需要使用请求签名,但是官方给的加签示例没有Java的实现。这里记录一下Java实现的加签算法。
官方要求的请求签名算法:
1. sign, app_id , thirdparty_id 字段用于标识身份字段,不参与签名。将其他字段内容(不包含 key)与支付 SALT 一起进行字典序排序后,使用&符号链接
2. 使用 md5 算法对该字符串计算摘要,作为结果
3. 参与加签的字段均以 POST 请求中的 body 内容为准, 不考虑参数默认值等规则. 对于对象类型与数组类型的参数, 使用 POST 中的字符串原串进行左右去除 空格后进行加签
4. 如有其他安全性需要, 可以在请求中添加 nonce 字段, 该字段无任何业务影响, 仅影响加签内容, 使统一请求的多次签名不同
5. 空字符串与省略参数不参与加签
以如下的分账请求典型值为例:
{"settle_params": "[{\"merchant_uid\":\"123345\",\"amount\":1}]","thirdparty_id": "ttc72cb19158066a6b","settle_desc": "开始结算与分账","out_settle_no": "mock_settle_no","out_order_no": "mock_settle_no","notify_url": "https://callback.com","app_id": "ttabcdefg123456","sign": "3c9421d0268a974138f4b36e9cefa1f1"
}
假设支付秘钥值为 your_payment_salt,经过剔除参数排序,得到 MD5 前的字符串为
[{"merchant_uid":"123345","amount":1}]&https://callback.com&mock_settle_no&mock_settle_no&your_payment_salt&开始结算与分账
MD5 计算后得到最终签名 3c9421d0268a974138f4b36e9cefa1f1
原文链接:https://microapp.bytedance.com/docs/zh-CN/mini-app/develop/api/open-interface/payment/secure/UR#%E8%AF%B7%E6%B1%82%E7%AD%BE%E5%90%8D%E7%AE%97%E6%B3%95
以下是Java示例加签
借助工具类Hutool
<dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.6.3</version>
</dependency>
/*** * @Title: getSign* @Description: 字节跳动小程序请求签名算法* @param paramsMap* @return* @author * @date 2021-04-27 17:19:08*/public static String getSign(Map<String,Object> paramsMap) {String [] skipArray= {"app_id", "sign", "thirdparty_id"};Map<String, Object> map = MapUtil.removeAny(paramsMap, skipArray);List<String> list = new ArrayList<String>();for (String key : map.keySet()) {list.add(MapUtil.getStr(map, key));}CollUtil.sort(list, null);String str=CollUtil.join(list, "&");return DigestUtil.md5Hex(str);}
字节跳动小程序担保支付请求签名算法-Java实现相关推荐
- 字节跳动小程序接入支付功能
我个人博客文章地址:字节跳动小程序接入支付功能 这个文章只是我做完支付后的总结,尽量写的简单易懂,也是方便自己以后忘了看一眼就能懂
- 百度小程序,字节跳动小程序支付总结
百度小程序支付: 百度小程序支付生成的签名是rsa签名,这个签名的生成java版本官方给的有demo直接拿过来用就可以,参数传输正确,该去空格的去空格,该加标点符号的加标点符号,rsa公钥私钥保存好, ...
- 字节跳动小程序tt.pay支付流程和遇到的问题
搞了好几天的服务暂不可用,或者sign错误,缺少app_id什么的,终于可以了. 我主要说下流程和我遇到的问题 我是用的tt.pay(). 首先流程:一.后端发送post请求到http://tp-p ...
- 字节跳动小程序(抖音) uniapp PHP 支付宝SDK 开发支付功能
目录 前提条件 正文 代码流程: 详细代码 一.获取字节跳动订单 二.获取支付宝alipay_url参数 三.开始生成orderInfo 给前端吊起支付宝咯 总结哈 keke 前提条件 字节跳动: A ...
- 使用uniapp开发字节跳动小程序的微信支付和支付宝支付(后端PHP,tp5)
使用uniapp开发字节跳动小程序的微信支付和支付宝支付(后端PHP,tp5) 准备工作 微信支付配置 支付宝支付配置 字节跳动配置 1,微信支付配置: 开通微信支付的h5支付,关联APPID,保存k ...
- 字节跳动小程序支付详解
微信支付详解 1.为什么要写这篇文章 参考了字节跳动官方的文档之后发现写的太简单,完全一头雾水摸不清头脑,后来在百度了别人的实现方案,才得以总结出来. 2.背景 我司要开发一个头条小程序,需要支持支付 ...
- 抖音头条小程序担保支付php版demo源码
首先把配置文件填写完整: 1 2 3 4 5 6 7 // 支付相关配置 private static $config = array( 'app_id' => '', / ...
- 字节跳动小程序技术摘要
微信H5支付抖音小程序支付宝APP支付 微信 H5支付 官网文档链接:https://pay.weixin.qq.com/wiki/doc/api/H5.php?chapter=15_4 流程图: 1 ...
- 关于今日头条小程序(字节跳动小程序)相关问题
上周突然遇到让开发今日头条小程序(字节跳动小程序)的需求,然后看了下文档发现真的简陋.而且文档有错别字.槽点有点多.但是和老版本的小程序相差不多,然后我就抱着试一试的心态,真的是试一试把微信小程序换了 ...
最新文章
- jQuery之validate验证表单
- hdu 2037 今年暑假不AC (java)
- 2. CSS 高级语法
- C语言程序设计教材九斗验证,C语言实验报告参考答案(原)
- 图片url地址转换成file文件
- MFCC、FBank以及语谱图特征提取
- IAP之boot实现
- 告别2018:人间值得,你更值得!
- 英国某电商在线零售客户细分_Kaggle项目
- 荣耀笔记本开机黑屏错误怎么U盘重装系统教学分享
- 互联网晚报 | 06月07日 星期二 | 杭州调整住房公积金政策;苹果发布iOS 16;特斯拉回应裁员是否涉及中国地区...
- Android 仿小米的全面屏手势-侧滑返回
- Walmart API 授权流程解析
- 我的达内Java培训经历
- 《快速掌握PyQt5》第二十三章 主窗口QMainWindow
- 学习臧圩人Java面试题解惑系列总结
- Google 屏蔽的关键字
- 使用 Fiddler 进行 iOS APP 的 HTTP/HTTPS 抓包
- 【数据挖掘】5-Zookeeper集群搭建
- SSL 为IP签发证书