- 1.x 版本入口
- 2.0 版本开始支付相关内容会分离到一个单独的包。
- 目前 v2 还在测试阶段,请勿用于生产环境。
go get -u github.com/medivhzhan/weapp
文档按照小程序服务端官方文档排版,方便您一一对照查找相关内容。
import "github.com/medivhzhan/weapp"
res, err := weapp.Login("mock-appid", "mock-secret", "mock-code")
if err != nil {
// 处理一般错误信息
return
}
if err := res.GetResponseError(); err !=nil {
// 处理微信返回错误信息
return
}
fmt.Printf("返回结果: %#v", res)
import "github.com/medivhzhan/weapp"
res, err := weapp.GetPaidUnionID("mock-access-token", "mock-open-id", "mock-transaction-id")
// 或者
res, err := weapp.GetPaidUnionIDWithMCH("mock-access-token", "mock-open-id", "mock-out-trade-number", "mock-mch-id")
if err != nil {
// 处理一般错误信息
return
}
if err := res.GetResponseError(); err !=nil {
// 处理微信返回错误信息
return
}
fmt.Printf("返回结果: %#v", res)
调用次数有限制 请注意缓存
import "github.com/medivhzhan/weapp"
res, err := weapp.GetAccessToken("mock-appid", "mock-secret")
if err != nil {
// 处理一般错误信息
return
}
if err := res.GetResponseError(); err !=nil {
// 处理微信返回错误信息
return
}
fmt.Printf("返回结果: %#v", res)
import "github.com/medivhzhan/weapp"
res, err := weapp.GetMonthlyRetain("mock-access-token", "mock-begin-date", "mock-end-date")
if err != nil {
// 处理一般错误信息
return
}
if err := res.GetResponseError(); err !=nil {
// 处理微信返回错误信息
return
}
fmt.Printf("返回结果: %#v", res)
import "github.com/medivhzhan/weapp"
res, err := weapp.GetWeeklyRetain("mock-access-token", "mock-begin-date", "mock-end-date")
if err != nil {
// 处理一般错误信息
return
}
if err := res.GetResponseError(); err !=nil {
// 处理微信返回错误信息
return
}
fmt.Printf("返回结果: %#v", res)
import "github.com/medivhzhan/weapp"
res, err := weapp.GetDailyRetain("mock-access-token", "mock-begin-date", "mock-end-date")
if err != nil {
// 处理一般错误信息
return
}
if err := res.GetResponseError(); err !=nil {
// 处理微信返回错误信息
return
}
fmt.Printf("返回结果: %#v", res)
import "github.com/medivhzhan/weapp"
res, err := weapp.GetMonthlyVisitTrend("mock-access-token", "mock-begin-date", "mock-end-date")
if err != nil {
// 处理一般错误信息
return
}
if err := res.GetResponseError(); err !=nil {
// 处理微信返回错误信息
return
}
fmt.Printf("返回结果: %#v", res)
import "github.com/medivhzhan/weapp"
res, err := weapp.GetWeeklyVisitTrend("mock-access-token", "mock-begin-date", "mock-end-date")
if err != nil {
// 处理一般错误信息
return
}
if err := res.GetResponseError(); err !=nil {
// 处理微信返回错误信息
return
}
fmt.Printf("返回结果: %#v", res)
import "github.com/medivhzhan/weapp"
res, err := weapp.GetDailyVisitTrend("mock-access-token", "mock-begin-date", "mock-end-date")
if err != nil {
// 处理一般错误信息
return
}
if err := res.GetResponseError(); err !=nil {
// 处理微信返回错误信息
return
}
fmt.Printf("返回结果: %#v", res)
import "github.com/medivhzhan/weapp"
res, err := weapp.GetUserPortrait("mock-access-token", "mock-begin-date", "mock-end-date")
if err != nil {
// 处理一般错误信息
return
}
if err := res.GetResponseError(); err !=nil {
// 处理微信返回错误信息
return
}
fmt.Printf("返回结果: %#v", res)
import "github.com/medivhzhan/weapp"
res, err := weapp.GetVisitDistribution("mock-access-token", "mock-begin-date", "mock-end-date")
if err != nil {
// 处理一般错误信息
return
}
if err := res.GetResponseError(); err !=nil {
// 处理微信返回错误信息
return
}
fmt.Printf("返回结果: %#v", res)
import "github.com/medivhzhan/weapp"
res, err := weapp.GetVisitPage("mock-access-token", "mock-begin-date", "mock-end-date")
if err != nil {
// 处理一般错误信息
return
}
if err := res.GetResponseError(); err !=nil {
// 处理微信返回错误信息
return
}
fmt.Printf("返回结果: %#v", res)
import "github.com/medivhzhan/weapp"
res, err := weapp.GetDailySummary("mock-access-token", "mock-begin-date", "mock-end-date")
if err != nil {
// 处理一般错误信息
return
}
if err := res.GetResponseError(); err !=nil {
// 处理微信返回错误信息
return
}
fmt.Printf("返回结果: %#v", res)
import "github.com/medivhzhan/weapp"
res, err := weapp.SetTyping("mock-access-token", "mock-open-id", "mock-command")
if err != nil {
// 处理一般错误信息
return
}
if err := res.GetResponseError(); err !=nil {
// 处理微信返回错误信息
return
}
fmt.Printf("返回结果: %#v", res)
import "github.com/medivhzhan/weapp"
res, err := weapp.UploadTempMedia("mock-access-token", "mock-media-type", "mock-media-filename")
// 或者
res, err := weapp.uploadTempMediaByURL("mock-access-token", "mock-media-type", "mock-media-url") // 通过 URL 上传
if err != nil {
// 处理一般错误信息
return
}
if err := res.GetResponseError(); err !=nil {
// 处理微信返回错误信息
return
}
fmt.Printf("返回结果: %#v", res)
import "github.com/medivhzhan/weapp"
res, err := weapp.GetTempMedia("mock-access-token", "mock-media-id")
if err != nil {
// 处理一般错误信息
return
}
if err := res.GetResponseError(); err !=nil {
// 处理微信返回错误信息
return
}
fmt.Printf("返回结果: %#v", res)
import "github.com/medivhzhan/weapp"
// 文本消息
msg := weapp.CSMsgText{
Content: "mock-content",
},
// 或者
// 图片消息
msg := weapp.CSMsgImage{
MediaID: "mock-media-id",
},
// 或者
// 链接消息
msg := weapp.CSMsgLink{
Title: "mock-title",
Description: "mock-description",
URL: "mock-url",
ThumbURL: "mock-thumb-url",
},
// 或者
// 小程序卡片消息
msg := weapp.CSMsgMPCard{
Title: "mock-title",
PagePath: "mock-page-path",
ThumbMediaID: "mock-thumb-media-id",
},
res, err := msg.SendTo("mock-open-id", "mock-access-token")
if err != nil {
// 处理一般错误信息
return
}
if err := res.GetResponseError(); err !=nil {
// 处理微信返回错误信息
return
}
fmt.Printf("返回结果: %#v", res)
import "github.com/medivhzhan/weapp"
res, err := weapp.AddTemplate("mock-template-id", "mock-access-token")
if err != nil {
// 处理一般错误信息
return
}
if err := res.GetResponseError(); err !=nil {
// 处理微信返回错误信息
return
}
fmt.Printf("返回结果: %#v", res)
import "github.com/medivhzhan/weapp"
res, err := weapp.DeleteTemplate("mock-template-id", "mock-access-token")
if err != nil {
// 处理一般错误信息
return
}
if err := res.GetResponseError(); err !=nil {
// 处理微信返回错误信息
return
}
fmt.Printf("返回结果: %#v", res)
import "github.com/medivhzhan/weapp"
res, err := weapp.GetTemplateLibraryByID("mock-template-id", "mock-access-token")
if err != nil {
// 处理一般错误信息
return
}
if err := res.GetResponseError(); err !=nil {
// 处理微信返回错误信息
return
}
fmt.Printf("返回结果: %#v", res)
import "github.com/medivhzhan/weapp"
res, err := weapp.GetTemplateLibraryList("mock-access-token", 0, 10)
if err != nil {
// 处理一般错误信息
return
}
if err := res.GetResponseError(); err !=nil {
// 处理微信返回错误信息
return
}
fmt.Printf("返回结果: %#v", res)
import "github.com/medivhzhan/weapp"
res, err := weapp.GetTemplateList("mock-access-token", 0, 10)
if err != nil {
// 处理一般错误信息
return
}
if err := res.GetResponseError(); err !=nil {
// 处理微信返回错误信息
return
}
fmt.Printf("返回结果: %#v", res)
import "github.com/medivhzhan/weapp"
sender := weapp.TempMsgSender{
ToUser: "mock-open-id",
TemplateID: "mock-template-id",
Page: "mock/page?foo=bar",
FormID: "mock-form-id",
Data: TempMsgData{
"mock-key-word1": TempMsgKeyword{"mock-template-value1"},
"mock-key-word2": TempMsgKeyword{"mock-template-value2"},
},
EmphasisKeyword: "mock-open-id",
}
res, err := sender.Send("mock-access-token")
if err != nil {
// 处理一般错误信息
return
}
if err := res.GetResponseError(); err !=nil {
// 处理微信返回错误信息
return
}
fmt.Printf("返回结果: %#v", res)
import "github.com/medivhzhan/weapp"
sender := weapp.UniformMsgSender{
ToUser: "mock-open-id",
UniformMPMsg: UniformMPMsg{
TemplateID: "mock-template-id",
Page: "mock-page",
FormID: "mock-form-id",
Data: UniformMsgData{
"mock-keyword": UniformMsgKeyword{Value: "mock-value"},
},
EmphasisKeyword: "mock-keyword.DATA",
},
UniformOAMsg: UniformOAMsg{
AppID: "mock-app-id",
TemplateID: "mock-template-id",
URL: "mock-url",
Miniprogram: UniformMsgMiniprogram{"mock-miniprogram-app-id", "mock-page-path"},
Data: UniformMsgData{
"mock-keyword": UniformMsgKeyword{"mock-value", "mock-color"},
},
},
}
_, err := sender.Send("mock-access-token")
if err != nil {
// 处理一般错误信息
return
}
if err := res.GetResponseError(); err !=nil {
// 处理微信返回错误信息
return
}
fmt.Printf("返回结果: %#v", res)
import "github.com/medivhzhan/weapp"
res, err := weapp.CreateActivityId("mock-access-token")
if err != nil {
// 处理一般错误信息
return
}
if err := res.GetResponseError(); err !=nil {
// 处理微信返回错误信息
return
}
fmt.Printf("返回结果: %#v", res)
import "github.com/medivhzhan/weapp"
setter := weapp.UpdatableMsgSetter{
"mock-activity-id",
UpdatableMsgJoining,
UpdatableMsgTempInfo{
[]UpdatableMsgParameter{
{UpdatableMsgParamMemberCount, "mock-parameter-value-number"},
{UpdatableMsgParamRoomLimit, "mock-parameter-value-number"},
},
},
}
res, err := setter.Set("mock-access-token")
if err != nil {
// 处理一般错误信息
return
}
if err := res.GetResponseError(); err !=nil {
// 处理微信返回错误信息
return
}
fmt.Printf("返回结果: %#v", res)
import "github.com/medivhzhan/weapp"
res, err := weapp.ApplyPlugin("access-token", "plugin-app-id", "reason")
if err != nil {
// 处理一般错误信息
return
}
if err := res.GetResponseError(); err !=nil {
// 处理微信返回错误信息
return
}
fmt.Printf("返回结果: %#v", res)
import "github.com/medivhzhan/weapp"
res, err := weapp.GetPluginDevApplyList("mock-access-token", 1, 2)
if err != nil {
// 处理一般错误信息
return
}
if err := res.GetResponseError(); err !=nil {
// 处理微信返回错误信息
return
}
fmt.Printf("返回结果: %#v", res)
import "github.com/medivhzhan/weapp"
res, err := weapp.GetPluginList("access-token")
if err != nil {
// 处理一般错误信息
return
}
if err := res.GetResponseError(); err !=nil {
// 处理微信返回错误信息
return
}
fmt.Printf("返回结果: %#v", res)
import "github.com/medivhzhan/weapp"
res, err := weapp.SetDevPluginApplyStatus("access-token", "plugin-app-id", "reason", weapp.DevAgree)
if err != nil {
// 处理一般错误信息
return
}
if err := res.GetResponseError(); err !=nil {
// 处理微信返回错误信息
return
}
fmt.Printf("返回结果: %#v", res)
import "github.com/medivhzhan/weapp"
res, err := weapp.UnbindPlugin("access-token", "plugin-app-id")
if err != nil {
// 处理一般错误信息
return
}
if err := res.GetResponseError(); err !=nil {
// 处理微信返回错误信息
return
}
fmt.Printf("返回结果: %#v", res)
import "github.com/medivhzhan/weapp"
poi := NearbyPoi{
PicList: PicList{[]string{"first-picture-url", "second-picture-url", "third-picture-url"}},
ServiceInfos: weapp.ServiceInfos{[]weapp.ServiceInfo{
{1, 1, "name", "app-id", "path"},
}},
StoreName: "store-name",
Hour: "11:11-12:12",
Credential: "credential",
Address: "address", // 地址 必填
CompanyName: "company-name", // 主体名字 必填
QualificationList: "qualification-list", // 证明材料 必填 如果company_name和该小程序主体不一致,需要填qualification_list,详细规则见附近的小程序使用指南-如何证明门店的经营主体跟公众号或小程序帐号主体相关http://kf.qq.com/faq/170401MbUnim17040122m2qY.html
KFInfo: weapp.KFInfo{true, "kf-head-img", "kf-name"}, // 客服信息 选填,可自定义服务头像与昵称,具体填写字段见下方示例kf_info pic_list是字符串,内容是一个json!
PoiID: "poi-id", // 如果创建新的门店,poi_id字段为空 如果更新门店,poi_id参数则填对应门店的poi_id 选填
}
res, err := poi.Add("access-token")
if err != nil {
// 处理一般错误信息
return
}
if err := res.GetResponseError(); err !=nil {
// 处理微信返回错误信息
return
}
fmt.Printf("返回结果: %#v", res)
// 接收并处理异步结果
srv, err := NewServer("mock-app-id", "mock-access-token", aesKey, "mock-mch-id", "mock-api-key", false, func(mix *Mixture) bool {
if mix.MsgType != weapp.MsgEvent {
if mix.Event != weapp.EventNearbyPoiAuditInfoAdd {
if mix.AuditID == res.Data.AuditID {
fmt.Printf("返回结果: %#v", mix)
return true
}
}
}
return false
})
if err != nil {
// 处理错误
return
}
if err := srv.HandleRequest(w, r); err != nil {
// 处理错误
return
}
import "github.com/medivhzhan/weapp"
res, err := weapp.DeleteNearbyPoi("access-token", "poi-id")
if err != nil {
// 处理一般错误信息
return
}
if err := res.GetResponseError(); err !=nil {
// 处理微信返回错误信息
return
}
fmt.Printf("返回结果: %#v", res)
import "github.com/medivhzhan/weapp"
res, err := weapp.GetNearbyPoiList("access-token", 1, 10)
if err != nil {
// 处理一般错误信息
return
}
if err := res.GetResponseError(); err !=nil {
// 处理微信返回错误信息
return
}
fmt.Printf("返回结果: %#v", res)
import "github.com/medivhzhan/weapp"
res, err := weapp.SetNearbyPoiShowStatus("access-token", "poi-id", weapp.ShowNearbyPoi)
// 或者
res, err := weapp.SetNearbyPoiShowStatus("access-token", "poi-id", weapp.HideNearbyPoi)
if err != nil {
// 处理一般错误信息
return
}
if err := res.GetResponseError(); err !=nil {
// 处理微信返回错误信息
return
}
fmt.Printf("返回结果: %#v", res)
import (
"ioutil"
"github.com/medivhzhan/weapp"
)
creator := weapp.QRCodeCreator{
Path: "mock/path",
Width: 430,
}
body, res, err := creator.Create("mock-access-token")
if err != nil {
// 处理一般错误信息
return
}
if err := res.GetResponseError(); err !=nil {
// 处理微信返回错误信息
return
}
defer body.Close()
// 处理 body 内的 BUffer
content, err := ioutil.ReadAll(body)
// 处理图片内容
import (
"ioutil"
"github.com/medivhzhan/weapp"
)
getter := weapp.QRCode{
Path: "mock/path",
Width: 430,
AutoColor: true,
LineColor: Color{"r", "g", "b"},
IsHyaline: true,
}
body, res, err := getter.Get("mock-access-token")
if err != nil {
// 处理一般错误信息
return
}
if err := res.GetResponseError(); err !=nil {
// 处理微信返回错误信息
return
}
defer body.Close()
// 处理 body 内的 BUffer
content, err := ioutil.ReadAll(body)
// 处理图片内容
import (
"ioutil"
"github.com/medivhzhan/weapp"
)
getter := weapp.UnlimitedQRCode{
Scene: "mock-scene-data",
Page: "mock/page",
Width: 430,
AutoColor: true,
LineColor: Color{"r", "g", "b"},
IsHyaline: true,
}
body, res, err := getter.Get("mock-access-token")
if err != nil {
// 处理一般错误信息
return
}
if err := res.GetResponseError(); err !=nil {
// 处理微信返回错误信息
return
}
defer body.Close()
// 处理 body 内的 BUffer
content, err := ioutil.ReadAll(body)
// 处理图片内容
import "github.com/medivhzhan/weapp"
res, err := weapp.IMGSecCheck("mock-access-token", "local-filename")
if err != nil {
// 处理一般错误信息
return
}
if err := res.GetResponseError(); err !=nil {
// 处理微信返回错误信息
return
}
fmt.Printf("返回结果: %#v", res)
import "github.com/medivhzhan/weapp"
res, err := weapp.MediaCheckAsync("access-token", "image-url", weapp.MediaTypeImage)
if err != nil {
// 处理一般错误信息
return
}
if err := res.GetResponseError(); err !=nil {
// 处理微信返回错误信息
return
}
fmt.Printf("返回结果: %#v", res)
// 接收并处理异步结果
srv, err := NewServer("mock-app-id", "mock-access-token", aesKey, "mock-mch-id", "mock-api-key", false, func(mix *Mixture) bool {
if mix.MsgType != weapp.MsgEvent {
if mix.Event != weapp.EventAsyncMediaCheck {
if mix.TraceID == res.TraceID {
fmt.Printf("返回结果: %#v", mix)
return true
}
}
}
return false
})
if err != nil {
// 处理错误
return
}
if err := srv.HandleRequest(w, r); err != nil {
// 处理错误
return
}
import "github.com/medivhzhan/weapp"
res, err := weapp.MSGSecCheck("access-token", "message-content")
if err != nil {
// 处理一般错误信息
return
}
if err := res.GetResponseError(); err !=nil {
// 处理微信返回错误信息
return
}
fmt.Printf("返回结果: %#v", res)
import "github.com/medivhzhan/weapp"
res, err := weapp.scanQRCode("access-token", "file-path")
// 或者
res, err := weapp.scanQRCodeByURL("access-token", "qr-code-url")
if err != nil {
// 处理一般错误信息
return
}
if err := res.GetResponseError(); err !=nil {
// 处理微信返回错误信息
return
}
fmt.Printf("返回结果: %#v", res)
import "github.com/medivhzhan/weapp"
res, err := weapp.SuperResolution("access-token", "file-path")
// 或者
res, err := weapp.SuperResolutionByURL("access-token", "img-url")
if err != nil {
// 处理一般错误信息
return
}
if err := res.GetResponseError(); err !=nil {
// 处理微信返回错误信息
return
}
fmt.Printf("返回结果: %#v", res)
import "github.com/medivhzhan/weapp"
res, err := weapp.BankCard("access-token", "file-path", weapp.RecognizeModeScan)
// 或者
res, err := weapp.BankCardByURL("access-token", "card-url", weapp.RecognizeModePhoto)
if err != nil {
// 处理一般错误信息
return
}
if err := res.GetResponseError(); err !=nil {
// 处理微信返回错误信息
return
}
fmt.Printf("返回结果: %#v", res)
import "github.com/medivhzhan/weapp"
res, err := weapp.DriverLicense("access-token", "file-path")
// 或者
res, err := weapp.DriverLicenseByURL("access-token", "card-url")
if err != nil {
// 处理一般错误信息
return
}
if err := res.GetResponseError(); err !=nil {
// 处理微信返回错误信息
return
}
fmt.Printf("返回结果: %#v", res)
import "github.com/medivhzhan/weapp"
res, err := weapp.IDCardByURL("access-token", "card-url", weapp.RecognizeModePhoto)
// 或者
res, err := weapp.IDCard("access-token", "file-path", weapp.RecognizeModeScan)
if err != nil {
// 处理一般错误信息
return
}
if err := res.GetResponseError(); err !=nil {
// 处理微信返回错误信息
return
}
fmt.Printf("返回结果: %#v", res)
import "github.com/medivhzhan/weapp"
res, err := weapp.VehicleLicense("access-token", "file-path", weapp.RecognizeModeScan)
// 或者
res, err := weapp.VehicleLicenseByURL("access-token", "card-url", weapp.RecognizeModePhoto)
if err != nil {
// 处理一般错误信息
return
}
if err := res.GetResponseError(); err !=nil {
// 处理微信返回错误信息
return
}
fmt.Printf("返回结果: %#v", res)
import "github.com/medivhzhan/weapp"
res, err := weapp.VerifySignature("access-token", "open-id", "data", "signature")
if err != nil {
// 处理一般错误信息
return
}
if err := res.GetResponseError(); err !=nil {
// 处理微信返回错误信息
return
}
fmt.Printf("返回结果: %#v", res)