在做微信客服的接口对接时,第一步就是在微信客服后台配置自己的回调URL
微信客服会往URL上get请求数据,要求把GET中的加密参数解析出来,并且原样输出,才能验证成功

下面就是使用官方的xml 版sdk 实现这个验证的类库,与测试用例
package wechat_kf_sdk
// 创建微信客服API的封装结构体实例
func NewKefuWework(corpid string, corpsecret, Token, EncodingAESKey string) *KefuWework {
return &KefuWework{
corpid: corpid,
corpsecret: corpsecret,
Token: Token,
EncodingAESKey: EncodingAESKey,
}
}
//验证签名
func (s *KefuWework) CheckSign(signature, timestamp, nonce, echostr string) (string, error) {
wxcpt := NewWXBizMsgCrypt(s.Token, s.EncodingAESKey, s.corpid, XmlType)
echoStr, cryptErr := wxcpt.VerifyURL(signature, timestamp, nonce, echostr)
if cryptErr != nil {
return "", errors.New(cryptErr.ErrMsg)
}
return string(echoStr), nil
}
测试用例
func TestCheckSign(t *testing.T) {
corpid := "wx5823bf96d3bd56c7"
corpsecret := "your_corpsecret"
token := "QDG6eK"
encodingAeskey := "jWmYm7qr5nMoAUwZRjGtBxmz3KA1tkAj3ykkR6q2B2C"
verifyMsgSign := "5c45ff5e21c57e6ad56bac8758b79b1d9ac89fd3"
// verifyTimestamp := HttpUtils.ParseUrl("timestamp")
verifyTimestamp := "1409659589"
// verifyNonce := HttpUtils.ParseUrl("nonce")
verifyNonce := "263014780"
// verifyEchoStr := HttpUtils.ParseUrl("echoStr")
verifyEchoStr := "P9nAzCzyDtyTWESHep1vC5X9xho/qYX3Zpb4yKa9SKld1DsH3Iyt3tP3zNdtp+4RPcs8TgAE7OaBO+FZXvnaqQ=="
// 创建微信客服API的封装结构体实例
wxService := NewKefuWework(corpid, corpsecret, token, encodingAeskey)
res, err := wxService.CheckSign(verifyMsgSign, verifyTimestamp, verifyNonce, verifyEchoStr)
log.Println(res, err)
}
官方的sdk
package wechat_kf_sdk
import (
"bytes"
"crypto/aes"
"crypto/cipher"
"crypto/sha1"
"encoding/base64"
"encoding/binary"
"encoding/xml"
"fmt"
"math/rand"
"sort"
"strings"
)
const letterBytes = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
const (
ValidateSignatureError in

文章介绍了在微信客服接口对接过程中,如何配置回调URL并使用官方XML版SDK进行加密参数的验证。通过创建KefuWework结构体和调用CheckSign方法,实现了签名验证功能。测试用例显示了验证过程,并展示了成功的签名验证结果。

1651

被折叠的 条评论
为什么被折叠?



