首页 > 其他分享 >golang 微信支付计算签名

golang 微信支付计算签名

时间:2022-11-22 23:36:33浏览次数:35  
标签:stringSignTemp 微信 sign golang 参数 签名 key


原文:

1、签名算法
(签名校验工具)
签名生成的通用步骤如下:

第一步,设所有发送或者接收到的数据为集合M,将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(字典序),使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA。

特别注意以下重要规则:

◆ 参数名ASCII码从小到大排序(字典序);
◆ 如果参数的值为空不参与签名;
◆ 参数名区分大小写;
◆ 验证调用返回或微信主动通知签名时,传送的sign参数不参与签名,将生成的签名与该sign值作校验。
◆ 微信接口可能增加字段,验证签名时必须支持增加的扩展字段
第二步,在stringA最后拼接上key得到stringSignTemp字符串,并对stringSignTemp进行MD5运算,再将得到的字符串所有字符转换为大写,得到sign值signValue。

◆ key设置路径:微信商户平台(pay.weixin.qq.com)–>账户设置–>API安全–>密钥设置

举例:

假设传送的参数如下:

实现

getSign := func(request interface{}) string {
stringA := ToParam(request, "xml")

stringSignTemp := stringA + fmt.Sprintf("&key=%s", key)
fmt.Println("stringSignTemp:", stringSignTemp)

sign := MD5(stringSignTemp)
return sign
}


标签:stringSignTemp,微信,sign,golang,参数,签名,key
From: https://blog.51cto.com/u_11553781/5878737

相关文章

  • golang算法—— 使用两个栈实现一个队列
    前言阅读本文,假定已经了解了基本数据结构概念。队列:先入先出。栈:先进后出。分析使用两个栈串联,可以实现先进先出。但是,得注意以下两点:队列在入列时,stack2必须为空,stac......
  • golang grpc使用示例
    疑问写前面grpc有内部对心跳的处理吗,还是说,双工需要自己作心跳管理,有懂的留言一下。SEO优化grpc如何双工通信?grpc如何从服务端推送消息给客户端?gprc环境如何搭建?grpc......
  • 微信小程序隐私指引完整填写范本
    为了分辨用户,开发者将在获取你的明示同意后,收集你的微信昵称、头像。为了显示距离,开发者将在获取你的明示同意后,收集你的位置信息。开发者收集你的地址,用于获取位置信息......
  • #yyds干货盘点#【愚公系列】2022年11月 微信小程序-地图的使用之面聚合
    前言地图基础属性:属性类型默认值必填说明最低版本longitudenumber是中心经度1.0.0latitudenumber是中心纬度1.0.0scalenumber16否缩放......
  • go /golang 下生成protobuf *.pb.go文件 记录
      如果出现这个状况解决办法记录一下:在指定目录  gitclonehttps://github.com/golang/protobuf 下载源码   进入到以下目录  分别执行 以下图片......
  • [译]Golang中JSON和结构体的组合使用
     原文地址:http://attilaolah.eu/2014/09/10/json-and-struct-composition-in-go/ 假设你正在把一个JSON对象解码为Go的结构体。该JSON来自不受你控制的服......
  • 微信小程序打开另一个小程序
    /** *appId:跳转到的小程序app-id *path:打开的页面路径,如果为空则打开首页,path中?后面的部分会成为query,在小程序的App.onLaunch、App.onShow和Pag......
  • golang
    golang  TRANSLATEwithxEnglishArabicHebrewPolishBulgarianHindiPortugueseCatalanHmongDawRomanianChineseSimplifiedHungarian......
  • 微信小程序获取用户手机号
    js注:蓝色字体是需要自己修改的部分如AppId,需要修改成你自己的appidAppSecret,需要修改成你自己的小程序密钥(在微信开放平台获取,实在不了解百度“微信获取小程序密钥”)......
  • golang如何使用go test?
    ​​gotest-run=TestHelloworld​​​​gotest-bench=BenchmarkHelloworld​​​​gotest-timeout30scmap-run^(TestMap)$​​​​test-benchmem-run=^$cmap-......