关于第三方服务对接,有些封装是必备的,这样老板让你完成一个需求的时候,你就不会抓瞎,当别人嫌弃老板给的需求太难时,你已经在开发了,当别人在查文档,哼唧哼唧地开发了一个多月,老板的脸已经黑了,你已经花了两天时间就搞定了。
第三方服务常见的:
- 对象存储:阿里云,亚马逊云,腾讯云。
- 发短信(各大服务商),发邮件(自建或使用私人或企业邮箱等)。
- 快递,实名认证等。
- 支付:微信,支付宝,PayPal,Stripe等,分移动端支付,Web端支付,当面你扫我支付,我扫你支付,转账等。
- 社交登录:微信,支付宝,微博,QQ,一键登录(各种闪验),Twitter等。
多年积累的武器库已经有很多了,某些非常常见的,比如微信登录,现在写成文章分享出来:
如何下载:
go get -v github.com/hunterhug/marmot/tool/wx
go.mod
github.com/hunterhug/marmot v1.0.4
你只需参考以下介绍就可以了。
微信第三方登录
适用于网页端,移动端APP的微信登录。参考官方文档。
需要客户端和服务端联调。
逻辑如下:
CODEhttp://127.0.0.1:9999
2.服务端收到回调,会连续调用以下链接获取到用户信息。
SDK
appId := ""
appSecret := ""
code := "xxx" // 客户端传给你的,客户端可以是Web前端,IOS,Android
info, err := Login(appId, appSecret, code)
if err != nil {
fmt.Println(err.Error())
return
}
fmt.Println(info)
小程序开发
小程序微信登录
小程序登录区别于网页登录。
需要客户端和服务端联调。
逻辑如下:
wx.login()codeencryptedDataiv
codeauth.code2Session
SDK
appId := ""
appSecret := ""
code := "xxx" // 小程序前端传给你的
encryptedData := "afqaf" // 小程序前端传给你的
iv := "ssss" // 小程序前端传给你的
info, err := MiniLogin(appId, appSecret, code, encryptedData, iv)
if err != nil {
fmt.Println(err.Error())
return
}
fmt.Println(info)
小程序发送 消息订阅。
完全在服务端执行,不需要客户端参与。
token
appId := ""
appSecret := ""
token, err := GlobalToken(appId, appSecret)
if err != nil {
fmt.Println(err.Error())
return
}
fmt.Println("token is:", token)
token, _ := GlobalToken(appId, appSecret)
openId := "sss" // 接收者(用户)的 openid
templateId := "" // 所需下发的订阅模板id
page := "" // 点击模板卡片后的跳转页面,仅限本小程序内的页面。支持带参数,(示例index?foo=bar)。该字段不填则模板无跳转。
data := map[string]string{"thing1": "2222", "thing7": "sss", "thing3": "dddd"}
state := wxStateFormal // 跳转小程序类型:developer为开发版;trial为体验版;formal为正式版;默认为正式版
err = SendMessage(token, openId, templateId, page, data, state)
if err != nil {
fmt.Println("send err:", err.Error())
return
}