【Golang 接口自动化06】微信支付md5签名计算及其优化

目录

前言

初始方式

代码说明

优化

最终方法

性能对比

参考代码

总结

资料获取方法


前言

可能看过我博客的朋友知道我主要是做的支付这一块的测试工作。而我们都知道现在比较流行的支付方式就是微信支付和支付宝支付,当然最近在使用低手续费大力推广的京东金融(已改名为京东数科)以后也可能站到第一队列,但是要在中国市场走到和财付通、蚂蚁金服一个层级就任重而道远了。

废话不多说,我们一起来看看微信支付签名的官方文档。搜索微信支付--点击支付开发文档--接口规则--安全规范。

我们会看的以下的内容:

签名生成的方法文档已经说的很清晰,下面我们一起来看看怎么使用golang来实现它,以及怎么使用一些更高级的特性来优化。

初始方式

最开始的方式比较直接,能实现这个需求就行:

func GetSign(sourceMap map[string]string, bizKey string) string {
	orderedString := orderParam(sourceMap, bizKey)
	md5Ctx := md5.New()
	md5Ctx.Write([]byte(orderedString))
	signString := md5Ctx.Sum(nil)
	//fmt.Print(hex.EncodeToString(cipherStr))
	return hex.EncodeToString(signString)
}

func orderParam(source map[string]string, bizKey string) string {
	var tempArr []string
	i := 0
	for k, v := range source {
		tempArr = append(tempArr, k+"="+v)
		i++
	}
	sort.Strings(tempArr)
	temString := ""
	for n, v := range tempArr {
		if n+1 < len(tempArr) {
			temString = temString + v + "&"
		} else {
			temString = temString + v + bizKey
		}
	}
	fmt.Println(temString)
	return temString
}
代码说明
  • orderParam主要用来把传递的参数转化为键值对的格式(即key1=value1&k
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值