|
|
- package weixinrpc
-
- import (
- "encoding/json"
- "strconv"
- "time"
-
- "git.tetele.net/tgo/crypter"
-
- "github.com/golang/protobuf/proto"
- )
-
- /**
- * 发送小程序订阅服务消息
- * appid,secret 小程序ID 密钥
- * touser 小程序openid
- * mp_appid 关联公众号appid,要求与小程序有绑定且同主体
- * temp_id 模板id
- * page 跳转的url
- * lang 进入小程序查看”的语言类型,支持zh_CN(简体中文)、en_US(英文)、zh_HK(繁体中文)、zh_TW(繁体中文),默认为zh_CN
- * miniprogram_state 跳转小程序类型:developer为开发版;trial为体验版;formal为正式版;默认为正式版
- * data 公众号模板消息的数据
- */
-
- func SendMiniSubscribeMessage(dbname, site_id string, appid, secret, touser, temp_id, page string, miniprogram_state, lang string, data interface{}, url ...string) (*WxApiRes, error) {
-
- conn, err := rpc_server_conn(url...)
-
- message_data := SubscribeMessageReq{}
- message_data.SiteId = site_id
- message_data.Dbname = dbname
- message_data.Appid = appid
- message_data.Secret = secret
- message_data.Touser = touser
- message_data.TemplateId = temp_id
- message_data.Page = page
- message_data.MiniprogramState = miniprogram_state
- message_data.Lang = lang
- message_data.Data = data
-
- data_json, err := json.Marshal(message_data)
- if err != nil {
- return nil, err
- }
-
- encryData := crypter.DesEn(string(data_json), DES_KEY)
-
- now_int64 := time.Now().Unix()
-
- now := strconv.FormatInt(now_int64, 10)
-
- sign := Sign(encryData, now)
-
- req := &Request{
- proto.String(encryData),
- proto.String(now),
- proto.String(sign),
- nil}
-
- res := &Response{}
-
- err = conn.SendMiniappSubscribeMessage(req, res)
-
- if err != nil {
- return nil, err
- }
-
- return HandleRes(res)
-
- }
|