wechat

wechat weixin sdk,支持微信应用和商户。

设计目标

在概念清晰的基础上追求更少的编码、更开放、灵活的结构。

本库不是在微信官方API基础上进一步封装,造出一个新的框架级的重体量SDK。而是努力成为微信官方文档的Golang版快速工具箱。

努力让开发者在学习微信官方文档后,不再有新的学习曲线(另学一套)!

所以本库目标是:极致、简单!不创另行发明新理念、不另行创造新架构!

概述

根据微信的文档,微信的业务有两个不同的领域:

  • 应用类账号下的Api
  • 商户类账号下的Api

遵守高内聚,低耦合的设计哲学。

所有同类型的请求,都能复用,封装聚合。其它零散的功能都封装成独立函数,按需调用。

所有的接口、请求数据、请求结果数据,都是开放的;可以使用我提供的数据,也能自行设计。

安装

应用账号API
订阅号服务号小程序App
MessageDataQueryQueryaccess_token

时效性凭证安置方式约定

access_tokenjs_sdk_ticketcrontab
crontab

程序设计

对象设计

MpAccount
UrlSign(url string)ReadMessage(req *http.Request)NewMpReq(path mp_api.MpApi) *mpReq

数据设计

说明

只实现了很有限的数据。若需要使用本库自带的数据结构之外的API。完全可以参考本库的数据结构写法,自行另起书写(注意不同业务的tag名称不同)。 并能得到一样的兼容体验!

举例

商户账号API(V2版)
App、JSAPI、小程序下单分账付款至微信零钱付款至个人银行卡发红包
MD5HMAC-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中的方式书写)。 能得到一样的兼容体验!

举例

商户账号API(V3版)(含服务商)
App、JSAPI、小程序等支付分账付款至微信零钱付款至个人银行卡服务商系列接口
  • 支持付款至银行卡时,隐私信息加密
  • 自动签名
  • 自动下载微信支付官方证书

程序设计

对象设计

MchAccount
NewMchReqV3(api mch_api_v3.MchApiV3)LoadV3Cert()DecryptAES256GCM(nonce, associatedData, ciphertext string)SignBaseV3(message string)

数据设计

说明

DownloadV3Cert()DownloadV3Cert()

举例

API Hook,同时支持两个类型的所有API
RegisterHook(hook func(req *http.Request, reqBody []byte, res *http.Response, err error))
为微信业务数据提供的额外工具方法
NewRandStrLimitStringSafeString