代码拉取完成,页面将自动刷新
wechat weixin sdk,支持微信应用和商户。
在概念清晰的基础上追求更少的编码、更开放、灵活的结构。
本库不是在微信官方API基础上进一步封装,造出一个新的框架级的重体量SDK。而是努力成为微信官方文档的Golang版快速工具箱。
努力让开发者在学习微信官方文档后,不再有新的学习曲线(另学一套)!
所以本库目标是:极致、简单!不创另行发明新理念、不另行创造新架构!
根据微信的文档,微信的业务有两个不同的领域:
go get github.com/blusewang/wechat
订阅号
、服务号
、小程序
、App
MessageData
。内部实现了识别并解密消息、校验请求的Query
数据。Query
中的access_token
数据。access_token
、js_sdk_ticket
这类需要每7200秒刷新一次的,放到crontab
中。
对此不满的,完全可以在使用本库的基础上,采用自己熟悉的方式、甚至自己设计方案来替代crontab
。
一个基础账号对象MpAccount
,它有三个行为:
UrlSign(url string)
ReadMessage(req *http.Request)
NewMpReq(path mp_api.MpApi) *mpReq
只实现了很有限的数据。若需要使用本库自带的数据结构之外的API。完全可以参考本库的数据结构写法,自行另起书写(注意不同业务的tag名称不同)。 并能得到一样的兼容体验!
a := wx.MpAccount{
AppId: "your_app_id",
AccessToken: "38_XtyPcVUODHd8q3TNYPVGAZ2WNRx_nW4gnclObbv78tsEa1Y_bwdkLALDMEb4372wYqcC_CanjU9O0Zw4MqHiqxrIukk_G4ElAUxyv_ASOb0V2y8647cbxbYU-G8CbtnPdLNub8NrqtUVrSTnWAPaAGALPE",
// ...
ServerHost: mp_api.ServerHostShangHai, // 选择离自己最近的服务主机
}
// 一个简单的只带access_token的GET API
var list mp_api.MessageCustomServiceKfListRes
if err := a.NewMpReq(mp_api.MessageCustomServiceKfList).Bind(&list).Do(); err != nil {
t.Error(err)
}
log.Println(list)
// 一个POST API
var rs mp_api.AccountShortUrlRes
err = a.NewMpReq(mp_api.AccountShortUrl).SendData(mp_api.AccountShortUrlData{
Action: mp_api.ShortUrlAction,
LongUrl: "https://developers.weixin.qq.com/doc/offiaccount/Account_Management/URL_Shortener.html",
}).Bind(&rs).Do()
if err != nil {
t.Error(err)
}
log.Println(rs)
// 一个上传媒体文件的API
err = a.NewMpReq(mp_api.MessageCustomServiceKfAccountUploadHeadImg).Query(mp_api.MessageCustomServiceKfAccountUploadHeadImgQuery{
KfAccount: "1@1",
}).Upload(resp.Body, "png")
if err != nil {
t.Error(err)
}
App、JSAPI、小程序下单
分账
付款至微信零钱
付款至个人银行卡
发红包
MD5
、HMAC-SHA256
加密一个基础账号对象MchAccount
,它有以下行为:
NewMchReq(url string)
OrderSign4App(or mch_api.PayUnifiedOrderRes)
OrderSign(or mch_api.PayUnifiedOrderRes)
PayNotify(pn mch_api.PayNotify)
RsaEncrypt(plain string)
只实现了很有限的数据。若需要使用本库自带的数据结构之外的API。完全可以参考本库的数据结构写法,自行另起书写(建议参考structs.go中的方式书写)。 能得到一样的兼容体验!
mch := wx.MchAccount{}
var data mch_api.PayProfitSharingRes
var body = mch_api.PayProfitSharingData{
TransactionId: "4200000531202004307536721907",
OutOrderNo: "TSF_216144_1065_ye7DvHdSed",
}
_ = body.SerReceivers([]mch_api.PayProfitSharingReceiver{
{
Type: "",
Account: "",
Amount: 10,
Description: "",
},
})
err := mch.NewMchReq(mch_api.PayProfitSharing).
Send(&body). // 注意:发送的数据需传指针,以便自动填充基础信息和签名
UseHMacSign(). // 指定使用HMAC-SHA256
UsePrivateCert(). // 指定使用私有证书通信
Bind(&data).Do() // 传指针
log.Println(err)
log.Println(data)
NewRandStr
生成符合微信要求随机字符LimitString
限制长度,并将微信不支持的字符替换成'x',能满足公众号App的字符要求SafeString
安全地限制长度,并将微信不支持的字符替换成'x',能满足商户平台的字符要求此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
1. 开源生态
2. 协作、人、软件
3. 评估模型