最近在做字节跳动小程序支付相关的功能,官方提供的支付接口,调用需要使用请求签名,但是官方给的加签示例没有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实现相关推荐

  1. 字节跳动小程序接入支付功能

    我个人博客文章地址:字节跳动小程序接入支付功能 这个文章只是我做完支付后的总结,尽量写的简单易懂,也是方便自己以后忘了看一眼就能懂

  2. 百度小程序,字节跳动小程序支付总结

    百度小程序支付: 百度小程序支付生成的签名是rsa签名,这个签名的生成java版本官方给的有demo直接拿过来用就可以,参数传输正确,该去空格的去空格,该加标点符号的加标点符号,rsa公钥私钥保存好, ...

  3. 字节跳动小程序tt.pay支付流程和遇到的问题

    搞了好几天的服务暂不可用,或者sign错误,缺少app_id什么的,终于可以了.  我主要说下流程和我遇到的问题 我是用的tt.pay(). 首先流程:一.后端发送post请求到http://tp-p ...

  4. 字节跳动小程序(抖音) uniapp PHP 支付宝SDK 开发支付功能

    目录 前提条件 正文 代码流程: 详细代码 一.获取字节跳动订单 二.获取支付宝alipay_url参数 三.开始生成orderInfo 给前端吊起支付宝咯 总结哈 keke 前提条件 字节跳动: A ...

  5. 使用uniapp开发字节跳动小程序的微信支付和支付宝支付(后端PHP,tp5)

    使用uniapp开发字节跳动小程序的微信支付和支付宝支付(后端PHP,tp5) 准备工作 微信支付配置 支付宝支付配置 字节跳动配置 1,微信支付配置: 开通微信支付的h5支付,关联APPID,保存k ...

  6. 字节跳动小程序支付详解

    微信支付详解 1.为什么要写这篇文章 参考了字节跳动官方的文档之后发现写的太简单,完全一头雾水摸不清头脑,后来在百度了别人的实现方案,才得以总结出来. 2.背景 我司要开发一个头条小程序,需要支持支付 ...

  7. 抖音头条小程序担保支付php版demo源码

    首先把配置文件填写完整: 1 2 3 4 5 6 7 // 支付相关配置 private static $config = array(     'app_id'        => '', / ...

  8. 字节跳动小程序技术摘要

    微信H5支付抖音小程序支付宝APP支付 微信 H5支付 官网文档链接:https://pay.weixin.qq.com/wiki/doc/api/H5.php?chapter=15_4 流程图: 1 ...

  9. 关于今日头条小程序(字节跳动小程序)相关问题

    上周突然遇到让开发今日头条小程序(字节跳动小程序)的需求,然后看了下文档发现真的简陋.而且文档有错别字.槽点有点多.但是和老版本的小程序相差不多,然后我就抱着试一试的心态,真的是试一试把微信小程序换了 ...

最新文章

  1. jQuery之validate验证表单
  2. hdu 2037 今年暑假不AC (java)
  3. 2. CSS 高级语法
  4. C语言程序设计教材九斗验证,C语言实验报告参考答案(原)
  5. 图片url地址转换成file文件
  6. MFCC、FBank以及语谱图特征提取
  7. IAP之boot实现
  8. 告别2018:人间值得,你更值得!
  9. 英国某电商在线零售客户细分_Kaggle项目
  10. 荣耀笔记本开机黑屏错误怎么U盘重装系统教学分享
  11. 互联网晚报 | 06月07日 星期二 | 杭州调整住房公积金政策;苹果发布iOS 16;特斯拉回应裁员是否涉及中国地区...
  12. Android 仿小米的全面屏手势-侧滑返回
  13. Walmart API 授权流程解析
  14. 我的达内Java培训经历
  15. 《快速掌握PyQt5》第二十三章 主窗口QMainWindow
  16. 学习臧圩人Java面试题解惑系列总结
  17. Google 屏蔽的关键字
  18. 使用 Fiddler 进行 iOS APP 的 HTTP/HTTPS 抓包
  19. 【数据挖掘】5-Zookeeper集群搭建
  20. SSL 为IP签发证书

热门文章

  1. 计算机平面设计专业素描教案,透视在中职计算机平面设计专业素描教学中的运用策略...
  2. hue集成hive详解
  3. Wireless access point
  4. 中学教师资格证——综合素质之职业理念 重点笔记(纯手写)
  5. js/html打开手机APP常用应用大全
  6. 纵向抽奖滚动效果代码
  7. 设计模式(八):装饰模式
  8. Atitit r2017 r3 doc list on home ntpc.docx
  9. ubuntu14.04 adb搜索不到设备的问题
  10. centos7系统盘系统重装