// Copyright 2021 Tencent Inc. All rights reserved. // // 微信支付分账API // // 微信支付分账API // // API version: 0.0.3 // Code generated by WechatPay APIv3 Generator based on [OpenAPI Generator](https://openapi-generator.tech); DO NOT EDIT. package profitsharing import ( "encoding/json" "fmt" "time" ) // AddReceiverRequest type AddReceiverRequest struct { // 类型是MERCHANT_ID时,是商户号 类型是PERSONAL_OPENID时,是个人openid 类型是PERSONAL_SUB_OPENID时,是个人sub_openid Account *string `json:"account"` // 微信分配的公众账号ID Appid *string `json:"appid"` // 子商户与接收方具体的关系,本字段最多10个字。 当字段relation_type的值为CUSTOM时,本字段必填 当字段relation_type的值不为CUSTOM时,本字段无需填写 CustomRelation *string `json:"custom_relation,omitempty"` // 分账接收方类型是MERCHANT_ID时,是商户全称(必传),当商户是小微商户或个体户时,是开户人姓名 分账接收方类型是PERSONAL_OPENID时,是个人姓名(选传,传则校验) 分账接收方类型是PERSONAL_SUB_OPENID时,是个人姓名(选传,传则校验) 1、此字段需要加密,的加密方法详见:敏感信息加密说明 2、使用微信支付平台证书中的公钥 3、使用RSAES-OAEP算法进行加密 4、将请求中HTTP头部的Wechatpay-Serial设置为证书序列号 Name *string `json:"name,omitempty" encryption:"EM_APIV3"` // 子商户与接收方的关系。 本字段值为枚举: SERVICE_PROVIDER:服务商 STORE:门店 STAFF:员工 STORE_OWNER:店主 PARTNER:合作伙伴 HEADQUARTER:总部 BRAND:品牌方 DISTRIBUTOR:分销商 USER:用户 SUPPLIER:供应商 CUSTOM:自定义 * `SERVICE_PROVIDER` - 服务商, * `STORE` - 门店, * `STAFF` - 员工, * `STORE_OWNER` - 店主, * `PARTNER` - 合作伙伴, * `HEADQUARTER` - 总部, * `BRAND` - 品牌方, * `DISTRIBUTOR` - 分销商, * `USER` - 用户, * `SUPPLIER` - 供应商, * `CUSTOM` - 自定义, RelationType *ReceiverRelationType `json:"relation_type"` // 子商户的公众账号ID,分账接收方类型包含PERSONAL_SUB_OPENID时必填。(直连商户不需要,服务商需要) SubAppid *string `json:"sub_appid,omitempty"` // 微信支付分配的子商户号,即分账的出资商户号。(直连商户不需要,服务商需要) SubMchid *string `json:"sub_mchid,omitempty"` // 枚举值: MERCHANT_ID:商户ID PERSONAL_OPENID:个人openid(由父商户APPID转换得到) PERSONAL_SUB_OPENID:个人sub_openid(由子商户APPID转换得到) * `MERCHANT_ID` - 商户号, * `PERSONAL_OPENID` - 个人openid(由父商户APPID转换得到), * `PERSONAL_SUB_OPENID` - 个人sub_openid(由子商户APPID转换得到)(直连商户不需要,服务商需要), Type *ReceiverType `json:"type"` } func (o AddReceiverRequest) MarshalJSON() ([]byte, error) { toSerialize := map[string]interface{}{} if o.Account == nil { return nil, fmt.Errorf("field `Account` is required and must be specified in AddReceiverRequest") } toSerialize["account"] = o.Account if o.Appid == nil { return nil, fmt.Errorf("field `Appid` is required and must be specified in AddReceiverRequest") } toSerialize["appid"] = o.Appid if o.CustomRelation != nil { toSerialize["custom_relation"] = o.CustomRelation } if o.Name != nil { toSerialize["name"] = o.Name } if o.RelationType == nil { return nil, fmt.Errorf("field `RelationType` is required and must be specified in AddReceiverRequest") } toSerialize["relation_type"] = o.RelationType if o.SubAppid != nil { toSerialize["sub_appid"] = o.SubAppid } if o.SubMchid != nil { toSerialize["sub_mchid"] = o.SubMchid } if o.Type == nil { return nil, fmt.Errorf("field `Type` is required and must be specified in AddReceiverRequest") } toSerialize["type"] = o.Type return json.Marshal(toSerialize) } func (o AddReceiverRequest) String() string { var ret string if o.Account == nil { ret += "Account:, " } else { ret += fmt.Sprintf("Account:%v, ", *o.Account) } if o.Appid == nil { ret += "Appid:, " } else { ret += fmt.Sprintf("Appid:%v, ", *o.Appid) } if o.CustomRelation == nil { ret += "CustomRelation:, " } else { ret += fmt.Sprintf("CustomRelation:%v, ", *o.CustomRelation) } if o.Name == nil { ret += "Name:, " } else { ret += fmt.Sprintf("Name:%v, ", *o.Name) } if o.RelationType == nil { ret += "RelationType:, " } else { ret += fmt.Sprintf("RelationType:%v, ", *o.RelationType) } if o.SubAppid == nil { ret += "SubAppid:, " } else { ret += fmt.Sprintf("SubAppid:%v, ", *o.SubAppid) } if o.SubMchid == nil { ret += "SubMchid:, " } else { ret += fmt.Sprintf("SubMchid:%v, ", *o.SubMchid) } if o.Type == nil { ret += "Type:" } else { ret += fmt.Sprintf("Type:%v", *o.Type) } return fmt.Sprintf("AddReceiverRequest{%s}", ret) } func (o AddReceiverRequest) Clone() *AddReceiverRequest { ret := AddReceiverRequest{} if o.Account != nil { ret.Account = new(string) *ret.Account = *o.Account } if o.Appid != nil { ret.Appid = new(string) *ret.Appid = *o.Appid } if o.CustomRelation != nil { ret.CustomRelation = new(string) *ret.CustomRelation = *o.CustomRelation } if o.Name != nil { ret.Name = new(string) *ret.Name = *o.Name } if o.RelationType != nil { ret.RelationType = new(ReceiverRelationType) *ret.RelationType = *o.RelationType } if o.SubAppid != nil { ret.SubAppid = new(string) *ret.SubAppid = *o.SubAppid } if o.SubMchid != nil { ret.SubMchid = new(string) *ret.SubMchid = *o.SubMchid } if o.Type != nil { ret.Type = new(ReceiverType) *ret.Type = *o.Type } return &ret } // AddReceiverResponse type AddReceiverResponse struct { // 参考请求参数 Account *string `json:"account"` // 参考请求参数 CustomRelation *string `json:"custom_relation,omitempty"` // 参考请求参数。使用APIv3敏感信息加密方式 Name *string `json:"name,omitempty" encryption:"EM_APIV3"` // 参考请求参数 * `SERVICE_PROVIDER` - 服务商, * `STORE` - 门店, * `STAFF` - 员工, * `STORE_OWNER` - 店主, * `PARTNER` - 合作伙伴, * `HEADQUARTER` - 总部, * `BRAND` - 品牌方, * `DISTRIBUTOR` - 分销商, * `USER` - 用户, * `SUPPLIER` - 供应商, * `CUSTOM` - 自定义, RelationType *ReceiverRelationType `json:"relation_type"` // 参考请求参数 SubMchid *string `json:"sub_mchid,omitempty"` // 参考请求参数 * `MERCHANT_ID` - 商户号, * `PERSONAL_OPENID` - 个人openid(由父商户APPID转换得到), * `PERSONAL_SUB_OPENID` - 个人sub_openid(由子商户APPID转换得到)(直连商户不需要,服务商需要), Type *ReceiverType `json:"type"` } func (o AddReceiverResponse) MarshalJSON() ([]byte, error) { toSerialize := map[string]interface{}{} if o.Account == nil { return nil, fmt.Errorf("field `Account` is required and must be specified in AddReceiverResponse") } toSerialize["account"] = o.Account if o.CustomRelation != nil { toSerialize["custom_relation"] = o.CustomRelation } if o.Name != nil { toSerialize["name"] = o.Name } if o.RelationType == nil { return nil, fmt.Errorf("field `RelationType` is required and must be specified in AddReceiverResponse") } toSerialize["relation_type"] = o.RelationType if o.SubMchid != nil { toSerialize["sub_mchid"] = o.SubMchid } if o.Type == nil { return nil, fmt.Errorf("field `Type` is required and must be specified in AddReceiverResponse") } toSerialize["type"] = o.Type return json.Marshal(toSerialize) } func (o AddReceiverResponse) String() string { var ret string if o.Account == nil { ret += "Account:, " } else { ret += fmt.Sprintf("Account:%v, ", *o.Account) } if o.CustomRelation == nil { ret += "CustomRelation:, " } else { ret += fmt.Sprintf("CustomRelation:%v, ", *o.CustomRelation) } if o.Name == nil { ret += "Name:, " } else { ret += fmt.Sprintf("Name:%v, ", *o.Name) } if o.RelationType == nil { ret += "RelationType:, " } else { ret += fmt.Sprintf("RelationType:%v, ", *o.RelationType) } if o.SubMchid == nil { ret += "SubMchid:, " } else { ret += fmt.Sprintf("SubMchid:%v, ", *o.SubMchid) } if o.Type == nil { ret += "Type:" } else { ret += fmt.Sprintf("Type:%v", *o.Type) } return fmt.Sprintf("AddReceiverResponse{%s}", ret) } func (o AddReceiverResponse) Clone() *AddReceiverResponse { ret := AddReceiverResponse{} if o.Account != nil { ret.Account = new(string) *ret.Account = *o.Account } if o.CustomRelation != nil { ret.CustomRelation = new(string) *ret.CustomRelation = *o.CustomRelation } if o.Name != nil { ret.Name = new(string) *ret.Name = *o.Name } if o.RelationType != nil { ret.RelationType = new(ReceiverRelationType) *ret.RelationType = *o.RelationType } if o.SubMchid != nil { ret.SubMchid = new(string) *ret.SubMchid = *o.SubMchid } if o.Type != nil { ret.Type = new(ReceiverType) *ret.Type = *o.Type } return &ret } // CreateOrderReceiver type CreateOrderReceiver struct { // 1、类型是MERCHANT_ID时,是商户号 2、类型是PERSONAL_OPENID时,是个人openid 3、类型是PERSONAL_SUB_OPENID时,是个人sub_openid Account *string `json:"account"` // 分账金额,单位为分,只能为整数,不能超过原订单支付金额及最大分账比例金额 Amount *int64 `json:"amount"` // 分账的原因描述,分账账单中需要体现 Description *string `json:"description"` // 可选项,在接收方类型为个人的时可选填,若有值,会检查与 name 是否实名匹配,不匹配会拒绝分账请求 1、分账接收方类型是PERSONAL_OPENID或PERSONAL_SUB_OPENID时,是个人姓名的密文(选传,传则校验) 此字段的加密的方式为:敏感信息加密说明 2、使用微信支付平台证书中的公钥 3、使用RSAES-OAEP算法进行加密 4、将请求中HTTP头部的Wechatpay-Serial设置为证书序列号 Name *string `json:"name,omitempty" encryption:"EM_APIV3"` // 1、MERCHANT_ID:商户号 2、PERSONAL_OPENID:个人openid(由父商户APPID转换得到) 3、PERSONAL_SUB_OPENID: 个人sub_openid(由子商户APPID转换得到) Type *string `json:"type"` } func (o CreateOrderReceiver) MarshalJSON() ([]byte, error) { toSerialize := map[string]interface{}{} if o.Account == nil { return nil, fmt.Errorf("field `Account` is required and must be specified in CreateOrderReceiver") } toSerialize["account"] = o.Account if o.Amount == nil { return nil, fmt.Errorf("field `Amount` is required and must be specified in CreateOrderReceiver") } toSerialize["amount"] = o.Amount if o.Description == nil { return nil, fmt.Errorf("field `Description` is required and must be specified in CreateOrderReceiver") } toSerialize["description"] = o.Description if o.Name != nil { toSerialize["name"] = o.Name } if o.Type == nil { return nil, fmt.Errorf("field `Type` is required and must be specified in CreateOrderReceiver") } toSerialize["type"] = o.Type return json.Marshal(toSerialize) } func (o CreateOrderReceiver) String() string { var ret string if o.Account == nil { ret += "Account:, " } else { ret += fmt.Sprintf("Account:%v, ", *o.Account) } if o.Amount == nil { ret += "Amount:, " } else { ret += fmt.Sprintf("Amount:%v, ", *o.Amount) } if o.Description == nil { ret += "Description:, " } else { ret += fmt.Sprintf("Description:%v, ", *o.Description) } if o.Name == nil { ret += "Name:, " } else { ret += fmt.Sprintf("Name:%v, ", *o.Name) } if o.Type == nil { ret += "Type:" } else { ret += fmt.Sprintf("Type:%v", *o.Type) } return fmt.Sprintf("CreateOrderReceiver{%s}", ret) } func (o CreateOrderReceiver) Clone() *CreateOrderReceiver { ret := CreateOrderReceiver{} if o.Account != nil { ret.Account = new(string) *ret.Account = *o.Account } if o.Amount != nil { ret.Amount = new(int64) *ret.Amount = *o.Amount } if o.Description != nil { ret.Description = new(string) *ret.Description = *o.Description } if o.Name != nil { ret.Name = new(string) *ret.Name = *o.Name } if o.Type != nil { ret.Type = new(string) *ret.Type = *o.Type } return &ret } // CreateOrderRequest type CreateOrderRequest struct { // 微信分配的服务商appid Appid *string `json:"appid"` // 服务商系统内部的分账单号,在服务商系统内部唯一,同一分账单号多次请求等同一次。只能是数字、大小写字母_-|*@ OutOrderNo *string `json:"out_order_no"` // 分账接收方列表,可以设置出资商户作为分账接受方,最多可有50个分账接收方 Receivers []CreateOrderReceiver `json:"receivers,omitempty"` // 微信分配的子商户公众账号ID,分账接收方类型包含PERSONAL_SUB_OPENID时必填。(直连商户不需要,服务商需要) SubAppid *string `json:"sub_appid,omitempty"` // 微信支付分配的子商户号,即分账的出资商户号。(直连商户不需要,服务商需要) SubMchid *string `json:"sub_mchid,omitempty"` // 微信支付订单号 TransactionId *string `json:"transaction_id"` // 1、如果为true,该笔订单剩余未分账的金额会解冻回分账方商户; 2、如果为false,该笔订单剩余未分账的金额不会解冻回分账方商户,可以对该笔订单再次进行分账。 UnfreezeUnsplit *bool `json:"unfreeze_unsplit"` } func (o CreateOrderRequest) MarshalJSON() ([]byte, error) { toSerialize := map[string]interface{}{} if o.Appid == nil { return nil, fmt.Errorf("field `Appid` is required and must be specified in CreateOrderRequest") } toSerialize["appid"] = o.Appid if o.OutOrderNo == nil { return nil, fmt.Errorf("field `OutOrderNo` is required and must be specified in CreateOrderRequest") } toSerialize["out_order_no"] = o.OutOrderNo if o.Receivers != nil { toSerialize["receivers"] = o.Receivers } if o.SubAppid != nil { toSerialize["sub_appid"] = o.SubAppid } if o.SubMchid != nil { toSerialize["sub_mchid"] = o.SubMchid } if o.TransactionId == nil { return nil, fmt.Errorf("field `TransactionId` is required and must be specified in CreateOrderRequest") } toSerialize["transaction_id"] = o.TransactionId if o.UnfreezeUnsplit == nil { return nil, fmt.Errorf("field `UnfreezeUnsplit` is required and must be specified in CreateOrderRequest") } toSerialize["unfreeze_unsplit"] = o.UnfreezeUnsplit return json.Marshal(toSerialize) } func (o CreateOrderRequest) String() string { var ret string if o.Appid == nil { ret += "Appid:, " } else { ret += fmt.Sprintf("Appid:%v, ", *o.Appid) } if o.OutOrderNo == nil { ret += "OutOrderNo:, " } else { ret += fmt.Sprintf("OutOrderNo:%v, ", *o.OutOrderNo) } ret += fmt.Sprintf("Receivers:%v, ", o.Receivers) if o.SubAppid == nil { ret += "SubAppid:, " } else { ret += fmt.Sprintf("SubAppid:%v, ", *o.SubAppid) } if o.SubMchid == nil { ret += "SubMchid:, " } else { ret += fmt.Sprintf("SubMchid:%v, ", *o.SubMchid) } if o.TransactionId == nil { ret += "TransactionId:, " } else { ret += fmt.Sprintf("TransactionId:%v, ", *o.TransactionId) } if o.UnfreezeUnsplit == nil { ret += "UnfreezeUnsplit:" } else { ret += fmt.Sprintf("UnfreezeUnsplit:%v", *o.UnfreezeUnsplit) } return fmt.Sprintf("CreateOrderRequest{%s}", ret) } func (o CreateOrderRequest) Clone() *CreateOrderRequest { ret := CreateOrderRequest{} if o.Appid != nil { ret.Appid = new(string) *ret.Appid = *o.Appid } if o.OutOrderNo != nil { ret.OutOrderNo = new(string) *ret.OutOrderNo = *o.OutOrderNo } if o.Receivers != nil { ret.Receivers = make([]CreateOrderReceiver, len(o.Receivers)) for i, item := range o.Receivers { ret.Receivers[i] = *item.Clone() } } if o.SubAppid != nil { ret.SubAppid = new(string) *ret.SubAppid = *o.SubAppid } if o.SubMchid != nil { ret.SubMchid = new(string) *ret.SubMchid = *o.SubMchid } if o.TransactionId != nil { ret.TransactionId = new(string) *ret.TransactionId = *o.TransactionId } if o.UnfreezeUnsplit != nil { ret.UnfreezeUnsplit = new(bool) *ret.UnfreezeUnsplit = *o.UnfreezeUnsplit } return &ret } // CreateReturnOrderRequest type CreateReturnOrderRequest struct { // 需要从分账接收方回退的金额,单位为分,只能为整数,不能超过原始分账单分出给该接收方的金额 Amount *int64 `json:"amount"` // 分账回退的原因描述 Description *string `json:"description"` // 微信分账单号,微信系统返回的唯一标识。微信分账单号和商户分账单号二选一填写 OrderId *string `json:"order_id,omitempty"` // 商户系统内部的分账单号,在商户系统内部唯一,同一分账单号多次请求等同一次。微信分账单号和商户分账单号二选一填写 取值范围:[0-9a-zA-Z_*@-] OutOrderNo *string `json:"out_order_no,omitempty"` // 此回退单号是商户在自己后台生成的一个新的回退单号,在商户后台唯一 OutReturnNo *string `json:"out_return_no"` // 分账回退的出资商户,只能对原分账请求中成功分给商户接收方进行回退 ReturnMchid *string `json:"return_mchid"` // 分账回退的接收商户,对应原分账出资的分账方商户,填写微信支付分配的商户号。(直连商户不需要,服务商需要) SubMchid *string `json:"sub_mchid,omitempty"` } func (o CreateReturnOrderRequest) MarshalJSON() ([]byte, error) { toSerialize := map[string]interface{}{} if o.Amount == nil { return nil, fmt.Errorf("field `Amount` is required and must be specified in CreateReturnOrderRequest") } toSerialize["amount"] = o.Amount if o.Description == nil { return nil, fmt.Errorf("field `Description` is required and must be specified in CreateReturnOrderRequest") } toSerialize["description"] = o.Description if o.OrderId != nil { toSerialize["order_id"] = o.OrderId } if o.OutOrderNo != nil { toSerialize["out_order_no"] = o.OutOrderNo } if o.OutReturnNo == nil { return nil, fmt.Errorf("field `OutReturnNo` is required and must be specified in CreateReturnOrderRequest") } toSerialize["out_return_no"] = o.OutReturnNo if o.ReturnMchid == nil { return nil, fmt.Errorf("field `ReturnMchid` is required and must be specified in CreateReturnOrderRequest") } toSerialize["return_mchid"] = o.ReturnMchid if o.SubMchid != nil { toSerialize["sub_mchid"] = o.SubMchid } return json.Marshal(toSerialize) } func (o CreateReturnOrderRequest) String() string { var ret string if o.Amount == nil { ret += "Amount:, " } else { ret += fmt.Sprintf("Amount:%v, ", *o.Amount) } if o.Description == nil { ret += "Description:, " } else { ret += fmt.Sprintf("Description:%v, ", *o.Description) } if o.OrderId == nil { ret += "OrderId:, " } else { ret += fmt.Sprintf("OrderId:%v, ", *o.OrderId) } if o.OutOrderNo == nil { ret += "OutOrderNo:, " } else { ret += fmt.Sprintf("OutOrderNo:%v, ", *o.OutOrderNo) } if o.OutReturnNo == nil { ret += "OutReturnNo:, " } else { ret += fmt.Sprintf("OutReturnNo:%v, ", *o.OutReturnNo) } if o.ReturnMchid == nil { ret += "ReturnMchid:, " } else { ret += fmt.Sprintf("ReturnMchid:%v, ", *o.ReturnMchid) } if o.SubMchid == nil { ret += "SubMchid:" } else { ret += fmt.Sprintf("SubMchid:%v", *o.SubMchid) } return fmt.Sprintf("CreateReturnOrderRequest{%s}", ret) } func (o CreateReturnOrderRequest) Clone() *CreateReturnOrderRequest { ret := CreateReturnOrderRequest{} if o.Amount != nil { ret.Amount = new(int64) *ret.Amount = *o.Amount } if o.Description != nil { ret.Description = new(string) *ret.Description = *o.Description } if o.OrderId != nil { ret.OrderId = new(string) *ret.OrderId = *o.OrderId } if o.OutOrderNo != nil { ret.OutOrderNo = new(string) *ret.OutOrderNo = *o.OutOrderNo } if o.OutReturnNo != nil { ret.OutReturnNo = new(string) *ret.OutReturnNo = *o.OutReturnNo } if o.ReturnMchid != nil { ret.ReturnMchid = new(string) *ret.ReturnMchid = *o.ReturnMchid } if o.SubMchid != nil { ret.SubMchid = new(string) *ret.SubMchid = *o.SubMchid } return &ret } // DeleteReceiverRequest type DeleteReceiverRequest struct { // 类型是MERCHANT_ID时,是商户号 类型是PERSONAL_OPENID时,是个人openid 类型是PERSONAL_SUB_OPENID时,是个人sub_openid Account *string `json:"account"` // 微信分配的公众账号ID Appid *string `json:"appid"` // 微信分配的子商户公众账号ID,分账接收方类型包含PERSONAL_SUB_OPENID时必填。(直连商户不需要,服务商需要) SubAppid *string `json:"sub_appid,omitempty"` // 微信支付分配的子商户号,即分账的出资商户号。(直连商户不需要,服务商需要) SubMchid *string `json:"sub_mchid,omitempty"` // 枚举值: MERCHANT_ID:商户ID PERSONAL_OPENID:个人openid(由父商户APPID转换得到) PERSONAL_SUB_OPENID:个人sub_openid(由子商户APPID转换得到) * `MERCHANT_ID` - 商户号, * `PERSONAL_OPENID` - 个人openid(由父商户APPID转换得到), * `PERSONAL_SUB_OPENID` - 个人sub_openid(由子商户APPID转换得到)(直连商户不需要,服务商需要), Type *ReceiverType `json:"type"` } func (o DeleteReceiverRequest) MarshalJSON() ([]byte, error) { toSerialize := map[string]interface{}{} if o.Account == nil { return nil, fmt.Errorf("field `Account` is required and must be specified in DeleteReceiverRequest") } toSerialize["account"] = o.Account if o.Appid == nil { return nil, fmt.Errorf("field `Appid` is required and must be specified in DeleteReceiverRequest") } toSerialize["appid"] = o.Appid if o.SubAppid != nil { toSerialize["sub_appid"] = o.SubAppid } if o.SubMchid != nil { toSerialize["sub_mchid"] = o.SubMchid } if o.Type == nil { return nil, fmt.Errorf("field `Type` is required and must be specified in DeleteReceiverRequest") } toSerialize["type"] = o.Type return json.Marshal(toSerialize) } func (o DeleteReceiverRequest) String() string { var ret string if o.Account == nil { ret += "Account:, " } else { ret += fmt.Sprintf("Account:%v, ", *o.Account) } if o.Appid == nil { ret += "Appid:, " } else { ret += fmt.Sprintf("Appid:%v, ", *o.Appid) } if o.SubAppid == nil { ret += "SubAppid:, " } else { ret += fmt.Sprintf("SubAppid:%v, ", *o.SubAppid) } if o.SubMchid == nil { ret += "SubMchid:, " } else { ret += fmt.Sprintf("SubMchid:%v, ", *o.SubMchid) } if o.Type == nil { ret += "Type:" } else { ret += fmt.Sprintf("Type:%v", *o.Type) } return fmt.Sprintf("DeleteReceiverRequest{%s}", ret) } func (o DeleteReceiverRequest) Clone() *DeleteReceiverRequest { ret := DeleteReceiverRequest{} if o.Account != nil { ret.Account = new(string) *ret.Account = *o.Account } if o.Appid != nil { ret.Appid = new(string) *ret.Appid = *o.Appid } if o.SubAppid != nil { ret.SubAppid = new(string) *ret.SubAppid = *o.SubAppid } if o.SubMchid != nil { ret.SubMchid = new(string) *ret.SubMchid = *o.SubMchid } if o.Type != nil { ret.Type = new(ReceiverType) *ret.Type = *o.Type } return &ret } // DeleteReceiverResponse type DeleteReceiverResponse struct { // 参考请求参数 Account *string `json:"account"` // 参考请求参数 SubMchid *string `json:"sub_mchid,omitempty"` // 参考请求参数 * `MERCHANT_ID` - 商户号, * `PERSONAL_OPENID` - 个人openid(由父商户APPID转换得到), * `PERSONAL_SUB_OPENID` - 个人sub_openid(由子商户APPID转换得到)(直连商户不需要,服务商需要), Type *ReceiverType `json:"type"` } func (o DeleteReceiverResponse) MarshalJSON() ([]byte, error) { toSerialize := map[string]interface{}{} if o.Account == nil { return nil, fmt.Errorf("field `Account` is required and must be specified in DeleteReceiverResponse") } toSerialize["account"] = o.Account if o.SubMchid != nil { toSerialize["sub_mchid"] = o.SubMchid } if o.Type == nil { return nil, fmt.Errorf("field `Type` is required and must be specified in DeleteReceiverResponse") } toSerialize["type"] = o.Type return json.Marshal(toSerialize) } func (o DeleteReceiverResponse) String() string { var ret string if o.Account == nil { ret += "Account:, " } else { ret += fmt.Sprintf("Account:%v, ", *o.Account) } if o.SubMchid == nil { ret += "SubMchid:, " } else { ret += fmt.Sprintf("SubMchid:%v, ", *o.SubMchid) } if o.Type == nil { ret += "Type:" } else { ret += fmt.Sprintf("Type:%v", *o.Type) } return fmt.Sprintf("DeleteReceiverResponse{%s}", ret) } func (o DeleteReceiverResponse) Clone() *DeleteReceiverResponse { ret := DeleteReceiverResponse{} if o.Account != nil { ret.Account = new(string) *ret.Account = *o.Account } if o.SubMchid != nil { ret.SubMchid = new(string) *ret.SubMchid = *o.SubMchid } if o.Type != nil { ret.Type = new(ReceiverType) *ret.Type = *o.Type } return &ret } // DetailFailReason * `ACCOUNT_ABNORMAL` - 分账接收账户异常, * `NO_RELATION` - 分账关系已解除, * `RECEIVER_HIGH_RISK` - 高风险接收方, * `RECEIVER_REAL_NAME_NOT_VERIFIED` - 接收方未实名, * `NO_AUTH` - 分账权限已解除, type DetailFailReason string func (e DetailFailReason) Ptr() *DetailFailReason { return &e } // Enums of DetailFailReason const ( DETAILFAILREASON_ACCOUNT_ABNORMAL DetailFailReason = "ACCOUNT_ABNORMAL" DETAILFAILREASON_NO_RELATION DetailFailReason = "NO_RELATION" DETAILFAILREASON_RECEIVER_HIGH_RISK DetailFailReason = "RECEIVER_HIGH_RISK" DETAILFAILREASON_RECEIVER_REAL_NAME_NOT_VERIFIED DetailFailReason = "RECEIVER_REAL_NAME_NOT_VERIFIED" DETAILFAILREASON_NO_AUTH DetailFailReason = "NO_AUTH" ) // DetailStatus * `PENDING` - 待分账, * `SUCCESS` - 分账成功, * `CLOSED` - 已关闭, type DetailStatus string func (e DetailStatus) Ptr() *DetailStatus { return &e } // Enums of DetailStatus const ( DETAILSTATUS_PENDING DetailStatus = "PENDING" DETAILSTATUS_SUCCESS DetailStatus = "SUCCESS" DETAILSTATUS_CLOSED DetailStatus = "CLOSED" ) // OrderReceiverDetail type OrderReceiverDetail struct { // 1、类型是MERCHANT_ID时,是商户号 2、类型是PERSONAL_OPENID时,是个人openid 3、类型是PERSONAL_SUB_OPENID时,是个人sub_openid Account *string `json:"account"` // 分账金额,单位为分,只能为整数,不能超过原订单支付金额及最大分账比例金额 Amount *int64 `json:"amount"` // 分账创建时间,遵循RFC3339标准格式 CreateTime *time.Time `json:"create_time"` // 分账的原因描述,分账账单中需要体现 Description *string `json:"description"` // 微信分账明细单号,每笔分账业务执行的明细单号,可与资金账单对账使用 DetailId *string `json:"detail_id"` // 分账失败原因。包含以下枚举值: 1、ACCOUNT_ABNORMAL : 分账接收账户异常 2、NO_RELATION : 分账关系已解除 3、RECEIVER_HIGH_RISK : 高风险接收方 4、RECEIVER_REAL_NAME_NOT_VERIFIED : 接收方未实名 5、NO_AUTH : 分账权限已解除 * `ACCOUNT_ABNORMAL` - 分账接收账户异常, * `NO_RELATION` - 分账关系已解除, * `RECEIVER_HIGH_RISK` - 高风险接收方, * `RECEIVER_REAL_NAME_NOT_VERIFIED` - 接收方未实名, * `NO_AUTH` - 分账权限已解除, FailReason *DetailFailReason `json:"fail_reason,omitempty"` // 分账完成时间,遵循RFC3339标准格式 FinishTime *time.Time `json:"finish_time"` // 枚举值: 1、PENDING:待分账 2、SUCCESS:分账成功 3、CLOSED:已关闭 * `PENDING` - 待分账, * `SUCCESS` - 分账成功, * `CLOSED` - 已关闭, Result *DetailStatus `json:"result"` // 1、MERCHANT_ID:商户号 2、PERSONAL_OPENID:个人openid(由父商户APPID转换得到) 3、PERSONAL_SUB_OPENID: 个人sub_openid(由子商户APPID转换得到) * `MERCHANT_ID` - 商户号, * `PERSONAL_OPENID` - 个人openid(由父商户APPID转换得到), * `PERSONAL_SUB_OPENID` - 个人sub_openid(由子商户APPID转换得到)(直连商户不需要,服务商需要), Type *ReceiverType `json:"type"` } func (o OrderReceiverDetail) MarshalJSON() ([]byte, error) { toSerialize := map[string]interface{}{} if o.Account == nil { return nil, fmt.Errorf("field `Account` is required and must be specified in OrderReceiverDetail") } toSerialize["account"] = o.Account if o.Amount == nil { return nil, fmt.Errorf("field `Amount` is required and must be specified in OrderReceiverDetail") } toSerialize["amount"] = o.Amount if o.CreateTime == nil { return nil, fmt.Errorf("field `CreateTime` is required and must be specified in OrderReceiverDetail") } toSerialize["create_time"] = o.CreateTime.Format(time.RFC3339) if o.Description == nil { return nil, fmt.Errorf("field `Description` is required and must be specified in OrderReceiverDetail") } toSerialize["description"] = o.Description if o.DetailId == nil { return nil, fmt.Errorf("field `DetailId` is required and must be specified in OrderReceiverDetail") } toSerialize["detail_id"] = o.DetailId if o.FailReason != nil { toSerialize["fail_reason"] = o.FailReason } if o.FinishTime == nil { return nil, fmt.Errorf("field `FinishTime` is required and must be specified in OrderReceiverDetail") } toSerialize["finish_time"] = o.FinishTime.Format(time.RFC3339) if o.Result == nil { return nil, fmt.Errorf("field `Result` is required and must be specified in OrderReceiverDetail") } toSerialize["result"] = o.Result if o.Type == nil { return nil, fmt.Errorf("field `Type` is required and must be specified in OrderReceiverDetail") } toSerialize["type"] = o.Type return json.Marshal(toSerialize) } func (o OrderReceiverDetail) String() string { var ret string if o.Account == nil { ret += "Account:, " } else { ret += fmt.Sprintf("Account:%v, ", *o.Account) } if o.Amount == nil { ret += "Amount:, " } else { ret += fmt.Sprintf("Amount:%v, ", *o.Amount) } if o.CreateTime == nil { ret += "CreateTime:, " } else { ret += fmt.Sprintf("CreateTime:%v, ", *o.CreateTime) } if o.Description == nil { ret += "Description:, " } else { ret += fmt.Sprintf("Description:%v, ", *o.Description) } if o.DetailId == nil { ret += "DetailId:, " } else { ret += fmt.Sprintf("DetailId:%v, ", *o.DetailId) } if o.FailReason == nil { ret += "FailReason:, " } else { ret += fmt.Sprintf("FailReason:%v, ", *o.FailReason) } if o.FinishTime == nil { ret += "FinishTime:, " } else { ret += fmt.Sprintf("FinishTime:%v, ", *o.FinishTime) } if o.Result == nil { ret += "Result:, " } else { ret += fmt.Sprintf("Result:%v, ", *o.Result) } if o.Type == nil { ret += "Type:" } else { ret += fmt.Sprintf("Type:%v", *o.Type) } return fmt.Sprintf("OrderReceiverDetail{%s}", ret) } func (o OrderReceiverDetail) Clone() *OrderReceiverDetail { ret := OrderReceiverDetail{} if o.Account != nil { ret.Account = new(string) *ret.Account = *o.Account } if o.Amount != nil { ret.Amount = new(int64) *ret.Amount = *o.Amount } if o.CreateTime != nil { ret.CreateTime = new(time.Time) *ret.CreateTime = *o.CreateTime } if o.Description != nil { ret.Description = new(string) *ret.Description = *o.Description } if o.DetailId != nil { ret.DetailId = new(string) *ret.DetailId = *o.DetailId } if o.FailReason != nil { ret.FailReason = new(DetailFailReason) *ret.FailReason = *o.FailReason } if o.FinishTime != nil { ret.FinishTime = new(time.Time) *ret.FinishTime = *o.FinishTime } if o.Result != nil { ret.Result = new(DetailStatus) *ret.Result = *o.Result } if o.Type != nil { ret.Type = new(ReceiverType) *ret.Type = *o.Type } return &ret } // OrderStatus * `PROCESSING` - 处理中, * `FINISHED` - 分账完成, type OrderStatus string func (e OrderStatus) Ptr() *OrderStatus { return &e } // Enums of OrderStatus const ( ORDERSTATUS_PROCESSING OrderStatus = "PROCESSING" ORDERSTATUS_FINISHED OrderStatus = "FINISHED" ) // OrdersEntity type OrdersEntity struct { // 微信分账单号,微信系统返回的唯一标识 OrderId *string `json:"order_id"` // 商户系统内部的分账单号,在商户系统内部唯一,同一分账单号多次请求等同一次。只能是数字、大小写字母_-|*@ OutOrderNo *string `json:"out_order_no"` // 分账接收方列表 Receivers []OrderReceiverDetail `json:"receivers,omitempty"` // 分账单状态(每个接收方的分账结果请查看receivers中的result字段),枚举值: 1、PROCESSING:处理中 2、FINISHED:分账完成 * `PROCESSING` - 处理中, * `FINISHED` - 分账完成, State *OrderStatus `json:"state"` // 微信支付分配的子商户号,即分账的出资商户号。(直连商户不需要,服务商需要) SubMchid *string `json:"sub_mchid,omitempty"` // 微信支付订单号 TransactionId *string `json:"transaction_id"` } func (o OrdersEntity) MarshalJSON() ([]byte, error) { toSerialize := map[string]interface{}{} if o.OrderId == nil { return nil, fmt.Errorf("field `OrderId` is required and must be specified in OrdersEntity") } toSerialize["order_id"] = o.OrderId if o.OutOrderNo == nil { return nil, fmt.Errorf("field `OutOrderNo` is required and must be specified in OrdersEntity") } toSerialize["out_order_no"] = o.OutOrderNo if o.Receivers != nil { toSerialize["receivers"] = o.Receivers } if o.State == nil { return nil, fmt.Errorf("field `State` is required and must be specified in OrdersEntity") } toSerialize["state"] = o.State if o.SubMchid != nil { toSerialize["sub_mchid"] = o.SubMchid } if o.TransactionId == nil { return nil, fmt.Errorf("field `TransactionId` is required and must be specified in OrdersEntity") } toSerialize["transaction_id"] = o.TransactionId return json.Marshal(toSerialize) } func (o OrdersEntity) String() string { var ret string if o.OrderId == nil { ret += "OrderId:, " } else { ret += fmt.Sprintf("OrderId:%v, ", *o.OrderId) } if o.OutOrderNo == nil { ret += "OutOrderNo:, " } else { ret += fmt.Sprintf("OutOrderNo:%v, ", *o.OutOrderNo) } ret += fmt.Sprintf("Receivers:%v, ", o.Receivers) if o.State == nil { ret += "State:, " } else { ret += fmt.Sprintf("State:%v, ", *o.State) } if o.SubMchid == nil { ret += "SubMchid:, " } else { ret += fmt.Sprintf("SubMchid:%v, ", *o.SubMchid) } if o.TransactionId == nil { ret += "TransactionId:" } else { ret += fmt.Sprintf("TransactionId:%v", *o.TransactionId) } return fmt.Sprintf("OrdersEntity{%s}", ret) } func (o OrdersEntity) Clone() *OrdersEntity { ret := OrdersEntity{} if o.OrderId != nil { ret.OrderId = new(string) *ret.OrderId = *o.OrderId } if o.OutOrderNo != nil { ret.OutOrderNo = new(string) *ret.OutOrderNo = *o.OutOrderNo } if o.Receivers != nil { ret.Receivers = make([]OrderReceiverDetail, len(o.Receivers)) for i, item := range o.Receivers { ret.Receivers[i] = *item.Clone() } } if o.State != nil { ret.State = new(OrderStatus) *ret.State = *o.State } if o.SubMchid != nil { ret.SubMchid = new(string) *ret.SubMchid = *o.SubMchid } if o.TransactionId != nil { ret.TransactionId = new(string) *ret.TransactionId = *o.TransactionId } return &ret } // QueryMerchantRatioRequest type QueryMerchantRatioRequest struct { // 微信支付分配的子商户号,即分账的出资商户号。 SubMchid *string `json:"sub_mchid"` } func (o QueryMerchantRatioRequest) MarshalJSON() ([]byte, error) { toSerialize := map[string]interface{}{} if o.SubMchid == nil { return nil, fmt.Errorf("field `SubMchid` is required and must be specified in QueryMerchantRatioRequest") } toSerialize["sub_mchid"] = o.SubMchid return json.Marshal(toSerialize) } func (o QueryMerchantRatioRequest) String() string { var ret string if o.SubMchid == nil { ret += "SubMchid:" } else { ret += fmt.Sprintf("SubMchid:%v", *o.SubMchid) } return fmt.Sprintf("QueryMerchantRatioRequest{%s}", ret) } func (o QueryMerchantRatioRequest) Clone() *QueryMerchantRatioRequest { ret := QueryMerchantRatioRequest{} if o.SubMchid != nil { ret.SubMchid = new(string) *ret.SubMchid = *o.SubMchid } return &ret } // QueryMerchantRatioResponse type QueryMerchantRatioResponse struct { // 子商户允许父商户分账的最大比例,单位万分比,比如2000表示20% MaxRatio *int64 `json:"max_ratio"` // 参考请求参数 SubMchid *string `json:"sub_mchid"` } func (o QueryMerchantRatioResponse) MarshalJSON() ([]byte, error) { toSerialize := map[string]interface{}{} if o.MaxRatio == nil { return nil, fmt.Errorf("field `MaxRatio` is required and must be specified in QueryMerchantRatioResponse") } toSerialize["max_ratio"] = o.MaxRatio if o.SubMchid == nil { return nil, fmt.Errorf("field `SubMchid` is required and must be specified in QueryMerchantRatioResponse") } toSerialize["sub_mchid"] = o.SubMchid return json.Marshal(toSerialize) } func (o QueryMerchantRatioResponse) String() string { var ret string if o.MaxRatio == nil { ret += "MaxRatio:, " } else { ret += fmt.Sprintf("MaxRatio:%v, ", *o.MaxRatio) } if o.SubMchid == nil { ret += "SubMchid:" } else { ret += fmt.Sprintf("SubMchid:%v", *o.SubMchid) } return fmt.Sprintf("QueryMerchantRatioResponse{%s}", ret) } func (o QueryMerchantRatioResponse) Clone() *QueryMerchantRatioResponse { ret := QueryMerchantRatioResponse{} if o.MaxRatio != nil { ret.MaxRatio = new(int64) *ret.MaxRatio = *o.MaxRatio } if o.SubMchid != nil { ret.SubMchid = new(string) *ret.SubMchid = *o.SubMchid } return &ret } // QueryOrderAmountRequest type QueryOrderAmountRequest struct { // 微信支付订单号 TransactionId *string `json:"transaction_id"` } func (o QueryOrderAmountRequest) MarshalJSON() ([]byte, error) { toSerialize := map[string]interface{}{} if o.TransactionId == nil { return nil, fmt.Errorf("field `TransactionId` is required and must be specified in QueryOrderAmountRequest") } toSerialize["transaction_id"] = o.TransactionId return json.Marshal(toSerialize) } func (o QueryOrderAmountRequest) String() string { var ret string if o.TransactionId == nil { ret += "TransactionId:" } else { ret += fmt.Sprintf("TransactionId:%v", *o.TransactionId) } return fmt.Sprintf("QueryOrderAmountRequest{%s}", ret) } func (o QueryOrderAmountRequest) Clone() *QueryOrderAmountRequest { ret := QueryOrderAmountRequest{} if o.TransactionId != nil { ret.TransactionId = new(string) *ret.TransactionId = *o.TransactionId } return &ret } // QueryOrderAmountResponse type QueryOrderAmountResponse struct { // 微信支付订单号 TransactionId *string `json:"transaction_id"` // 订单剩余待分金额,整数,单元为分 UnsplitAmount *int64 `json:"unsplit_amount"` } func (o QueryOrderAmountResponse) MarshalJSON() ([]byte, error) { toSerialize := map[string]interface{}{} if o.TransactionId == nil { return nil, fmt.Errorf("field `TransactionId` is required and must be specified in QueryOrderAmountResponse") } toSerialize["transaction_id"] = o.TransactionId if o.UnsplitAmount == nil { return nil, fmt.Errorf("field `UnsplitAmount` is required and must be specified in QueryOrderAmountResponse") } toSerialize["unsplit_amount"] = o.UnsplitAmount return json.Marshal(toSerialize) } func (o QueryOrderAmountResponse) String() string { var ret string if o.TransactionId == nil { ret += "TransactionId:, " } else { ret += fmt.Sprintf("TransactionId:%v, ", *o.TransactionId) } if o.UnsplitAmount == nil { ret += "UnsplitAmount:" } else { ret += fmt.Sprintf("UnsplitAmount:%v", *o.UnsplitAmount) } return fmt.Sprintf("QueryOrderAmountResponse{%s}", ret) } func (o QueryOrderAmountResponse) Clone() *QueryOrderAmountResponse { ret := QueryOrderAmountResponse{} if o.TransactionId != nil { ret.TransactionId = new(string) *ret.TransactionId = *o.TransactionId } if o.UnsplitAmount != nil { ret.UnsplitAmount = new(int64) *ret.UnsplitAmount = *o.UnsplitAmount } return &ret } // QueryOrderRequest type QueryOrderRequest struct { // 微信支付分配的子商户号,即分账的出资商户号。(直连商户不需要,服务商需要) SubMchid *string `json:"sub_mchid,omitempty"` // 微信支付订单号 TransactionId *string `json:"transaction_id"` // 商户系统内部的分账单号,在商户系统内部唯一,同一分账单号多次请求等同一次。只能是数字、大小写字母_-|*@ 。 微信分账单号与商户分账单号二选一填写 OutOrderNo *string `json:"out_order_no"` } func (o QueryOrderRequest) MarshalJSON() ([]byte, error) { toSerialize := map[string]interface{}{} if o.SubMchid != nil { toSerialize["sub_mchid"] = o.SubMchid } if o.TransactionId == nil { return nil, fmt.Errorf("field `TransactionId` is required and must be specified in QueryOrderRequest") } toSerialize["transaction_id"] = o.TransactionId if o.OutOrderNo == nil { return nil, fmt.Errorf("field `OutOrderNo` is required and must be specified in QueryOrderRequest") } toSerialize["out_order_no"] = o.OutOrderNo return json.Marshal(toSerialize) } func (o QueryOrderRequest) String() string { var ret string if o.SubMchid == nil { ret += "SubMchid:, " } else { ret += fmt.Sprintf("SubMchid:%v, ", *o.SubMchid) } if o.TransactionId == nil { ret += "TransactionId:, " } else { ret += fmt.Sprintf("TransactionId:%v, ", *o.TransactionId) } if o.OutOrderNo == nil { ret += "OutOrderNo:" } else { ret += fmt.Sprintf("OutOrderNo:%v", *o.OutOrderNo) } return fmt.Sprintf("QueryOrderRequest{%s}", ret) } func (o QueryOrderRequest) Clone() *QueryOrderRequest { ret := QueryOrderRequest{} if o.SubMchid != nil { ret.SubMchid = new(string) *ret.SubMchid = *o.SubMchid } if o.TransactionId != nil { ret.TransactionId = new(string) *ret.TransactionId = *o.TransactionId } if o.OutOrderNo != nil { ret.OutOrderNo = new(string) *ret.OutOrderNo = *o.OutOrderNo } return &ret } // QueryReturnOrderRequest type QueryReturnOrderRequest struct { // 分账回退的接收商户,对应原分账出资的分账方商户,填写微信支付分配的商户号。(直连商户不需要,服务商需要) SubMchid *string `json:"sub_mchid,omitempty"` // 调用回退接口提供的商户系统内部的回退单号。微信支付回退单号与商户回退单号二选一填写 OutReturnNo *string `json:"out_return_no"` // 原发起分账请求时使用的商户系统内部的分账单号。微信分账单号与商户分账单号二选一填写 OutOrderNo *string `json:"out_order_no"` } func (o QueryReturnOrderRequest) MarshalJSON() ([]byte, error) { toSerialize := map[string]interface{}{} if o.SubMchid != nil { toSerialize["sub_mchid"] = o.SubMchid } if o.OutReturnNo == nil { return nil, fmt.Errorf("field `OutReturnNo` is required and must be specified in QueryReturnOrderRequest") } toSerialize["out_return_no"] = o.OutReturnNo if o.OutOrderNo == nil { return nil, fmt.Errorf("field `OutOrderNo` is required and must be specified in QueryReturnOrderRequest") } toSerialize["out_order_no"] = o.OutOrderNo return json.Marshal(toSerialize) } func (o QueryReturnOrderRequest) String() string { var ret string if o.SubMchid == nil { ret += "SubMchid:, " } else { ret += fmt.Sprintf("SubMchid:%v, ", *o.SubMchid) } if o.OutReturnNo == nil { ret += "OutReturnNo:, " } else { ret += fmt.Sprintf("OutReturnNo:%v, ", *o.OutReturnNo) } if o.OutOrderNo == nil { ret += "OutOrderNo:" } else { ret += fmt.Sprintf("OutOrderNo:%v", *o.OutOrderNo) } return fmt.Sprintf("QueryReturnOrderRequest{%s}", ret) } func (o QueryReturnOrderRequest) Clone() *QueryReturnOrderRequest { ret := QueryReturnOrderRequest{} if o.SubMchid != nil { ret.SubMchid = new(string) *ret.SubMchid = *o.SubMchid } if o.OutReturnNo != nil { ret.OutReturnNo = new(string) *ret.OutReturnNo = *o.OutReturnNo } if o.OutOrderNo != nil { ret.OutOrderNo = new(string) *ret.OutOrderNo = *o.OutOrderNo } return &ret } // ReceiverRelationType * `SERVICE_PROVIDER` - 服务商, * `STORE` - 门店, * `STAFF` - 员工, * `STORE_OWNER` - 店主, * `PARTNER` - 合作伙伴, * `HEADQUARTER` - 总部, * `BRAND` - 品牌方, * `DISTRIBUTOR` - 分销商, * `USER` - 用户, * `SUPPLIER` - 供应商, * `CUSTOM` - 自定义, type ReceiverRelationType string func (e ReceiverRelationType) Ptr() *ReceiverRelationType { return &e } // Enums of ReceiverRelationType const ( RECEIVERRELATIONTYPE_SERVICE_PROVIDER ReceiverRelationType = "SERVICE_PROVIDER" RECEIVERRELATIONTYPE_STORE ReceiverRelationType = "STORE" RECEIVERRELATIONTYPE_STAFF ReceiverRelationType = "STAFF" RECEIVERRELATIONTYPE_STORE_OWNER ReceiverRelationType = "STORE_OWNER" RECEIVERRELATIONTYPE_PARTNER ReceiverRelationType = "PARTNER" RECEIVERRELATIONTYPE_HEADQUARTER ReceiverRelationType = "HEADQUARTER" RECEIVERRELATIONTYPE_BRAND ReceiverRelationType = "BRAND" RECEIVERRELATIONTYPE_DISTRIBUTOR ReceiverRelationType = "DISTRIBUTOR" RECEIVERRELATIONTYPE_USER ReceiverRelationType = "USER" RECEIVERRELATIONTYPE_SUPPLIER ReceiverRelationType = "SUPPLIER" RECEIVERRELATIONTYPE_CUSTOM ReceiverRelationType = "CUSTOM" ) // ReceiverType * `MERCHANT_ID` - 商户号, * `PERSONAL_OPENID` - 个人openid(由父商户APPID转换得到), * `PERSONAL_SUB_OPENID` - 个人sub_openid(由子商户APPID转换得到)(直连商户不需要,服务商需要), type ReceiverType string func (e ReceiverType) Ptr() *ReceiverType { return &e } // Enums of ReceiverType const ( RECEIVERTYPE_MERCHANT_ID ReceiverType = "MERCHANT_ID" RECEIVERTYPE_PERSONAL_OPENID ReceiverType = "PERSONAL_OPENID" RECEIVERTYPE_PERSONAL_SUB_OPENID ReceiverType = "PERSONAL_SUB_OPENID" ) // ReturnOrderFailReason * `ACCOUNT_ABNORMAL` - 分账接收方账户异常, * `BALANCE_NOT_ENOUGH` - 余额不足, * `TIME_OUT_CLOSED` - 超时关单, type ReturnOrderFailReason string func (e ReturnOrderFailReason) Ptr() *ReturnOrderFailReason { return &e } // Enums of ReturnOrderFailReason const ( RETURNORDERFAILREASON_ACCOUNT_ABNORMAL ReturnOrderFailReason = "ACCOUNT_ABNORMAL" RETURNORDERFAILREASON_BALANCE_NOT_ENOUGH ReturnOrderFailReason = "BALANCE_NOT_ENOUGH" RETURNORDERFAILREASON_TIME_OUT_CLOSED ReturnOrderFailReason = "TIME_OUT_CLOSED" ) // ReturnOrderStatus * `PROCESSING` - 处理中, * `SUCCESS` - 已成功, * `FAILED` - 已失败, type ReturnOrderStatus string func (e ReturnOrderStatus) Ptr() *ReturnOrderStatus { return &e } // Enums of ReturnOrderStatus const ( RETURNORDERSTATUS_PROCESSING ReturnOrderStatus = "PROCESSING" RETURNORDERSTATUS_SUCCESS ReturnOrderStatus = "SUCCESS" RETURNORDERSTATUS_FAILED ReturnOrderStatus = "FAILED" ) // ReturnOrdersEntity type ReturnOrdersEntity struct { // 需要从分账接收方回退的金额,单位为分,只能为整数 Amount *int64 `json:"amount"` // 分账回退创建时间,遵循RFC3339标准格式 CreateTime *time.Time `json:"create_time"` // 分账回退的原因描述 Description *string `json:"description"` // 失败原因。包含以下枚举值: ACCOUNT_ABNORMAL : 分账接收方账户异常 TIME_OUT_CLOSED : 超时关单 * `ACCOUNT_ABNORMAL` - 分账接收方账户异常, * `BALANCE_NOT_ENOUGH` - 余额不足, * `TIME_OUT_CLOSED` - 超时关单, FailReason *ReturnOrderFailReason `json:"fail_reason,omitempty"` // 分账回退完成时间,遵循RFC3339标准格式 FinishTime *time.Time `json:"finish_time"` // 参考请求参数 OrderId *string `json:"order_id"` // 参考请求参数 OutOrderNo *string `json:"out_order_no"` // 参考请求参数 OutReturnNo *string `json:"out_return_no"` // 如果请求返回为处理中,则商户可以通过调用回退结果查询接口获取请求的最终处理结果。如果查询到回退结果在处理中,请勿变更商户回退单号,使用相同的参数再次发起分账回退,否则会出现资金风险。在处理中状态的回退单如果5天没有成功,会因为超时被设置为已失败。 枚举值: PROCESSING:处理中 SUCCESS:已成功 FAILED:已失败 * `PROCESSING` - 处理中, * `SUCCESS` - 已成功, * `FAILED` - 已失败, Result *ReturnOrderStatus `json:"result"` // 微信分账回退单号,微信系统返回的唯一标识 ReturnId *string `json:"return_id"` // 只能对原分账请求中成功分给商户接收方进行回退 ReturnMchid *string `json:"return_mchid"` // 参考请求参数 SubMchid *string `json:"sub_mchid,omitempty"` } func (o ReturnOrdersEntity) MarshalJSON() ([]byte, error) { toSerialize := map[string]interface{}{} if o.Amount == nil { return nil, fmt.Errorf("field `Amount` is required and must be specified in ReturnOrdersEntity") } toSerialize["amount"] = o.Amount if o.CreateTime == nil { return nil, fmt.Errorf("field `CreateTime` is required and must be specified in ReturnOrdersEntity") } toSerialize["create_time"] = o.CreateTime.Format(time.RFC3339) if o.Description == nil { return nil, fmt.Errorf("field `Description` is required and must be specified in ReturnOrdersEntity") } toSerialize["description"] = o.Description if o.FailReason != nil { toSerialize["fail_reason"] = o.FailReason } if o.FinishTime == nil { return nil, fmt.Errorf("field `FinishTime` is required and must be specified in ReturnOrdersEntity") } toSerialize["finish_time"] = o.FinishTime.Format(time.RFC3339) if o.OrderId == nil { return nil, fmt.Errorf("field `OrderId` is required and must be specified in ReturnOrdersEntity") } toSerialize["order_id"] = o.OrderId if o.OutOrderNo == nil { return nil, fmt.Errorf("field `OutOrderNo` is required and must be specified in ReturnOrdersEntity") } toSerialize["out_order_no"] = o.OutOrderNo if o.OutReturnNo == nil { return nil, fmt.Errorf("field `OutReturnNo` is required and must be specified in ReturnOrdersEntity") } toSerialize["out_return_no"] = o.OutReturnNo if o.Result == nil { return nil, fmt.Errorf("field `Result` is required and must be specified in ReturnOrdersEntity") } toSerialize["result"] = o.Result if o.ReturnId == nil { return nil, fmt.Errorf("field `ReturnId` is required and must be specified in ReturnOrdersEntity") } toSerialize["return_id"] = o.ReturnId if o.ReturnMchid == nil { return nil, fmt.Errorf("field `ReturnMchid` is required and must be specified in ReturnOrdersEntity") } toSerialize["return_mchid"] = o.ReturnMchid if o.SubMchid != nil { toSerialize["sub_mchid"] = o.SubMchid } return json.Marshal(toSerialize) } func (o ReturnOrdersEntity) String() string { var ret string if o.Amount == nil { ret += "Amount:, " } else { ret += fmt.Sprintf("Amount:%v, ", *o.Amount) } if o.CreateTime == nil { ret += "CreateTime:, " } else { ret += fmt.Sprintf("CreateTime:%v, ", *o.CreateTime) } if o.Description == nil { ret += "Description:, " } else { ret += fmt.Sprintf("Description:%v, ", *o.Description) } if o.FailReason == nil { ret += "FailReason:, " } else { ret += fmt.Sprintf("FailReason:%v, ", *o.FailReason) } if o.FinishTime == nil { ret += "FinishTime:, " } else { ret += fmt.Sprintf("FinishTime:%v, ", *o.FinishTime) } if o.OrderId == nil { ret += "OrderId:, " } else { ret += fmt.Sprintf("OrderId:%v, ", *o.OrderId) } if o.OutOrderNo == nil { ret += "OutOrderNo:, " } else { ret += fmt.Sprintf("OutOrderNo:%v, ", *o.OutOrderNo) } if o.OutReturnNo == nil { ret += "OutReturnNo:, " } else { ret += fmt.Sprintf("OutReturnNo:%v, ", *o.OutReturnNo) } if o.Result == nil { ret += "Result:, " } else { ret += fmt.Sprintf("Result:%v, ", *o.Result) } if o.ReturnId == nil { ret += "ReturnId:, " } else { ret += fmt.Sprintf("ReturnId:%v, ", *o.ReturnId) } if o.ReturnMchid == nil { ret += "ReturnMchid:, " } else { ret += fmt.Sprintf("ReturnMchid:%v, ", *o.ReturnMchid) } if o.SubMchid == nil { ret += "SubMchid:" } else { ret += fmt.Sprintf("SubMchid:%v", *o.SubMchid) } return fmt.Sprintf("ReturnOrdersEntity{%s}", ret) } func (o ReturnOrdersEntity) Clone() *ReturnOrdersEntity { ret := ReturnOrdersEntity{} if o.Amount != nil { ret.Amount = new(int64) *ret.Amount = *o.Amount } if o.CreateTime != nil { ret.CreateTime = new(time.Time) *ret.CreateTime = *o.CreateTime } if o.Description != nil { ret.Description = new(string) *ret.Description = *o.Description } if o.FailReason != nil { ret.FailReason = new(ReturnOrderFailReason) *ret.FailReason = *o.FailReason } if o.FinishTime != nil { ret.FinishTime = new(time.Time) *ret.FinishTime = *o.FinishTime } if o.OrderId != nil { ret.OrderId = new(string) *ret.OrderId = *o.OrderId } if o.OutOrderNo != nil { ret.OutOrderNo = new(string) *ret.OutOrderNo = *o.OutOrderNo } if o.OutReturnNo != nil { ret.OutReturnNo = new(string) *ret.OutReturnNo = *o.OutReturnNo } if o.Result != nil { ret.Result = new(ReturnOrderStatus) *ret.Result = *o.Result } if o.ReturnId != nil { ret.ReturnId = new(string) *ret.ReturnId = *o.ReturnId } if o.ReturnMchid != nil { ret.ReturnMchid = new(string) *ret.ReturnMchid = *o.ReturnMchid } if o.SubMchid != nil { ret.SubMchid = new(string) *ret.SubMchid = *o.SubMchid } return &ret } // SplitBillHashType * `SHA1` - SHA1,Secure Hash Algorithm 1 type SplitBillHashType string func (e SplitBillHashType) Ptr() *SplitBillHashType { return &e } // Enums of SplitBillHashType const ( SPLITBILLHASHTYPE_SHA1 SplitBillHashType = "SHA1" ) // SplitBillRequest type SplitBillRequest struct { // 若商户是直连商户: - 无需填写该字段 若商户是服务商: - 不填则默认返回服务商下的所有分账账单。 - 如需下载某个子商户下的分账账单,则填指定的子商户号。 SubMchid *string `json:"sub_mchid,omitempty"` // 格式YYYY-MM-DD。仅支持三个月内的账单下载申请。 BillDate *string `json:"bill_date"` // 不填则以不压缩的方式返回数据流 TarType *SplitBillTarType `json:"tar_type,omitempty"` } func (o SplitBillRequest) MarshalJSON() ([]byte, error) { toSerialize := map[string]interface{}{} if o.SubMchid != nil { toSerialize["sub_mchid"] = o.SubMchid } if o.BillDate == nil { return nil, fmt.Errorf("field `BillDate` is required and must be specified in SplitBillRequest") } toSerialize["bill_date"] = o.BillDate if o.TarType != nil { toSerialize["tar_type"] = o.TarType } return json.Marshal(toSerialize) } func (o SplitBillRequest) String() string { var ret string if o.SubMchid == nil { ret += "SubMchid:, " } else { ret += fmt.Sprintf("SubMchid:%v, ", *o.SubMchid) } if o.BillDate == nil { ret += "BillDate:, " } else { ret += fmt.Sprintf("BillDate:%v, ", *o.BillDate) } if o.TarType == nil { ret += "TarType:" } else { ret += fmt.Sprintf("TarType:%v", *o.TarType) } return fmt.Sprintf("SplitBillRequest{%s}", ret) } func (o SplitBillRequest) Clone() *SplitBillRequest { ret := SplitBillRequest{} if o.SubMchid != nil { ret.SubMchid = new(string) *ret.SubMchid = *o.SubMchid } if o.BillDate != nil { ret.BillDate = new(string) *ret.BillDate = *o.BillDate } if o.TarType != nil { ret.TarType = new(SplitBillTarType) *ret.TarType = *o.TarType } return &ret } // SplitBillResponse type SplitBillResponse struct { // 供下一步请求账单文件的下载地址,该地址30s内有效 DownloadUrl *string `json:"download_url"` // 原始账单(gzip需要解压缩)的摘要算法,用于校验文件的完整性 * `SHA1` - SHA1,Secure Hash Algorithm 1 HashType *SplitBillHashType `json:"hash_type"` // 原始账单(gzip需要解压缩)的摘要值,用于校验文件的完整性 HashValue *string `json:"hash_value"` } func (o SplitBillResponse) MarshalJSON() ([]byte, error) { toSerialize := map[string]interface{}{} if o.DownloadUrl == nil { return nil, fmt.Errorf("field `DownloadUrl` is required and must be specified in SplitBillResponse") } toSerialize["download_url"] = o.DownloadUrl if o.HashType == nil { return nil, fmt.Errorf("field `HashType` is required and must be specified in SplitBillResponse") } toSerialize["hash_type"] = o.HashType if o.HashValue == nil { return nil, fmt.Errorf("field `HashValue` is required and must be specified in SplitBillResponse") } toSerialize["hash_value"] = o.HashValue return json.Marshal(toSerialize) } func (o SplitBillResponse) String() string { var ret string if o.DownloadUrl == nil { ret += "DownloadUrl:, " } else { ret += fmt.Sprintf("DownloadUrl:%v, ", *o.DownloadUrl) } if o.HashType == nil { ret += "HashType:, " } else { ret += fmt.Sprintf("HashType:%v, ", *o.HashType) } if o.HashValue == nil { ret += "HashValue:" } else { ret += fmt.Sprintf("HashValue:%v", *o.HashValue) } return fmt.Sprintf("SplitBillResponse{%s}", ret) } func (o SplitBillResponse) Clone() *SplitBillResponse { ret := SplitBillResponse{} if o.DownloadUrl != nil { ret.DownloadUrl = new(string) *ret.DownloadUrl = *o.DownloadUrl } if o.HashType != nil { ret.HashType = new(SplitBillHashType) *ret.HashType = *o.HashType } if o.HashValue != nil { ret.HashValue = new(string) *ret.HashValue = *o.HashValue } return &ret } // SplitBillTarType * `GZIP` - GZIP格式压缩,返回格式为.gzip的压缩包账单 type SplitBillTarType string func (e SplitBillTarType) Ptr() *SplitBillTarType { return &e } // Enums of SplitBillTarType const ( SPLITBILLTARTYPE_GZIP SplitBillTarType = "GZIP" ) // UnfreezeOrderRequest type UnfreezeOrderRequest struct { // 分账的原因描述,分账账单中需要体现 Description *string `json:"description"` // 商户系统内部的分账单号,在商户系统内部唯一,同一分账单号多次请求等同一次。只能是数字、大小写字母_-|*@ OutOrderNo *string `json:"out_order_no"` // 微信支付分配的子商户号,即分账的出资商户号。(直连商户不需要,服务商需要) SubMchid *string `json:"sub_mchid,omitempty"` // 微信支付订单号 TransactionId *string `json:"transaction_id"` } func (o UnfreezeOrderRequest) MarshalJSON() ([]byte, error) { toSerialize := map[string]interface{}{} if o.Description == nil { return nil, fmt.Errorf("field `Description` is required and must be specified in UnfreezeOrderRequest") } toSerialize["description"] = o.Description if o.OutOrderNo == nil { return nil, fmt.Errorf("field `OutOrderNo` is required and must be specified in UnfreezeOrderRequest") } toSerialize["out_order_no"] = o.OutOrderNo if o.SubMchid != nil { toSerialize["sub_mchid"] = o.SubMchid } if o.TransactionId == nil { return nil, fmt.Errorf("field `TransactionId` is required and must be specified in UnfreezeOrderRequest") } toSerialize["transaction_id"] = o.TransactionId return json.Marshal(toSerialize) } func (o UnfreezeOrderRequest) String() string { var ret string if o.Description == nil { ret += "Description:, " } else { ret += fmt.Sprintf("Description:%v, ", *o.Description) } if o.OutOrderNo == nil { ret += "OutOrderNo:, " } else { ret += fmt.Sprintf("OutOrderNo:%v, ", *o.OutOrderNo) } if o.SubMchid == nil { ret += "SubMchid:, " } else { ret += fmt.Sprintf("SubMchid:%v, ", *o.SubMchid) } if o.TransactionId == nil { ret += "TransactionId:" } else { ret += fmt.Sprintf("TransactionId:%v", *o.TransactionId) } return fmt.Sprintf("UnfreezeOrderRequest{%s}", ret) } func (o UnfreezeOrderRequest) Clone() *UnfreezeOrderRequest { ret := UnfreezeOrderRequest{} if o.Description != nil { ret.Description = new(string) *ret.Description = *o.Description } if o.OutOrderNo != nil { ret.OutOrderNo = new(string) *ret.OutOrderNo = *o.OutOrderNo } if o.SubMchid != nil { ret.SubMchid = new(string) *ret.SubMchid = *o.SubMchid } if o.TransactionId != nil { ret.TransactionId = new(string) *ret.TransactionId = *o.TransactionId } return &ret }