mirror of
https://github.com/silenceper/wechat.git
synced 2026-02-04 21:02:25 +08:00
Merge branch 'v2' of github.com:silenceper/wechat into feature/remove-redis
This commit is contained in:
@@ -22,9 +22,9 @@ const (
|
||||
MsgTypeMiniProgramPage = "miniprogrampage"
|
||||
// MsgTypeEvent 事件
|
||||
MsgTypeEvent MsgType = "event"
|
||||
// DataTypeXML XML格式数据
|
||||
// DataTypeXML XML 格式数据
|
||||
DataTypeXML = "xml"
|
||||
// DataTypeJSON JSON格式数据
|
||||
// DataTypeJSON JSON 格式数据
|
||||
DataTypeJSON = "json"
|
||||
)
|
||||
|
||||
|
||||
@@ -28,7 +28,7 @@ type MediaText struct {
|
||||
Content string `json:"content"`
|
||||
}
|
||||
|
||||
// MediaResource 消息使用的临时素材id
|
||||
// MediaResource 消息使用的临时素材 id
|
||||
type MediaResource struct {
|
||||
MediaID string `json:"media_id"`
|
||||
}
|
||||
@@ -51,7 +51,7 @@ type MediaLink struct {
|
||||
|
||||
// CustomerMessage 客服消息
|
||||
type CustomerMessage struct {
|
||||
ToUser string `json:"touser"` // 接受者OpenID
|
||||
ToUser string `json:"touser"` // 接受者 OpenID
|
||||
Msgtype MsgType `json:"msgtype"` // 客服消息类型
|
||||
Text *MediaText `json:"text,omitempty"` // 可选
|
||||
Image *MediaResource `json:"image,omitempty"` // 可选
|
||||
|
||||
@@ -9,6 +9,8 @@ import (
|
||||
"sort"
|
||||
"strings"
|
||||
|
||||
"github.com/tidwall/gjson"
|
||||
|
||||
"github.com/silenceper/wechat/v2/miniprogram/context"
|
||||
"github.com/silenceper/wechat/v2/miniprogram/security"
|
||||
"github.com/silenceper/wechat/v2/util"
|
||||
@@ -18,11 +20,11 @@ import (
|
||||
type ConfirmReceiveMethod int8
|
||||
|
||||
const (
|
||||
// EventTypeTradeManageRemindAccessAPI 提醒接入发货信息管理服务API
|
||||
// EventTypeTradeManageRemindAccessAPI 提醒接入发货信息管理服务 API
|
||||
// 小程序完成账期授权时/小程序产生第一笔交易时/已产生交易但从未发货的小程序,每天一次
|
||||
EventTypeTradeManageRemindAccessAPI EventType = "trade_manage_remind_access_api"
|
||||
// EventTypeTradeManageRemindShipping 提醒需要上传发货信息
|
||||
// 曾经发过货的小程序,订单超过48小时未发货时
|
||||
// 曾经发过货的小程序,订单超过 48 小时未发货时
|
||||
EventTypeTradeManageRemindShipping EventType = "trade_manage_remind_shipping"
|
||||
// EventTypeTradeManageOrderSettlement 订单将要结算或已经结算
|
||||
// 订单完成发货时/订单结算时
|
||||
@@ -39,14 +41,27 @@ const (
|
||||
EventTypeXpayGoodsDeliverNotify EventType = "xpay_goods_deliver_notify"
|
||||
// EventTypeXpayCoinPayNotify 代币支付推送事件
|
||||
EventTypeXpayCoinPayNotify EventType = "xpay_coin_pay_notify"
|
||||
// EventSubscribePopup 用户操作订阅通知弹窗事件推送,用户在图文等场景内订阅通知的操作
|
||||
EventSubscribePopup EventType = "subscribe_msg_popup_event"
|
||||
// EventSubscribeMsgChange 用户管理订阅通知,用户在服务通知管理页面做通知管理时的操作
|
||||
EventSubscribeMsgChange EventType = "subscribe_msg_change_event"
|
||||
// EventSubscribeMsgSent 发送订阅通知,调用 bizsend 接口发送通知
|
||||
EventSubscribeMsgSent EventType = "subscribe_msg_sent_event"
|
||||
// ConfirmReceiveMethodAuto 自动确认收货
|
||||
ConfirmReceiveMethodAuto ConfirmReceiveMethod = 1
|
||||
// ConfirmReceiveMethodManual 手动确认收货
|
||||
ConfirmReceiveMethodManual ConfirmReceiveMethod = 2
|
||||
)
|
||||
|
||||
const (
|
||||
// InfoTypeAcceptSubscribeMessage 接受订阅通知
|
||||
InfoTypeAcceptSubscribeMessage InfoType = "accept"
|
||||
// InfoTypeRejectSubscribeMessage 拒绝订阅通知
|
||||
InfoTypeRejectSubscribeMessage InfoType = "reject"
|
||||
)
|
||||
|
||||
// PushReceiver 接收消息推送
|
||||
// 暂仅支付Aes加密方式
|
||||
// 暂仅支付 Aes 加密方式
|
||||
type PushReceiver struct {
|
||||
*context.Context
|
||||
}
|
||||
@@ -58,16 +73,16 @@ func NewPushReceiver(ctx *context.Context) *PushReceiver {
|
||||
}
|
||||
}
|
||||
|
||||
// GetMsg 获取接收到的消息(如果是加密的返回解密数据)
|
||||
// GetMsg 获取接收到的消息 (如果是加密的返回解密数据)
|
||||
func (receiver *PushReceiver) GetMsg(r *http.Request) (string, []byte, error) {
|
||||
// 判断请求格式
|
||||
var dataType string
|
||||
contentType := r.Header.Get("Content-Type")
|
||||
if strings.HasPrefix(contentType, "text/xml") {
|
||||
// xml格式
|
||||
// xml 格式
|
||||
dataType = DataTypeXML
|
||||
} else {
|
||||
// json格式
|
||||
// json 格式
|
||||
dataType = DataTypeJSON
|
||||
}
|
||||
|
||||
@@ -108,7 +123,7 @@ func (receiver *PushReceiver) GetMsg(r *http.Request) (string, []byte, error) {
|
||||
return dataType, byteData, err
|
||||
}
|
||||
|
||||
// GetMsgData 获取接收到的消息(解密数据)
|
||||
// GetMsgData 获取接收到的消息 (解密数据)
|
||||
func (receiver *PushReceiver) GetMsgData(r *http.Request) (MsgType, EventType, PushData, error) {
|
||||
dataType, decryptMsg, err := receiver.GetMsg(r)
|
||||
if err != nil {
|
||||
@@ -144,7 +159,7 @@ func (receiver *PushReceiver) GetMsgData(r *http.Request) (MsgType, EventType, P
|
||||
func (receiver *PushReceiver) getEvent(dataType string, eventType EventType, decryptMsg []byte) (PushData, error) {
|
||||
switch eventType {
|
||||
case EventTypeTradeManageRemindAccessAPI:
|
||||
// 提醒接入发货信息管理服务API
|
||||
// 提醒接入发货信息管理服务 API
|
||||
var pushData PushDataRemindAccessAPI
|
||||
err := receiver.unmarshal(dataType, decryptMsg, &pushData)
|
||||
return &pushData, err
|
||||
@@ -188,25 +203,104 @@ func (receiver *PushReceiver) getEvent(dataType string, eventType EventType, dec
|
||||
var pushData PushDataXpayCoinPayNotify
|
||||
err := receiver.unmarshal(dataType, decryptMsg, &pushData)
|
||||
return &pushData, err
|
||||
case EventSubscribePopup:
|
||||
// 用户操作订阅通知弹窗事件推送
|
||||
return receiver.unmarshalSubscribePopup(dataType, decryptMsg)
|
||||
case EventSubscribeMsgChange:
|
||||
// 用户管理订阅通知事件推送
|
||||
return receiver.unmarshalSubscribeMsgChange(dataType, decryptMsg)
|
||||
case EventSubscribeMsgSent:
|
||||
// 用户发送订阅通知事件推送
|
||||
return receiver.unmarshalSubscribeMsgSent(dataType, decryptMsg)
|
||||
}
|
||||
// 暂不支持其他事件类型,直接返回解密后的数据,由调用方处理
|
||||
return decryptMsg, nil
|
||||
}
|
||||
|
||||
// unmarshal 解析推送的数据
|
||||
func (receiver *PushReceiver) unmarshal(dateType string, decryptMsg []byte, pushData interface{}) error {
|
||||
if dateType == DataTypeXML {
|
||||
func (receiver *PushReceiver) unmarshal(dataType string, decryptMsg []byte, pushData interface{}) error {
|
||||
if dataType == DataTypeXML {
|
||||
return xml.Unmarshal(decryptMsg, pushData)
|
||||
}
|
||||
return json.Unmarshal(decryptMsg, pushData)
|
||||
}
|
||||
|
||||
// unmarshalSubscribePopup
|
||||
func (receiver *PushReceiver) unmarshalSubscribePopup(dataType string, decryptMsg []byte) (PushData, error) {
|
||||
var pushData PushDataSubscribePopup
|
||||
err := receiver.unmarshal(dataType, decryptMsg, &pushData)
|
||||
if err == nil {
|
||||
listData := gjson.Get(string(decryptMsg), "List")
|
||||
if listData.IsObject() {
|
||||
listItem := SubscribeMsgPopupEventList{}
|
||||
if parseErr := json.Unmarshal([]byte(listData.Raw), &listItem); parseErr != nil {
|
||||
return &pushData, parseErr
|
||||
}
|
||||
pushData.SetSubscribeMsgPopupEvents([]SubscribeMsgPopupEventList{listItem})
|
||||
} else if listData.IsArray() {
|
||||
listItems := make([]SubscribeMsgPopupEventList, 0)
|
||||
if parseErr := json.Unmarshal([]byte(listData.Raw), &listItems); parseErr != nil {
|
||||
return &pushData, parseErr
|
||||
}
|
||||
pushData.SetSubscribeMsgPopupEvents(listItems)
|
||||
}
|
||||
}
|
||||
|
||||
return &pushData, err
|
||||
}
|
||||
|
||||
// unmarshalSubscribeMsgChange 解析用户管理订阅通知事件推送
|
||||
func (receiver *PushReceiver) unmarshalSubscribeMsgChange(dataType string, decryptMsg []byte) (PushData, error) {
|
||||
var pushData PushDataSubscribeMsgChange
|
||||
err := receiver.unmarshal(dataType, decryptMsg, &pushData)
|
||||
if err == nil {
|
||||
listData := gjson.Get(string(decryptMsg), "List")
|
||||
if listData.IsObject() {
|
||||
listItem := SubscribeMsgChangeList{}
|
||||
if parseErr := json.Unmarshal([]byte(listData.Raw), &listItem); parseErr != nil {
|
||||
return &pushData, parseErr
|
||||
}
|
||||
pushData.SetSubscribeMsgChangeEvents([]SubscribeMsgChangeList{listItem})
|
||||
} else if listData.IsArray() {
|
||||
listItems := make([]SubscribeMsgChangeList, 0)
|
||||
if parseErr := json.Unmarshal([]byte(listData.Raw), &listItems); parseErr != nil {
|
||||
return &pushData, parseErr
|
||||
}
|
||||
pushData.SetSubscribeMsgChangeEvents(listItems)
|
||||
}
|
||||
}
|
||||
return &pushData, err
|
||||
}
|
||||
|
||||
// unmarshalSubscribeMsgSent 解析用户发送订阅通知事件推送
|
||||
func (receiver *PushReceiver) unmarshalSubscribeMsgSent(dataType string, decryptMsg []byte) (PushData, error) {
|
||||
var pushData PushDataSubscribeMsgSent
|
||||
err := receiver.unmarshal(dataType, decryptMsg, &pushData)
|
||||
if err == nil {
|
||||
listData := gjson.Get(string(decryptMsg), "List")
|
||||
if listData.IsObject() {
|
||||
listItem := SubscribeMsgSentList{}
|
||||
if parseErr := json.Unmarshal([]byte(listData.Raw), &listItem); parseErr != nil {
|
||||
return &pushData, parseErr
|
||||
}
|
||||
pushData.SetSubscribeMsgSentEvents([]SubscribeMsgSentList{listItem})
|
||||
} else if listData.IsArray() {
|
||||
listItems := make([]SubscribeMsgSentList, 0)
|
||||
if parseErr := json.Unmarshal([]byte(listData.Raw), &listItems); parseErr != nil {
|
||||
return &pushData, parseErr
|
||||
}
|
||||
pushData.SetSubscribeMsgSentEvents(listItems)
|
||||
}
|
||||
}
|
||||
return &pushData, err
|
||||
}
|
||||
|
||||
// DataReceived 接收到的数据
|
||||
type DataReceived struct {
|
||||
Encrypt string `json:"Encrypt" xml:"Encrypt"` // 加密的消息体
|
||||
}
|
||||
|
||||
// PushData 推送的数据(已转对应的结构体)
|
||||
// PushData 推送的数据 (已转对应的结构体)
|
||||
type PushData interface{}
|
||||
|
||||
// CommonPushData 推送数据通用部分
|
||||
@@ -216,7 +310,7 @@ type CommonPushData struct {
|
||||
Event EventType `json:"Event" xml:"Event"` // 事件类型
|
||||
ToUserName string `json:"ToUserName" xml:"ToUserName"` // 小程序的原始 ID
|
||||
FromUserName string `json:"FromUserName" xml:"FromUserName"` // 发送方账号(一个 OpenID,此时发送方是系统账号)
|
||||
CreateTime int64 `json:"CreateTime" xml:"CreateTime"` // 消息创建时间 (整型),时间戳
|
||||
CreateTime int64 `json:"CreateTime" xml:"CreateTime"` // 消息创建时间(整型),时间戳
|
||||
}
|
||||
|
||||
// MediaCheckAsyncData 媒体内容安全异步审查结果通知
|
||||
@@ -272,7 +366,7 @@ type PushDataRemindShipping struct {
|
||||
Msg string `json:"msg" xml:"msg"` // 消息文本内容
|
||||
}
|
||||
|
||||
// PushDataRemindAccessAPI 提醒接入发货信息管理服务API信息
|
||||
// PushDataRemindAccessAPI 提醒接入发货信息管理服务 API 信息
|
||||
type PushDataRemindAccessAPI struct {
|
||||
CommonPushData
|
||||
Msg string `json:"msg" xml:"msg"` // 消息文本内容
|
||||
@@ -281,9 +375,9 @@ type PushDataRemindAccessAPI struct {
|
||||
// PushDataAddExpressPath 运单轨迹更新信息
|
||||
type PushDataAddExpressPath struct {
|
||||
CommonPushData
|
||||
DeliveryID string `json:"DeliveryID" xml:"DeliveryID"` // 快递公司ID
|
||||
WayBillID string `json:"WaybillId" xml:"WaybillId"` // 运单ID
|
||||
OrderID string `json:"OrderId" xml:"OrderId"` // 订单ID
|
||||
DeliveryID string `json:"DeliveryID" xml:"DeliveryID"` // 快递公司 ID
|
||||
WayBillID string `json:"WaybillId" xml:"WaybillId"` // 运单 ID
|
||||
OrderID string `json:"OrderId" xml:"OrderId"` // 订单 ID
|
||||
Version int `json:"Version" xml:"Version"` // 轨迹版本号(整型)
|
||||
Count int `json:"Count" xml:"Count"` // 轨迹节点数(整型)
|
||||
Actions []*PushDataAddExpressPathAction `json:"Actions" xml:"Actions"` // 轨迹节点列表
|
||||
@@ -304,10 +398,10 @@ type PushDataSecVodUpload struct {
|
||||
|
||||
// SecVodUploadEvent 短剧媒资上传完成事件
|
||||
type SecVodUploadEvent struct {
|
||||
MediaID string `json:"media_id" xml:"media_id"` // 媒资id
|
||||
MediaID string `json:"media_id" xml:"media_id"` // 媒资 id
|
||||
SourceContext string `json:"source_context" xml:"source_context"` // 透传上传接口中开发者设置的值。
|
||||
Errcode int `json:"errcode" xml:"errcode"` // 错误码,上传失败时该值非
|
||||
Errmsg string `json:"errmsg" xml:"errmsg"` // 错误提示
|
||||
ErrCode int `json:"errcode" xml:"errcode"` // 错误码,上传失败时该值非
|
||||
ErrMsg string `json:"errmsg" xml:"errmsg"` // 错误提示
|
||||
}
|
||||
|
||||
// PushDataSecVodAudit 短剧媒资审核状态
|
||||
@@ -318,14 +412,14 @@ type PushDataSecVodAudit struct {
|
||||
|
||||
// SecVodAuditEvent 短剧媒资审核状态事件
|
||||
type SecVodAuditEvent struct {
|
||||
DramaID string `json:"drama_id" xml:"drama_id"` // 剧目id
|
||||
DramaID string `json:"drama_id" xml:"drama_id"` // 剧目 id
|
||||
SourceContext string `json:"source_context" xml:"source_context"` // 透传上传接口中开发者设置的值
|
||||
AuditDetail DramaAuditDetail `json:"audit_detail" xml:"audit_detail"` // 剧目审核结果,单独每一集的审核结果可以根据drama_id查询剧集详情得到
|
||||
AuditDetail DramaAuditDetail `json:"audit_detail" xml:"audit_detail"` // 剧目审核结果,单独每一集的审核结果可以根据 drama_id 查询剧集详情得到
|
||||
}
|
||||
|
||||
// DramaAuditDetail 剧目审核结果
|
||||
type DramaAuditDetail struct {
|
||||
Status int `json:"status" xml:"status"` // 审核状态,0为无效值;1为审核中;2为最终失败;3为审核通过;4为驳回重填
|
||||
Status int `json:"status" xml:"status"` // 审核状态,0 为无效值;1 为审核中;2 为最终失败;3 为审核通过;4 为驳回重填
|
||||
CreateTime int64 `json:"create_time" xml:"create_time"` // 提审时间戳
|
||||
AuditTime int64 `json:"audit_time" xml:"audit_time"` // 审核时间戳
|
||||
}
|
||||
@@ -333,9 +427,9 @@ type DramaAuditDetail struct {
|
||||
// PushDataXpayGoodsDeliverNotify 道具发货推送
|
||||
type PushDataXpayGoodsDeliverNotify struct {
|
||||
CommonPushData
|
||||
OpenID string `json:"OpenId" xml:"OpenId"` // 用户openid
|
||||
OpenID string `json:"OpenId" xml:"OpenId"` // 用户 openid
|
||||
OutTradeNo string `json:"OutTradeNo" xml:"OutTradeNo"` // 业务订单号
|
||||
Env int `json:"Env" xml:"Env"` //,环境配置 0:现网环境(也叫正式环境)1:沙箱环境
|
||||
Env int `json:"Env" xml:"Env"` // ,环境配置 0:现网环境(也叫正式环境)1:沙箱环境
|
||||
WeChatPayInfo WeChatPayInfo `json:"WeChatPayInfo" xml:"WeChatPayInfo"` // 微信支付信息 非微信支付渠道可能没有
|
||||
GoodsInfo GoodsInfo `json:"GoodsInfo" xml:"GoodsInfo"` // 道具参数信息
|
||||
}
|
||||
@@ -344,14 +438,14 @@ type PushDataXpayGoodsDeliverNotify struct {
|
||||
type WeChatPayInfo struct {
|
||||
MchOrderNo string `json:"MchOrderNo" xml:"MchOrderNo"` // 微信支付商户单号
|
||||
TransactionID string `json:"TransactionId" xml:"TransactionId"` // 交易单号(微信支付订单号)
|
||||
PaidTime int64 `json:"PaidTime" xml:"PaidTime"` // 用户支付时间,Linux秒级时间戳
|
||||
PaidTime int64 `json:"PaidTime" xml:"PaidTime"` // 用户支付时间,Linux 秒级时间戳
|
||||
}
|
||||
|
||||
// GoodsInfo 道具参数信息
|
||||
type GoodsInfo struct {
|
||||
ProductID string `json:"ProductId" xml:"ProductId"` // 道具ID
|
||||
ProductID string `json:"ProductId" xml:"ProductId"` // 道具 ID
|
||||
Quantity int `json:"Quantity" xml:"Quantity"` // 数量
|
||||
OrigPrice int64 `json:"OrigPrice" xml:"OrigPrice"` // 物品原始价格 (单位:分)
|
||||
OrigPrice int64 `json:"OrigPrice" xml:"OrigPrice"` // 物品原始价格(单位:分)
|
||||
ActualPrice int64 `json:"ActualPrice" xml:"ActualPrice"` // 物品实际支付价格(单位:分)
|
||||
Attach string `json:"Attach" xml:"Attach"` // 透传信息
|
||||
}
|
||||
@@ -359,9 +453,9 @@ type GoodsInfo struct {
|
||||
// PushDataXpayCoinPayNotify 代币支付推送
|
||||
type PushDataXpayCoinPayNotify struct {
|
||||
CommonPushData
|
||||
OpenID string `json:"OpenId" xml:"OpenId"` // 用户openid
|
||||
OpenID string `json:"OpenId" xml:"OpenId"` // 用户 openid
|
||||
OutTradeNo string `json:"OutTradeNo" xml:"OutTradeNo"` // 业务订单号
|
||||
Env int `json:"Env" xml:"Env"` //,环境配置 0:现网环境(也叫正式环境)1:沙箱环境
|
||||
Env int `json:"Env" xml:"Env"` // ,环境配置 0:现网环境(也叫正式环境)1:沙箱环境
|
||||
WeChatPayInfo WeChatPayInfo `json:"WeChatPayInfo" xml:"WeChatPayInfo"` // 微信支付信息 非微信支付渠道可能没有
|
||||
CoinInfo CoinInfo `json:"CoinInfo" xml:"CoinInfo"` // 代币参数信息
|
||||
}
|
||||
@@ -369,7 +463,117 @@ type PushDataXpayCoinPayNotify struct {
|
||||
// CoinInfo 代币参数信息
|
||||
type CoinInfo struct {
|
||||
Quantity int `json:"Quantity" xml:"Quantity"` // 数量
|
||||
OrigPrice int64 `json:"OrigPrice" xml:"OrigPrice"` // 物品原始价格 (单位:分)
|
||||
OrigPrice int64 `json:"OrigPrice" xml:"OrigPrice"` // 物品原始价格(单位:分)
|
||||
ActualPrice int64 `json:"ActualPrice" xml:"ActualPrice"` // 物品实际支付价格(单位:分)
|
||||
Attach string `json:"Attach" xml:"Attach"` // 透传信息
|
||||
}
|
||||
|
||||
// PushDataSubscribePopup 用户操作订阅通知弹窗事件推送
|
||||
type PushDataSubscribePopup struct {
|
||||
CommonPushData
|
||||
subscribeMsgPopupEventList []SubscribeMsgPopupEventList `json:"-"`
|
||||
SubscribeMsgPopupEvent SubscribeMsgPopupEvent `xml:"SubscribeMsgPopupEvent"`
|
||||
}
|
||||
|
||||
// SubscribeMsgPopupEvent 用户操作订阅通知弹窗消息回调
|
||||
type SubscribeMsgPopupEvent struct {
|
||||
List []SubscribeMsgPopupEventList `xml:"List"`
|
||||
}
|
||||
|
||||
// SubscribeMsgPopupEventList 订阅消息事件列表
|
||||
type SubscribeMsgPopupEventList struct {
|
||||
TemplateID string `xml:"TemplateId" json:"TemplateId"`
|
||||
SubscribeStatusString string `xml:"SubscribeStatusString" json:"SubscribeStatusString"`
|
||||
PopupScene string `xml:"PopupScene" json:"PopupScene"`
|
||||
}
|
||||
|
||||
// SetSubscribeMsgPopupEvents 设置订阅消息事件
|
||||
func (s *PushDataSubscribePopup) SetSubscribeMsgPopupEvents(list []SubscribeMsgPopupEventList) {
|
||||
s.subscribeMsgPopupEventList = list
|
||||
}
|
||||
|
||||
// GetSubscribeMsgPopupEvents 获取订阅消息事件数据
|
||||
func (s *PushDataSubscribePopup) GetSubscribeMsgPopupEvents() []SubscribeMsgPopupEventList {
|
||||
if s.subscribeMsgPopupEventList != nil {
|
||||
return s.subscribeMsgPopupEventList
|
||||
}
|
||||
|
||||
if s.SubscribeMsgPopupEvent.List == nil || len(s.SubscribeMsgPopupEvent.List) < 1 {
|
||||
return nil
|
||||
}
|
||||
return s.SubscribeMsgPopupEvent.List
|
||||
}
|
||||
|
||||
// PushDataSubscribeMsgChange 用户管理订阅通知事件推送
|
||||
type PushDataSubscribeMsgChange struct {
|
||||
CommonPushData
|
||||
SubscribeMsgChangeEvent SubscribeMsgChangeEvent `xml:"SubscribeMsgChangeEvent"`
|
||||
subscribeMsgChangeList []SubscribeMsgChangeList `json:"-"`
|
||||
}
|
||||
|
||||
// SubscribeMsgChangeEvent 用户管理订阅通知回调
|
||||
type SubscribeMsgChangeEvent struct {
|
||||
List []SubscribeMsgChangeList `xml:"List" json:"List"`
|
||||
}
|
||||
|
||||
// SubscribeMsgChangeList 订阅消息事件列表
|
||||
type SubscribeMsgChangeList struct {
|
||||
TemplateID string `xml:"TemplateId" json:"TemplateId"`
|
||||
SubscribeStatusString string `xml:"SubscribeStatusString" json:"SubscribeStatusString"`
|
||||
}
|
||||
|
||||
// SetSubscribeMsgChangeEvents 设置订阅消息事件
|
||||
func (s *PushDataSubscribeMsgChange) SetSubscribeMsgChangeEvents(list []SubscribeMsgChangeList) {
|
||||
s.subscribeMsgChangeList = list
|
||||
}
|
||||
|
||||
// GetSubscribeMsgChangeEvents 获取订阅消息事件数据
|
||||
func (s *PushDataSubscribeMsgChange) GetSubscribeMsgChangeEvents() []SubscribeMsgChangeList {
|
||||
if s.subscribeMsgChangeList != nil {
|
||||
return s.subscribeMsgChangeList
|
||||
}
|
||||
|
||||
if s.SubscribeMsgChangeEvent.List == nil || len(s.SubscribeMsgChangeEvent.List) < 1 {
|
||||
return nil
|
||||
}
|
||||
|
||||
return s.SubscribeMsgChangeEvent.List
|
||||
}
|
||||
|
||||
// PushDataSubscribeMsgSent 用户发送订阅通知事件推送
|
||||
type PushDataSubscribeMsgSent struct {
|
||||
CommonPushData
|
||||
SubscribeMsgSentEvent SubscribeMsgSentEvent `xml:"SubscribeMsgSentEvent"`
|
||||
subscribeMsgSentEventList []SubscribeMsgSentList `json:"-"`
|
||||
}
|
||||
|
||||
// SubscribeMsgSentEvent 用户发送订阅通知回调
|
||||
type SubscribeMsgSentEvent struct {
|
||||
List []SubscribeMsgSentList `xml:"List" json:"List"`
|
||||
}
|
||||
|
||||
// SubscribeMsgSentList 订阅消息事件列表
|
||||
type SubscribeMsgSentList struct {
|
||||
TemplateID string `xml:"TemplateId" json:"TemplateId"`
|
||||
MsgID string `xml:"MsgID" json:"MsgID"`
|
||||
ErrorCode int `xml:"ErrorCode" json:"ErrorCode"`
|
||||
ErrorStatus string `xml:"ErrorStatus" json:"ErrorStatus"`
|
||||
}
|
||||
|
||||
// SetSubscribeMsgSentEvents 设置订阅消息事件
|
||||
func (s *PushDataSubscribeMsgSent) SetSubscribeMsgSentEvents(list []SubscribeMsgSentList) {
|
||||
s.subscribeMsgSentEventList = list
|
||||
}
|
||||
|
||||
// GetSubscribeMsgSentEvents 获取订阅消息事件数据
|
||||
func (s *PushDataSubscribeMsgSent) GetSubscribeMsgSentEvents() []SubscribeMsgSentList {
|
||||
if s.subscribeMsgSentEventList != nil {
|
||||
return s.subscribeMsgSentEventList
|
||||
}
|
||||
|
||||
if s.SubscribeMsgSentEvent.List == nil || len(s.SubscribeMsgSentEvent.List) < 1 {
|
||||
return nil
|
||||
}
|
||||
|
||||
return s.SubscribeMsgSentEvent.List
|
||||
}
|
||||
|
||||
15
miniprogram/message/reply.go
Normal file
15
miniprogram/message/reply.go
Normal file
@@ -0,0 +1,15 @@
|
||||
package message
|
||||
|
||||
import "errors"
|
||||
|
||||
// ErrInvalidReply 无效的回复
|
||||
var ErrInvalidReply = errors.New("无效的回复信息")
|
||||
|
||||
// ErrUnsupportedReply 不支持的回复类型
|
||||
var ErrUnsupportedReply = errors.New("不支持的回复消息")
|
||||
|
||||
// Reply 消息回复
|
||||
type Reply struct {
|
||||
MsgType MsgType
|
||||
MsgData interface{}
|
||||
}
|
||||
@@ -180,7 +180,7 @@ type MediaInfo struct {
|
||||
CreateTime int64 `json:"create_time"` // 上传时间,时间戳。
|
||||
ExpireTime int64 `json:"expire_time"` // 过期时间,时间戳。
|
||||
DramaID int64 `json:"drama_id"` // 所属剧目 id。
|
||||
FileSize string `json:"file_size"` // 媒资文件大小,单位:字节。
|
||||
FileSize int64 `json:"file_size"` // 媒资文件大小,单位:字节。
|
||||
Duration int64 `json:"duration"` // 播放时长,单位:秒。
|
||||
Name string `json:"name"` // 媒资文件名。
|
||||
Description string `json:"description"` // 描述。
|
||||
|
||||
@@ -27,7 +27,7 @@ import (
|
||||
)
|
||||
|
||||
// SingleFileUpload 单文件上传
|
||||
func (s *MiniDrama) SingleFileUpload(ctx context.Context, in *SingleFileUploadRequest) (out *SingleFileUploadResponse, err error) {
|
||||
func (s *MiniDrama) SingleFileUpload(ctx context.Context, in *SingleFileUploadRequest) (out SingleFileUploadResponse, err error) {
|
||||
var address string
|
||||
if address, err = s.requestAddress(ctx, singleFileUpload); err != nil {
|
||||
return
|
||||
@@ -76,12 +76,12 @@ func (s *MiniDrama) SingleFileUpload(ctx context.Context, in *SingleFileUploadRe
|
||||
return
|
||||
}
|
||||
// 使用通用方法返回错误
|
||||
err = util.DecodeWithError(response, out, "SingleFileUpload")
|
||||
err = util.DecodeWithError(response, &out, "SingleFileUpload")
|
||||
return
|
||||
}
|
||||
|
||||
// PullUpload 拉取上传
|
||||
func (s *MiniDrama) PullUpload(ctx context.Context, in *PullUploadRequest) (out *PullUploadResponse, err error) {
|
||||
func (s *MiniDrama) PullUpload(ctx context.Context, in *PullUploadRequest) (out PullUploadResponse, err error) {
|
||||
var address string
|
||||
if address, err = s.requestAddress(ctx, pullUpload); err != nil {
|
||||
return
|
||||
@@ -92,12 +92,12 @@ func (s *MiniDrama) PullUpload(ctx context.Context, in *PullUploadRequest) (out
|
||||
}
|
||||
|
||||
// 使用通用方法返回错误
|
||||
err = util.DecodeWithError(response, out, "PullUpload")
|
||||
err = util.DecodeWithError(response, &out, "PullUpload")
|
||||
return
|
||||
}
|
||||
|
||||
// GetTask 查询任务状态
|
||||
func (s *MiniDrama) GetTask(ctx context.Context, in *GetTaskRequest) (out *GetTaskResponse, err error) {
|
||||
func (s *MiniDrama) GetTask(ctx context.Context, in *GetTaskRequest) (out GetTaskResponse, err error) {
|
||||
var address string
|
||||
if address, err = s.requestAddress(ctx, getTask); err != nil {
|
||||
return
|
||||
@@ -109,12 +109,12 @@ func (s *MiniDrama) GetTask(ctx context.Context, in *GetTaskRequest) (out *GetTa
|
||||
}
|
||||
|
||||
// 使用通用方法返回错误
|
||||
err = util.DecodeWithError(response, out, "GetTask")
|
||||
err = util.DecodeWithError(response, &out, "GetTask")
|
||||
return
|
||||
}
|
||||
|
||||
// ApplyUpload 申请分片上传
|
||||
func (s *MiniDrama) ApplyUpload(ctx context.Context, in *ApplyUploadRequest) (out *ApplyUploadResponse, err error) {
|
||||
func (s *MiniDrama) ApplyUpload(ctx context.Context, in *ApplyUploadRequest) (out ApplyUploadResponse, err error) {
|
||||
var address string
|
||||
if address, err = s.requestAddress(ctx, applyUpload); err != nil {
|
||||
return
|
||||
@@ -126,13 +126,13 @@ func (s *MiniDrama) ApplyUpload(ctx context.Context, in *ApplyUploadRequest) (ou
|
||||
}
|
||||
|
||||
// 使用通用方法返回错误
|
||||
err = util.DecodeWithError(response, out, "ApplyUpload")
|
||||
err = util.DecodeWithError(response, &out, "ApplyUpload")
|
||||
return
|
||||
}
|
||||
|
||||
// UploadPart 上传分片
|
||||
// Content-Type 需要指定为 multipart/form-data; boundary=<delimiter>,<箭头括号>表示必须替换为有效值的变量。
|
||||
func (s *MiniDrama) UploadPart(ctx context.Context, in *UploadPartRequest) (out *UploadPartResponse, err error) {
|
||||
func (s *MiniDrama) UploadPart(ctx context.Context, in *UploadPartRequest) (out UploadPartResponse, err error) {
|
||||
var address string
|
||||
if address, err = s.requestAddress(ctx, uploadPart); err != nil {
|
||||
return
|
||||
@@ -165,12 +165,12 @@ func (s *MiniDrama) UploadPart(ctx context.Context, in *UploadPartRequest) (out
|
||||
}
|
||||
|
||||
// 使用通用方法返回错误
|
||||
err = util.DecodeWithError(response, out, "UploadPart")
|
||||
err = util.DecodeWithError(response, &out, "UploadPart")
|
||||
return
|
||||
}
|
||||
|
||||
// CommitUpload 确认上传
|
||||
func (s *MiniDrama) CommitUpload(ctx context.Context, in *CommitUploadRequest) (out *CommitUploadResponse, err error) {
|
||||
func (s *MiniDrama) CommitUpload(ctx context.Context, in *CommitUploadRequest) (out CommitUploadResponse, err error) {
|
||||
var address string
|
||||
if address, err = s.requestAddress(ctx, commitUpload); err != nil {
|
||||
return
|
||||
@@ -182,12 +182,12 @@ func (s *MiniDrama) CommitUpload(ctx context.Context, in *CommitUploadRequest) (
|
||||
}
|
||||
|
||||
// 使用通用方法返回错误
|
||||
err = util.DecodeWithError(response, out, "CommitUpload")
|
||||
err = util.DecodeWithError(response, &out, "CommitUpload")
|
||||
return
|
||||
}
|
||||
|
||||
// ListMedia 获取媒体列表
|
||||
func (s *MiniDrama) ListMedia(ctx context.Context, in *ListMediaRequest) (out *ListMediaResponse, err error) {
|
||||
func (s *MiniDrama) ListMedia(ctx context.Context, in *ListMediaRequest) (out ListMediaResponse, err error) {
|
||||
var address string
|
||||
if address, err = s.requestAddress(ctx, listMedia); err != nil {
|
||||
return
|
||||
@@ -199,12 +199,12 @@ func (s *MiniDrama) ListMedia(ctx context.Context, in *ListMediaRequest) (out *L
|
||||
}
|
||||
|
||||
// 使用通用方法返回错误
|
||||
err = util.DecodeWithError(response, out, "ListMedia")
|
||||
err = util.DecodeWithError(response, &out, "ListMedia")
|
||||
return
|
||||
}
|
||||
|
||||
// GetMedia 获取媒资详细信息
|
||||
func (s *MiniDrama) GetMedia(ctx context.Context, in *GetMediaRequest) (out *GetMediaResponse, err error) {
|
||||
func (s *MiniDrama) GetMedia(ctx context.Context, in *GetMediaRequest) (out GetMediaResponse, err error) {
|
||||
var address string
|
||||
if address, err = s.requestAddress(ctx, getMedia); err != nil {
|
||||
return
|
||||
@@ -216,12 +216,12 @@ func (s *MiniDrama) GetMedia(ctx context.Context, in *GetMediaRequest) (out *Get
|
||||
}
|
||||
|
||||
// 使用通用方法返回错误
|
||||
err = util.DecodeWithError(response, out, "GetMedia")
|
||||
err = util.DecodeWithError(response, &out, "GetMedia")
|
||||
return
|
||||
}
|
||||
|
||||
// GetMediaLink 获取媒资播放链接
|
||||
func (s *MiniDrama) GetMediaLink(ctx context.Context, in *GetMediaLinkRequest) (out *GetMediaLinkResponse, err error) {
|
||||
func (s *MiniDrama) GetMediaLink(ctx context.Context, in *GetMediaLinkRequest) (out GetMediaLinkResponse, err error) {
|
||||
var address string
|
||||
if address, err = s.requestAddress(ctx, getMediaLink); err != nil {
|
||||
return
|
||||
@@ -233,12 +233,12 @@ func (s *MiniDrama) GetMediaLink(ctx context.Context, in *GetMediaLinkRequest) (
|
||||
}
|
||||
|
||||
// 使用通用方法返回错误
|
||||
err = util.DecodeWithError(response, out, "GetMediaLink")
|
||||
err = util.DecodeWithError(response, &out, "GetMediaLink")
|
||||
return
|
||||
}
|
||||
|
||||
// DeleteMedia 删除媒体
|
||||
func (s *MiniDrama) DeleteMedia(ctx context.Context, in *DeleteMediaRequest) (out *DeleteMediaResponse, err error) {
|
||||
func (s *MiniDrama) DeleteMedia(ctx context.Context, in *DeleteMediaRequest) (out DeleteMediaResponse, err error) {
|
||||
var address string
|
||||
if address, err = s.requestAddress(ctx, deleteMedia); err != nil {
|
||||
return
|
||||
@@ -250,12 +250,12 @@ func (s *MiniDrama) DeleteMedia(ctx context.Context, in *DeleteMediaRequest) (ou
|
||||
}
|
||||
|
||||
// 使用通用方法返回错误
|
||||
err = util.DecodeWithError(response, out, "DeleteMedia")
|
||||
err = util.DecodeWithError(response, &out, "DeleteMedia")
|
||||
return
|
||||
}
|
||||
|
||||
// AuditDrama 审核剧本
|
||||
func (s *MiniDrama) AuditDrama(ctx context.Context, in *AuditDramaRequest) (out *AuditDramaResponse, err error) {
|
||||
func (s *MiniDrama) AuditDrama(ctx context.Context, in *AuditDramaRequest) (out AuditDramaResponse, err error) {
|
||||
var address string
|
||||
if address, err = s.requestAddress(ctx, auditDrama); err != nil {
|
||||
return
|
||||
@@ -267,12 +267,12 @@ func (s *MiniDrama) AuditDrama(ctx context.Context, in *AuditDramaRequest) (out
|
||||
}
|
||||
|
||||
// 使用通用方法返回错误
|
||||
err = util.DecodeWithError(response, out, "AuditDrama")
|
||||
err = util.DecodeWithError(response, &out, "AuditDrama")
|
||||
return
|
||||
}
|
||||
|
||||
// ListDramas 获取剧目列表
|
||||
func (s *MiniDrama) ListDramas(ctx context.Context, in *ListDramasRequest) (out *ListDramasResponse, err error) {
|
||||
func (s *MiniDrama) ListDramas(ctx context.Context, in *ListDramasRequest) (out ListDramasResponse, err error) {
|
||||
var address string
|
||||
if address, err = s.requestAddress(ctx, listDramas); err != nil {
|
||||
return
|
||||
@@ -284,12 +284,12 @@ func (s *MiniDrama) ListDramas(ctx context.Context, in *ListDramasRequest) (out
|
||||
}
|
||||
|
||||
// 使用通用方法返回错误
|
||||
err = util.DecodeWithError(response, out, "ListDramas")
|
||||
err = util.DecodeWithError(response, &out, "ListDramas")
|
||||
return
|
||||
}
|
||||
|
||||
// GetDrama 获取剧目信息
|
||||
func (s *MiniDrama) GetDrama(ctx context.Context, in *GetDramaRequest) (out *GetDramaResponse, err error) {
|
||||
func (s *MiniDrama) GetDrama(ctx context.Context, in *GetDramaRequest) (out GetDramaResponse, err error) {
|
||||
var address string
|
||||
if address, err = s.requestAddress(ctx, getDrama); err != nil {
|
||||
return
|
||||
@@ -300,12 +300,12 @@ func (s *MiniDrama) GetDrama(ctx context.Context, in *GetDramaRequest) (out *Get
|
||||
return
|
||||
}
|
||||
// 使用通用方法返回错误
|
||||
err = util.DecodeWithError(response, out, "GetDrama")
|
||||
err = util.DecodeWithError(response, &out, "GetDrama")
|
||||
return
|
||||
}
|
||||
|
||||
// GetCdnUsageData 查询 CDN 用量数据
|
||||
func (s *MiniDrama) GetCdnUsageData(ctx context.Context, in *GetCdnUsageDataRequest) (out *GetCdnUsageDataResponse, err error) {
|
||||
func (s *MiniDrama) GetCdnUsageData(ctx context.Context, in *GetCdnUsageDataRequest) (out GetCdnUsageDataResponse, err error) {
|
||||
var address string
|
||||
if address, err = s.requestAddress(ctx, getCdnUsageData); err != nil {
|
||||
return
|
||||
@@ -316,12 +316,12 @@ func (s *MiniDrama) GetCdnUsageData(ctx context.Context, in *GetCdnUsageDataRequ
|
||||
return
|
||||
}
|
||||
// 使用通用方法返回错误
|
||||
err = util.DecodeWithError(response, out, "GetCdnUsageData")
|
||||
err = util.DecodeWithError(response, &out, "GetCdnUsageData")
|
||||
return
|
||||
}
|
||||
|
||||
// GetCdnLogs 查询 CDN 日志
|
||||
func (s *MiniDrama) GetCdnLogs(ctx context.Context, in *GetCdnLogsRequest) (out *GetCdnLogsResponse, err error) {
|
||||
func (s *MiniDrama) GetCdnLogs(ctx context.Context, in *GetCdnLogsRequest) (out GetCdnLogsResponse, err error) {
|
||||
var address string
|
||||
if address, err = s.requestAddress(ctx, getCdnLogs); err != nil {
|
||||
return
|
||||
@@ -332,7 +332,7 @@ func (s *MiniDrama) GetCdnLogs(ctx context.Context, in *GetCdnLogsRequest) (out
|
||||
return
|
||||
}
|
||||
// 使用通用方法返回错误
|
||||
err = util.DecodeWithError(response, out, "GetCdnLogs")
|
||||
err = util.DecodeWithError(response, &out, "GetCdnLogs")
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
@@ -37,7 +37,7 @@ func (s *VirtualPayment) SetSessionKey(sessionKey string) {
|
||||
}
|
||||
|
||||
// QueryUserBalance 查询虚拟支付余额
|
||||
func (s *VirtualPayment) QueryUserBalance(ctx context.Context, in *QueryUserBalanceRequest) (out *QueryUserBalanceResponse, err error) {
|
||||
func (s *VirtualPayment) QueryUserBalance(ctx context.Context, in *QueryUserBalanceRequest) (out QueryUserBalanceResponse, err error) {
|
||||
var jsonByte []byte
|
||||
if jsonByte, err = json.Marshal(in); err != nil {
|
||||
return
|
||||
@@ -60,12 +60,12 @@ func (s *VirtualPayment) QueryUserBalance(ctx context.Context, in *QueryUserBala
|
||||
}
|
||||
|
||||
// 使用通用方法返回错误
|
||||
err = util.DecodeWithError(response, out, "QueryUserBalance")
|
||||
err = util.DecodeWithError(response, &out, "QueryUserBalance")
|
||||
return
|
||||
}
|
||||
|
||||
// CurrencyPay currency pay 扣减代币(一般用于代币支付)
|
||||
func (s *VirtualPayment) CurrencyPay(ctx context.Context, in *CurrencyPayRequest) (out *CurrencyPayResponse, err error) {
|
||||
func (s *VirtualPayment) CurrencyPay(ctx context.Context, in *CurrencyPayRequest) (out CurrencyPayResponse, err error) {
|
||||
var jsonByte []byte
|
||||
if jsonByte, err = json.Marshal(in); err != nil {
|
||||
return
|
||||
@@ -88,12 +88,12 @@ func (s *VirtualPayment) CurrencyPay(ctx context.Context, in *CurrencyPayRequest
|
||||
}
|
||||
|
||||
// 使用通用方法返回错误
|
||||
err = util.DecodeWithError(response, out, "CurrencyPay")
|
||||
err = util.DecodeWithError(response, &out, "CurrencyPay")
|
||||
return
|
||||
}
|
||||
|
||||
// QueryOrder 查询创建的订单(现金单,非代币单)
|
||||
func (s *VirtualPayment) QueryOrder(ctx context.Context, in *QueryOrderRequest) (out *QueryOrderResponse, err error) {
|
||||
func (s *VirtualPayment) QueryOrder(ctx context.Context, in *QueryOrderRequest) (out QueryOrderResponse, err error) {
|
||||
var jsonByte []byte
|
||||
if jsonByte, err = json.Marshal(in); err != nil {
|
||||
return
|
||||
@@ -116,12 +116,12 @@ func (s *VirtualPayment) QueryOrder(ctx context.Context, in *QueryOrderRequest)
|
||||
}
|
||||
|
||||
// 使用通用方法返回错误
|
||||
err = util.DecodeWithError(response, out, "QueryOrder")
|
||||
err = util.DecodeWithError(response, &out, "QueryOrder")
|
||||
return
|
||||
}
|
||||
|
||||
// CancelCurrencyPay 取消订单 代币支付退款 (currency_pay 接口的逆操作)
|
||||
func (s *VirtualPayment) CancelCurrencyPay(ctx context.Context, in *CancelCurrencyPayRequest) (out *CancelCurrencyPayResponse, err error) {
|
||||
func (s *VirtualPayment) CancelCurrencyPay(ctx context.Context, in *CancelCurrencyPayRequest) (out CancelCurrencyPayResponse, err error) {
|
||||
var jsonByte []byte
|
||||
if jsonByte, err = json.Marshal(in); err != nil {
|
||||
return
|
||||
@@ -144,13 +144,13 @@ func (s *VirtualPayment) CancelCurrencyPay(ctx context.Context, in *CancelCurren
|
||||
}
|
||||
|
||||
// 使用通用方法返回错误
|
||||
err = util.DecodeWithError(response, out, "CancelCurrencyPay")
|
||||
err = util.DecodeWithError(response, &out, "CancelCurrencyPay")
|
||||
return
|
||||
}
|
||||
|
||||
// NotifyProvideGoods 通知发货
|
||||
// 通知已经发货完成(只能通知现金单),正常通过 xpay_goods_deliver_notify 消息推送返回成功就不需要调用这个 api 接口。这个接口用于异常情况推送不成功时手动将单改成已发货状态
|
||||
func (s *VirtualPayment) NotifyProvideGoods(ctx context.Context, in *NotifyProvideGoodsRequest) (out *NotifyProvideGoodsResponse, err error) {
|
||||
func (s *VirtualPayment) NotifyProvideGoods(ctx context.Context, in *NotifyProvideGoodsRequest) (out NotifyProvideGoodsResponse, err error) {
|
||||
var jsonByte []byte
|
||||
if jsonByte, err = json.Marshal(in); err != nil {
|
||||
return
|
||||
@@ -174,12 +174,12 @@ func (s *VirtualPayment) NotifyProvideGoods(ctx context.Context, in *NotifyProvi
|
||||
}
|
||||
|
||||
// 使用通用方法返回错误
|
||||
err = util.DecodeWithError(response, out, "NotifyProvideGoods")
|
||||
err = util.DecodeWithError(response, &out, "NotifyProvideGoods")
|
||||
return
|
||||
}
|
||||
|
||||
// PresentCurrency 代币赠送接口,由于目前不支付按单号查赠送单的功能,所以当需要赠送的时候可以一直重试到返回 0 或者返回 268490004(重复操作)为止
|
||||
func (s *VirtualPayment) PresentCurrency(ctx context.Context, in *PresentCurrencyRequest) (out *PresentCurrencyResponse, err error) {
|
||||
func (s *VirtualPayment) PresentCurrency(ctx context.Context, in *PresentCurrencyRequest) (out PresentCurrencyResponse, err error) {
|
||||
var jsonByte []byte
|
||||
if jsonByte, err = json.Marshal(in); err != nil {
|
||||
return
|
||||
@@ -203,12 +203,12 @@ func (s *VirtualPayment) PresentCurrency(ctx context.Context, in *PresentCurrenc
|
||||
}
|
||||
|
||||
// 使用通用方法返回错误
|
||||
err = util.DecodeWithError(response, out, "PresentCurrency")
|
||||
err = util.DecodeWithError(response, &out, "PresentCurrency")
|
||||
return
|
||||
}
|
||||
|
||||
// DownloadBill 下载订单交易账单
|
||||
func (s *VirtualPayment) DownloadBill(ctx context.Context, in *DownloadBillRequest) (out *DownloadBillResponse, err error) {
|
||||
func (s *VirtualPayment) DownloadBill(ctx context.Context, in *DownloadBillRequest) (out DownloadBillResponse, err error) {
|
||||
var jsonByte []byte
|
||||
if jsonByte, err = json.Marshal(in); err != nil {
|
||||
return
|
||||
@@ -232,12 +232,12 @@ func (s *VirtualPayment) DownloadBill(ctx context.Context, in *DownloadBillReque
|
||||
}
|
||||
|
||||
// 使用通用方法返回错误
|
||||
err = util.DecodeWithError(response, out, "DownloadBill")
|
||||
err = util.DecodeWithError(response, &out, "DownloadBill")
|
||||
return
|
||||
}
|
||||
|
||||
// RefundOrder 退款 对使用 jsapi 接口下的单进行退款
|
||||
func (s *VirtualPayment) RefundOrder(ctx context.Context, in *RefundOrderRequest) (out *RefundOrderResponse, err error) {
|
||||
func (s *VirtualPayment) RefundOrder(ctx context.Context, in *RefundOrderRequest) (out RefundOrderResponse, err error) {
|
||||
var jsonByte []byte
|
||||
if jsonByte, err = json.Marshal(in); err != nil {
|
||||
return
|
||||
@@ -261,12 +261,12 @@ func (s *VirtualPayment) RefundOrder(ctx context.Context, in *RefundOrderRequest
|
||||
}
|
||||
|
||||
// 使用通用方法返回错误
|
||||
err = util.DecodeWithError(response, out, "RefundOrder")
|
||||
err = util.DecodeWithError(response, &out, "RefundOrder")
|
||||
return
|
||||
}
|
||||
|
||||
// CreateWithdrawOrder 创建提现单
|
||||
func (s *VirtualPayment) CreateWithdrawOrder(ctx context.Context, in *CreateWithdrawOrderRequest) (out *CreateWithdrawOrderResponse, err error) {
|
||||
func (s *VirtualPayment) CreateWithdrawOrder(ctx context.Context, in *CreateWithdrawOrderRequest) (out CreateWithdrawOrderResponse, err error) {
|
||||
var jsonByte []byte
|
||||
if jsonByte, err = json.Marshal(in); err != nil {
|
||||
return
|
||||
@@ -290,12 +290,12 @@ func (s *VirtualPayment) CreateWithdrawOrder(ctx context.Context, in *CreateWith
|
||||
}
|
||||
|
||||
// 使用通用方法返回错误
|
||||
err = util.DecodeWithError(response, out, "CreateWithdrawOrder")
|
||||
err = util.DecodeWithError(response, &out, "CreateWithdrawOrder")
|
||||
return
|
||||
}
|
||||
|
||||
// QueryWithdrawOrder 查询提现单
|
||||
func (s *VirtualPayment) QueryWithdrawOrder(ctx context.Context, in *QueryWithdrawOrderRequest) (out *QueryWithdrawOrderResponse, err error) {
|
||||
func (s *VirtualPayment) QueryWithdrawOrder(ctx context.Context, in *QueryWithdrawOrderRequest) (out QueryWithdrawOrderResponse, err error) {
|
||||
var jsonByte []byte
|
||||
if jsonByte, err = json.Marshal(in); err != nil {
|
||||
return
|
||||
@@ -319,12 +319,12 @@ func (s *VirtualPayment) QueryWithdrawOrder(ctx context.Context, in *QueryWithdr
|
||||
}
|
||||
|
||||
// 使用通用方法返回错误
|
||||
err = util.DecodeWithError(response, out, "QueryWithdrawOrder")
|
||||
err = util.DecodeWithError(response, &out, "QueryWithdrawOrder")
|
||||
return
|
||||
}
|
||||
|
||||
// StartUploadGoods 开始上传商品
|
||||
func (s *VirtualPayment) StartUploadGoods(ctx context.Context, in *StartUploadGoodsRequest) (out *StartUploadGoodsResponse, err error) {
|
||||
func (s *VirtualPayment) StartUploadGoods(ctx context.Context, in *StartUploadGoodsRequest) (out StartUploadGoodsResponse, err error) {
|
||||
var jsonByte []byte
|
||||
if jsonByte, err = json.Marshal(in); err != nil {
|
||||
return
|
||||
@@ -348,12 +348,12 @@ func (s *VirtualPayment) StartUploadGoods(ctx context.Context, in *StartUploadGo
|
||||
}
|
||||
|
||||
// 使用通用方法返回错误
|
||||
err = util.DecodeWithError(response, out, "StartUploadGoods")
|
||||
err = util.DecodeWithError(response, &out, "StartUploadGoods")
|
||||
return
|
||||
}
|
||||
|
||||
// QueryUploadGoods 查询上传商品
|
||||
func (s *VirtualPayment) QueryUploadGoods(ctx context.Context, in *QueryUploadGoodsRequest) (out *QueryUploadGoodsResponse, err error) {
|
||||
func (s *VirtualPayment) QueryUploadGoods(ctx context.Context, in *QueryUploadGoodsRequest) (out QueryUploadGoodsResponse, err error) {
|
||||
var jsonByte []byte
|
||||
if jsonByte, err = json.Marshal(in); err != nil {
|
||||
return
|
||||
@@ -377,12 +377,12 @@ func (s *VirtualPayment) QueryUploadGoods(ctx context.Context, in *QueryUploadGo
|
||||
}
|
||||
|
||||
// 使用通用方法返回错误
|
||||
err = util.DecodeWithError(response, out, "QueryUploadGoods")
|
||||
err = util.DecodeWithError(response, &out, "QueryUploadGoods")
|
||||
return
|
||||
}
|
||||
|
||||
// StartPublishGoods 开始发布商品
|
||||
func (s *VirtualPayment) StartPublishGoods(ctx context.Context, in *StartPublishGoodsRequest) (out *StartPublishGoodsResponse, err error) {
|
||||
func (s *VirtualPayment) StartPublishGoods(ctx context.Context, in *StartPublishGoodsRequest) (out StartPublishGoodsResponse, err error) {
|
||||
var jsonByte []byte
|
||||
if jsonByte, err = json.Marshal(in); err != nil {
|
||||
return
|
||||
@@ -406,12 +406,12 @@ func (s *VirtualPayment) StartPublishGoods(ctx context.Context, in *StartPublish
|
||||
}
|
||||
|
||||
// 使用通用方法返回错误
|
||||
err = util.DecodeWithError(response, out, "StartPublishGoods")
|
||||
err = util.DecodeWithError(response, &out, "StartPublishGoods")
|
||||
return
|
||||
}
|
||||
|
||||
// QueryPublishGoods 查询发布商品
|
||||
func (s *VirtualPayment) QueryPublishGoods(ctx context.Context, in *QueryPublishGoodsRequest) (out *QueryPublishGoodsResponse, err error) {
|
||||
func (s *VirtualPayment) QueryPublishGoods(ctx context.Context, in *QueryPublishGoodsRequest) (out QueryPublishGoodsResponse, err error) {
|
||||
var jsonByte []byte
|
||||
if jsonByte, err = json.Marshal(in); err != nil {
|
||||
return
|
||||
@@ -435,7 +435,7 @@ func (s *VirtualPayment) QueryPublishGoods(ctx context.Context, in *QueryPublish
|
||||
}
|
||||
|
||||
// 使用通用方法返回错误
|
||||
err = util.DecodeWithError(response, out, "QueryPublishGoods")
|
||||
err = util.DecodeWithError(response, &out, "QueryPublishGoods")
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user