- add profitsharing

master v1.0.16
李光春 2 years ago
parent df75d09be5
commit 020b08e9b3

@ -14,7 +14,7 @@ const (
// SDK 相关信息
const (
Version = "1.0.15" // SDK 版本
Version = "1.0.16" // SDK 版本
UserAgentFormat = "WechatPay-Go/%s (%s) GO/%s" // UserAgent中的信息
)
@ -74,3 +74,9 @@ type ApiError struct {
Code string `json:"code"`
Message string `json:"message"`
}
const (
MERCHANT_ID = "MERCHANT_ID"
PERSONAL_OPENID = "PERSONAL_OPENID"
PERSONAL_SUB_OPENID = "PERSONAL_SUB_OPENID"
)

@ -5,8 +5,7 @@ go 1.19
require (
github.com/gin-gonic/gin v1.8.1
go.dtapp.net/dorm v1.0.32
go.dtapp.net/goip v1.0.28
go.dtapp.net/golog v1.0.67
go.dtapp.net/golog v1.0.68
go.dtapp.net/gorandom v1.0.1
go.dtapp.net/gorequest v1.0.28
)
@ -66,6 +65,7 @@ require (
github.com/xdg-go/scram v1.1.1 // indirect
github.com/xdg-go/stringprep v1.0.3 // indirect
github.com/youmark/pkcs8 v0.0.0-20201027041543-1326539a0a0a // indirect
go.dtapp.net/goip v1.0.28 // indirect
go.dtapp.net/gostring v1.0.10 // indirect
go.dtapp.net/gotime v1.0.5 // indirect
go.dtapp.net/gotrace_id v1.0.6 // indirect
@ -78,7 +78,7 @@ require (
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 // indirect
golang.org/x/net v0.0.0-20220906165146-f3363e06e74c // indirect
golang.org/x/sync v0.0.0-20220819030929-7fc1605a5dde // indirect
golang.org/x/sys v0.0.0-20220906165534-d0df966e6959 // indirect
golang.org/x/sys v0.0.0-20220907062415-87db552b00fd // indirect
golang.org/x/text v0.3.7 // indirect
google.golang.org/protobuf v1.28.1 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect

@ -499,8 +499,8 @@ go.dtapp.net/dorm v1.0.32 h1:kMU2on0t8e87qDvXEt8DlaM1DJjLBvUOaIGc5fNsgzY=
go.dtapp.net/dorm v1.0.32/go.mod h1:ocdIcMoJCLGngRNPSAa/1Hq+Mu1JDTxT0hH2QBlL2ik=
go.dtapp.net/goip v1.0.28 h1:wZt+wbzNhOLRUJnepG4c8HhUr4V9jNXOF6wJ1h7jUvU=
go.dtapp.net/goip v1.0.28/go.mod h1:ZqPPUvpOSzdtB/dEZFiaD0CBRZmvIzjDmm3XkpMC9Bo=
go.dtapp.net/golog v1.0.67 h1:HGNrc9zq1S0yXxPazG+Odpsgtv/g5qSw7p8XbKAU+RQ=
go.dtapp.net/golog v1.0.67/go.mod h1:KIUJMiZqj8BgPwvE/CqAuiKhysreEh2cz3Tf+sdYTM4=
go.dtapp.net/golog v1.0.68 h1:rCXd1PLhfzKRkv+qS/XjERpv2sOHkcw9gPOIb0KCmgk=
go.dtapp.net/golog v1.0.68/go.mod h1:S0LEEBp9Eq7WvXG2LadXsPm6II4pMfv5KOCnrcUIBzI=
go.dtapp.net/gorandom v1.0.1 h1:IWfMClh1ECPvyUjlqD7MwLq4mZdUusD1qAwAdsvEJBs=
go.dtapp.net/gorandom v1.0.1/go.mod h1:ZPdgalKpvFV/ATQqR0k4ns/F/IpITAZpx6WkWirr5Y8=
go.dtapp.net/gorequest v1.0.28 h1:EehFtF5WcvyZ9rB6MAQoI2kJkhR8Wv8tVgpoxXcb3sI=
@ -641,8 +641,8 @@ golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBc
golang.org/x/sys v0.0.0-20211210111614-af8b64212486/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220906165534-d0df966e6959 h1:qSa+Hg9oBe6UJXrznE+yYvW51V9UbyIj/nj/KpDigo8=
golang.org/x/sys v0.0.0-20220906165534-d0df966e6959/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220907062415-87db552b00fd h1:AZeIEzg+8RCELJYq8w+ODLVxFgLMMigSwO/ffKPEd9U=
golang.org/x/sys v0.0.0-20220907062415-87db552b00fd/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=

@ -0,0 +1,44 @@
package wechatpayopen
import (
"context"
"encoding/json"
"go.dtapp.net/gorequest"
"net/http"
)
type ProfitSharingMerchantConfigsResponse struct {
SubMchid string `json:"sub_mchid"` // 子商户号
MaxRatio int `json:"max_ratio"` // 最大分账比例
}
type ProfitSharingMerchantConfigsResult struct {
Result ProfitSharingMerchantConfigsResponse // 结果
Body []byte // 内容
Http gorequest.Response // 请求
Err error // 错误
ApiError ApiError // 接口错误
}
func newProfitSharingMerchantConfigsResult(result ProfitSharingMerchantConfigsResponse, body []byte, http gorequest.Response, err error, apiError ApiError) *ProfitSharingMerchantConfigsResult {
return &ProfitSharingMerchantConfigsResult{Result: result, Body: body, Http: http, Err: err, ApiError: apiError}
}
// ProfitSharingMerchantConfigs 查询最大分账比例API
// https://pay.weixin.qq.com/wiki/doc/apiv3_partner/apis/chapter8_1_7.shtml
func (c *Client) ProfitSharingMerchantConfigs(ctx context.Context) *ProfitSharingMerchantConfigsResult {
// 参数
params := gorequest.NewParams()
// 请求
request, err := c.request(ctx, apiUrl+"/v3/profitsharing/merchant-configs/"+c.GetSubMchId(), params, http.MethodGet)
if err != nil {
return newProfitSharingMerchantConfigsResult(ProfitSharingMerchantConfigsResponse{}, request.ResponseBody, request, err, ApiError{})
}
// 定义
var response ProfitSharingMerchantConfigsResponse
err = json.Unmarshal(request.ResponseBody, &response)
// 错误
var apiError ApiError
err = json.Unmarshal(request.ResponseBody, &apiError)
return newProfitSharingMerchantConfigsResult(response, request.ResponseBody, request, err, apiError)
}

@ -0,0 +1,61 @@
package wechatpayopen
import (
"context"
"encoding/json"
"go.dtapp.net/gorequest"
"net/http"
)
type ProfitSharingOrdersResponse struct {
SubMchid string `json:"sub_mchid"` // 子商户号
TransactionId string `json:"transaction_id"` // 微信订单号
OutOrderNo string `json:"out_order_no"` // 商户分账单号
OrderId string `json:"order_id"` // 微信分账单号
State string `json:"state"` // 分账单状态
Receivers []struct {
Amount int `json:"amount"` // 分账金额
Description string `json:"description"` // 分账描述
Type string `json:"type"` // 分账接收方类型
Account string `json:"account"` // 分账接收方账号
Result string `json:"result"` // 分账结果
FailReason string `json:"fail_reason"` // 分账失败原因
DetailId string `json:"detail_id"` // 分账明细单号
CreateTime string `json:"create_time"` // 分账创建时间
FinishTime string `json:"finish_time"` // 分账完成时间
} `json:"receivers,omitempty"` // 分账接收方列表
}
type ProfitSharingOrdersResult struct {
Result ProfitSharingOrdersResponse // 结果
Body []byte // 内容
Http gorequest.Response // 请求
Err error // 错误
ApiError ApiError // 接口错误
}
func newProfitSharingOrdersResult(result ProfitSharingOrdersResponse, body []byte, http gorequest.Response, err error, apiError ApiError) *ProfitSharingOrdersResult {
return &ProfitSharingOrdersResult{Result: result, Body: body, Http: http, Err: err, ApiError: apiError}
}
// ProfitSharingOrders 请求分账API
// https://pay.weixin.qq.com/wiki/doc/apiv3_partner/apis/chapter8_1_1.shtml
func (c *Client) ProfitSharingOrders(ctx context.Context, notMustParams ...gorequest.Params) *ProfitSharingOrdersResult {
// 参数
params := gorequest.NewParamsWith(notMustParams...)
params.Set("sub_mchid", c.GetSubMchId()) // 子商户号
params.Set("appid", c.GetSpAppid()) // 应用ID
params.Set("sub_appid", c.GetSubAppid()) // 子商户应用ID
// 请求
request, err := c.request(ctx, apiUrl+"/v3/profitsharing/orders", params, http.MethodPost)
if err != nil {
return newProfitSharingOrdersResult(ProfitSharingOrdersResponse{}, request.ResponseBody, request, err, ApiError{})
}
// 定义
var response ProfitSharingOrdersResponse
err = json.Unmarshal(request.ResponseBody, &response)
// 错误
var apiError ApiError
err = json.Unmarshal(request.ResponseBody, &apiError)
return newProfitSharingOrdersResult(response, request.ResponseBody, request, err, apiError)
}

@ -0,0 +1,61 @@
package wechatpayopen
import (
"context"
"encoding/json"
"go.dtapp.net/gorequest"
"net/http"
)
type ProfitSharingOrdersOutOrderNoResponse struct {
SubMchid string `json:"sub_mchid"` // 子商户号
TransactionId string `json:"transaction_id"` // 微信订单号
OutOrderNo string `json:"out_order_no"` // 商户分账单号
OrderId string `json:"order_id"` // 微信分账单号
State string `json:"state"` // 分账单状态
Receivers []struct {
Amount int `json:"amount"` // 分账金额
Description string `json:"description"` // 分账描述
Type string `json:"type"` // 分账接收方类型
Account string `json:"account"` // 分账接收方账号
Result string `json:"result"` // 分账结果
FailReason string `json:"fail_reason"` // 分账失败原因
DetailId string `json:"detail_id"` // 分账明细单号
CreateTime string `json:"create_time"` // 分账创建时间
FinishTime string `json:"finish_time"` // 分账完成时间
} `json:"receivers,omitempty"` // 分账接收方列表
}
type ProfitSharingOrdersOutOrderNoResult struct {
Result ProfitSharingOrdersOutOrderNoResponse // 结果
Body []byte // 内容
Http gorequest.Response // 请求
Err error // 错误
ApiError ApiError // 接口错误
}
func newProfitSharingOrdersOutOrderNoResult(result ProfitSharingOrdersOutOrderNoResponse, body []byte, http gorequest.Response, err error, apiError ApiError) *ProfitSharingOrdersOutOrderNoResult {
return &ProfitSharingOrdersOutOrderNoResult{Result: result, Body: body, Http: http, Err: err, ApiError: apiError}
}
// ProfitSharingOrdersOutOrderNo 查询分账结果API
// https://pay.weixin.qq.com/wiki/doc/apiv3_partner/apis/chapter8_1_2.shtml
func (c *Client) ProfitSharingOrdersOutOrderNo(ctx context.Context, transactionId, outOrderNo string) *ProfitSharingOrdersOutOrderNoResult {
// 参数
params := gorequest.NewParams()
params.Set("sub_mchid", c.GetSubMchId()) // 子商户号
params.Set("transaction_id", transactionId) // 微信订单号
params.Set("out_order_no", outOrderNo) // 商户分账单号
// 请求
request, err := c.request(ctx, apiUrl+"/v3/profitsharing/orders/"+outOrderNo, params, http.MethodGet)
if err != nil {
return newProfitSharingOrdersOutOrderNoResult(ProfitSharingOrdersOutOrderNoResponse{}, request.ResponseBody, request, err, ApiError{})
}
// 定义
var response ProfitSharingOrdersOutOrderNoResponse
err = json.Unmarshal(request.ResponseBody, &response)
// 错误
var apiError ApiError
err = json.Unmarshal(request.ResponseBody, &apiError)
return newProfitSharingOrdersOutOrderNoResult(response, request.ResponseBody, request, err, apiError)
}

@ -0,0 +1,62 @@
package wechatpayopen
import (
"context"
"encoding/json"
"go.dtapp.net/gorequest"
"net/http"
)
type ProfitSharingOrdersUnfreezeResponse struct {
SubMchid string `json:"sub_mchid"` // 子商户号
TransactionId string `json:"transaction_id"` // 微信订单号
OutOrderNo string `json:"out_order_no"` // 商户分账单号
OrderId string `json:"order_id"` // 微信分账单号
State string `json:"state"` // 分账单状态
Receivers []struct {
Amount int `json:"amount"` // 分账金额
Description string `json:"description"` // 分账描述
Type string `json:"type"` // 分账接收方类型
Account string `json:"account"` // 分账接收方账号
Result string `json:"result"` // 分账结果
FailReason string `json:"fail_reason"` // 分账失败原因
DetailId string `json:"detail_id"` // 分账明细单号
CreateTime string `json:"create_time"` // 分账创建时间
FinishTime string `json:"finish_time"` // 分账完成时间
} `json:"receivers,omitempty"` // 分账接收方列表
}
type ProfitSharingOrdersUnfreezeResult struct {
Result ProfitSharingOrdersUnfreezeResponse // 结果
Body []byte // 内容
Http gorequest.Response // 请求
Err error // 错误
ApiError ApiError // 接口错误
}
func newProfitSharingOrdersUnfreezeResult(result ProfitSharingOrdersUnfreezeResponse, body []byte, http gorequest.Response, err error, apiError ApiError) *ProfitSharingOrdersUnfreezeResult {
return &ProfitSharingOrdersUnfreezeResult{Result: result, Body: body, Http: http, Err: err, ApiError: apiError}
}
// ProfitSharingOrdersUnfreeze 解冻剩余资金API
// https://pay.weixin.qq.com/wiki/doc/apiv3_partner/apis/chapter8_1_5.shtml
func (c *Client) ProfitSharingOrdersUnfreeze(ctx context.Context, transactionId, outOrderNo, description string) *ProfitSharingOrdersUnfreezeResult {
// 参数
params := gorequest.NewParams()
params.Set("sub_mchid", c.GetSubMchId()) // 子商户号
params.Set("transaction_id", transactionId) // 微信订单号
params.Set("out_order_no", outOrderNo) // 商户分账单号
params.Set("description", description) // 分账描述
// 请求
request, err := c.request(ctx, apiUrl+"/v3/profitsharing/orders/unfreeze", params, http.MethodPost)
if err != nil {
return newProfitSharingOrdersUnfreezeResult(ProfitSharingOrdersUnfreezeResponse{}, request.ResponseBody, request, err, ApiError{})
}
// 定义
var response ProfitSharingOrdersUnfreezeResponse
err = json.Unmarshal(request.ResponseBody, &response)
// 错误
var apiError ApiError
err = json.Unmarshal(request.ResponseBody, &apiError)
return newProfitSharingOrdersUnfreezeResult(response, request.ResponseBody, request, err, apiError)
}

@ -0,0 +1,68 @@
package wechatpayopen
import (
"context"
"encoding/json"
"go.dtapp.net/gorequest"
"net/http"
)
type ProfitSharingReceiversAddResponse struct {
SubMchid string `json:"sub_mchid"` // 子商户号
Type string `json:"type"` // 分账接收方类型
Account string `json:"account"` // 分账接收方账号
Name string `json:"name,omitempty"` // 分账接收方全称
RelationType string `json:"relation_type"` // 与分账方的关系类型
CustomRelation string `json:"custom_relation,omitempty"` // 自定义的分账关系
}
type ProfitSharingReceiversAddResult struct {
Result ProfitSharingReceiversAddResponse // 结果
Body []byte // 内容
Http gorequest.Response // 请求
Err error // 错误
ApiError ApiError // 接口错误
}
func newProfitSharingReceiversAddResult(result ProfitSharingReceiversAddResponse, body []byte, http gorequest.Response, err error, apiError ApiError) *ProfitSharingReceiversAddResult {
return &ProfitSharingReceiversAddResult{Result: result, Body: body, Http: http, Err: err, ApiError: apiError}
}
// ProfitSharingReceiversAdd 添加分账接收方API
// https://pay.weixin.qq.com/wiki/doc/apiv3_partner/apis/chapter8_1_8.shtml
func (c *Client) ProfitSharingReceiversAdd(ctx context.Context, Type, account, name, relationType, customRelation string) *ProfitSharingReceiversAddResult {
// 参数
params := gorequest.NewParams()
params.Set("sub_mchid", c.GetSubMchId()) // 子商户号
params.Set("appid", c.GetSpAppid()) // 应用ID
params.Set("sub_appid", c.GetSubAppid()) // 子商户应用ID
params.Set("type", Type) // 分账接收方类型
if Type == MERCHANT_ID {
params.Set("account", account) // 商户号
params.Set("name", name) // 商户全称
}
if Type == PERSONAL_OPENID && name != "" {
params.Set("account", account) // 个人openid
params.Set("name", name) // 个人姓名
}
if Type == PERSONAL_SUB_OPENID && name != "" {
params.Set("account", account) // 个人sub_openid
params.Set("name", name) // 个人姓名
}
params.Set("relation_type", relationType) // 与分账方的关系类型
if relationType == "CUSTOM" {
params.Set("custom_relation", customRelation) // 自定义的分账关系
}
// 请求
request, err := c.request(ctx, apiUrl+"/v3/profitsharing/receivers/delete", params, http.MethodPost)
if err != nil {
return newProfitSharingReceiversAddResult(ProfitSharingReceiversAddResponse{}, request.ResponseBody, request, err, ApiError{})
}
// 定义
var response ProfitSharingReceiversAddResponse
err = json.Unmarshal(request.ResponseBody, &response)
// 错误
var apiError ApiError
err = json.Unmarshal(request.ResponseBody, &apiError)
return newProfitSharingReceiversAddResult(response, request.ResponseBody, request, err, apiError)
}

@ -0,0 +1,58 @@
package wechatpayopen
import (
"context"
"encoding/json"
"go.dtapp.net/gorequest"
"net/http"
)
type ProfitSharingReceiversDeleteResponse struct {
SubMchid string `json:"sub_mchid"` // 子商户号
Type string `json:"type"` // 分账接收方类型
Account string `json:"account"` // 分账接收方账号
}
type ProfitSharingReceiversDeleteResult struct {
Result ProfitSharingReceiversDeleteResponse // 结果
Body []byte // 内容
Http gorequest.Response // 请求
Err error // 错误
ApiError ApiError // 接口错误
}
func newProfitSharingReceiversDeleteResult(result ProfitSharingReceiversDeleteResponse, body []byte, http gorequest.Response, err error, apiError ApiError) *ProfitSharingReceiversDeleteResult {
return &ProfitSharingReceiversDeleteResult{Result: result, Body: body, Http: http, Err: err, ApiError: apiError}
}
// ProfitSharingReceiversDelete 删除分账接收方API
// https://pay.weixin.qq.com/wiki/doc/apiv3_partner/apis/chapter8_1_9.shtml
func (c *Client) ProfitSharingReceiversDelete(ctx context.Context, Type, account string) *ProfitSharingReceiversDeleteResult {
// 参数
params := gorequest.NewParams()
params.Set("sub_mchid", c.GetSubMchId()) // 子商户号
params.Set("appid", c.GetSpAppid()) // 应用ID
params.Set("sub_appid", c.GetSubAppid()) // 子商户应用ID
params.Set("type", Type) // 分账接收方类型
if Type == MERCHANT_ID {
params.Set("account", account) // 商户号
}
if Type == PERSONAL_OPENID {
params.Set("account", account) // 个人openid
}
if Type == PERSONAL_SUB_OPENID {
params.Set("account", account) // 个人sub_openid
}
// 请求
request, err := c.request(ctx, apiUrl+"/v3/profitsharing/receivers/delete", params, http.MethodPost)
if err != nil {
return newProfitSharingReceiversDeleteResult(ProfitSharingReceiversDeleteResponse{}, request.ResponseBody, request, err, ApiError{})
}
// 定义
var response ProfitSharingReceiversDeleteResponse
err = json.Unmarshal(request.ResponseBody, &response)
// 错误
var apiError ApiError
err = json.Unmarshal(request.ResponseBody, &apiError)
return newProfitSharingReceiversDeleteResult(response, request.ResponseBody, request, err, apiError)
}

@ -0,0 +1,55 @@
package wechatpayopen
import (
"context"
"encoding/json"
"go.dtapp.net/gorequest"
"net/http"
)
type ProfitSharingReturnOrdersResponse struct {
SubMchid string `json:"sub_mchid"` // 子商户号
OrderId string `json:"order_id"` // 微信分账单号
OutOrderNo string `json:"out_order_no"` // 商户分账单号
OutReturnNo string `json:"out_return_no"` // 商户回退单号
ReturnId string `json:"return_id"` // 微信回退单号
ReturnMchid string `json:"return_mchid"` // 回退商户号
Amount int `json:"amount"` // 回退金额
Description string `json:"description"` // 回退描述
Result string `json:"result"` // 回退结果
FailReason string `json:"fail_reason"` // 失败原因
CreateTime string `json:"create_time"` // 创建时间
FinishTime string `json:"finish_time"` // 完成时间
}
type ProfitSharingReturnOrdersResult struct {
Result ProfitSharingReturnOrdersResponse // 结果
Body []byte // 内容
Http gorequest.Response // 请求
Err error // 错误
ApiError ApiError // 接口错误
}
func newProfitSharingReturnOrdersResult(result ProfitSharingReturnOrdersResponse, body []byte, http gorequest.Response, err error, apiError ApiError) *ProfitSharingReturnOrdersResult {
return &ProfitSharingReturnOrdersResult{Result: result, Body: body, Http: http, Err: err, ApiError: apiError}
}
// ProfitSharingReturnOrders 请求分账回退API
// https://pay.weixin.qq.com/wiki/doc/apiv3_partner/apis/chapter8_1_3.shtml
func (c *Client) ProfitSharingReturnOrders(ctx context.Context, notMustParams ...gorequest.Params) *ProfitSharingReturnOrdersResult {
// 参数
params := gorequest.NewParamsWith(notMustParams...)
params.Set("sub_mchid", c.GetSubMchId()) // 子商户号
// 请求
request, err := c.request(ctx, apiUrl+"/v3/profitsharing/return-orders", params, http.MethodPost)
if err != nil {
return newProfitSharingReturnOrdersResult(ProfitSharingReturnOrdersResponse{}, request.ResponseBody, request, err, ApiError{})
}
// 定义
var response ProfitSharingReturnOrdersResponse
err = json.Unmarshal(request.ResponseBody, &response)
// 错误
var apiError ApiError
err = json.Unmarshal(request.ResponseBody, &apiError)
return newProfitSharingReturnOrdersResult(response, request.ResponseBody, request, err, apiError)
}

@ -0,0 +1,57 @@
package wechatpayopen
import (
"context"
"encoding/json"
"go.dtapp.net/gorequest"
"net/http"
)
type ProfitSharingReturnOrdersOutReturnNoResponse struct {
SubMchid string `json:"sub_mchid"` // 子商户号
OrderId string `json:"order_id"` // 微信分账单号
OutOrderNo string `json:"out_order_no"` // 商户分账单号
OutReturnNo string `json:"out_return_no"` // 商户回退单号
ReturnId string `json:"return_id"` // 微信回退单号
ReturnMchid string `json:"return_mchid"` // 回退商户号
Amount int `json:"amount"` // 回退金额
Description string `json:"description"` // 回退描述
Result string `json:"result"` // 回退结果
FailReason string `json:"fail_reason"` // 失败原因
CreateTime string `json:"create_time"` // 创建时间
FinishTime string `json:"finish_time"` // 完成时间
}
type ProfitSharingReturnOrdersOutReturnNoResult struct {
Result ProfitSharingReturnOrdersOutReturnNoResponse // 结果
Body []byte // 内容
Http gorequest.Response // 请求
Err error // 错误
ApiError ApiError // 接口错误
}
func newProfitSharingReturnOrdersOutReturnNoResult(result ProfitSharingReturnOrdersOutReturnNoResponse, body []byte, http gorequest.Response, err error, apiError ApiError) *ProfitSharingReturnOrdersOutReturnNoResult {
return &ProfitSharingReturnOrdersOutReturnNoResult{Result: result, Body: body, Http: http, Err: err, ApiError: apiError}
}
// ProfitSharingReturnOrdersOutReturnNo 查询分账回退结果API
// https://pay.weixin.qq.com/wiki/doc/apiv3_partner/apis/chapter8_1_4.shtml
func (c *Client) ProfitSharingReturnOrdersOutReturnNo(ctx context.Context, outReturnNo, outOrderNo string) *ProfitSharingReturnOrdersOutReturnNoResult {
// 参数
params := gorequest.NewParams()
params.Set("sub_mchid", c.GetSubMchId()) // 子商户号
params.Set("out_return_no", outReturnNo) // 商户回退单号
params.Set("out_order_no", outOrderNo) // 商户分账单号
// 请求
request, err := c.request(ctx, apiUrl+"/v3/profitsharing/return-orders/"+outReturnNo, params, http.MethodGet)
if err != nil {
return newProfitSharingReturnOrdersOutReturnNoResult(ProfitSharingReturnOrdersOutReturnNoResponse{}, request.ResponseBody, request, err, ApiError{})
}
// 定义
var response ProfitSharingReturnOrdersOutReturnNoResponse
err = json.Unmarshal(request.ResponseBody, &response)
// 错误
var apiError ApiError
err = json.Unmarshal(request.ResponseBody, &apiError)
return newProfitSharingReturnOrdersOutReturnNoResult(response, request.ResponseBody, request, err, apiError)
}

@ -0,0 +1,44 @@
package wechatpayopen
import (
"context"
"encoding/json"
"go.dtapp.net/gorequest"
"net/http"
)
type ProfitSharingTransactionsAmountsResponse struct {
TransactionId string `json:"transaction_id"` // 微信订单号
UnsplitAmount int `json:"unsplit_amount"` // 订单剩余待分金额
}
type ProfitSharingTransactionsAmountsResult struct {
Result ProfitSharingTransactionsAmountsResponse // 结果
Body []byte // 内容
Http gorequest.Response // 请求
Err error // 错误
ApiError ApiError // 接口错误
}
func newProfitSharingTransactionsAmountsResult(result ProfitSharingTransactionsAmountsResponse, body []byte, http gorequest.Response, err error, apiError ApiError) *ProfitSharingTransactionsAmountsResult {
return &ProfitSharingTransactionsAmountsResult{Result: result, Body: body, Http: http, Err: err, ApiError: apiError}
}
// ProfitSharingTransactionsAmounts 查询剩余待分金额API
// https://pay.weixin.qq.com/wiki/doc/apiv3_partner/apis/chapter8_1_6.shtml
func (c *Client) ProfitSharingTransactionsAmounts(ctx context.Context, transactionId string) *ProfitSharingTransactionsAmountsResult {
// 参数
params := gorequest.NewParams()
// 请求
request, err := c.request(ctx, apiUrl+"/v3/profitsharing/transactions/"+transactionId, params, http.MethodGet)
if err != nil {
return newProfitSharingTransactionsAmountsResult(ProfitSharingTransactionsAmountsResponse{}, request.ResponseBody, request, err, ApiError{})
}
// 定义
var response ProfitSharingTransactionsAmountsResponse
err = json.Unmarshal(request.ResponseBody, &response)
// 错误
var apiError ApiError
err = json.Unmarshal(request.ResponseBody, &apiError)
return newProfitSharingTransactionsAmountsResult(response, request.ResponseBody, request, err, apiError)
}
Loading…
Cancel
Save