diff --git a/service/wechatopen/tcb.wxpaylist.go b/service/wechatopen/tcb.wxpaylist.go new file mode 100644 index 00000000..ffe23624 --- /dev/null +++ b/service/wechatopen/tcb.wxpaylist.go @@ -0,0 +1,55 @@ +package wechatopen + +import ( + "encoding/json" + "go.dtapp.net/library/utils/gorequest" + "net/http" +) + +type TckWxPayListResponse struct { + Errcode int `json:"errcode"` + Errmsg string `json:"errmsg"` + List []struct { + MerchantCode string `json:"merchant_code"` + MerchantName string `json:"merchant_name"` + CompanyName string `json:"company_name"` + MchRelationState string `json:"mch_relation_state"` + JsapiAuthState string `json:"jsapi_auth_state"` + RefundAuthState string `json:"refund_auth_state"` + } `json:"list"` +} + +type TckWxPayListResult struct { + Result TckWxPayListResponse // 结果 + Body []byte // 内容 + Http gorequest.Response // 请求 + Err error // 错误 +} + +func newTckWxPayListResult(result TckWxPayListResponse, body []byte, http gorequest.Response, err error) *TckWxPayListResult { + return &TckWxPayListResult{Result: result, Body: body, Http: http, Err: err} +} + +// TckWxPayList 获取授权绑定的商户号列表 +// https://developers.weixin.qq.com/doc/oplatform/openApi/OpenApiDoc/cloudbase-common/wechatpay/getWechatPayList.html +func (c *Client) TckWxPayList() *TckWxPayListResult { + // 参数 + params := gorequest.NewParams() + // 请求 + request, err := c.request(apiUrl+"/tcb/wxpaylist?access_token="+c.GetComponentAccessToken(), params, http.MethodPost) + // 定义 + var response TckWxPayListResponse + err = json.Unmarshal(request.ResponseBody, &response) + return newTckWxPayListResult(response, request.ResponseBody, request, err) +} + +// ErrcodeInfo 错误描述 +func (resp *TckWxPayListResult) ErrcodeInfo() string { + switch resp.Result.Errcode { + case 85064: + return "找不到草稿" + case 85065: + return "模板库已满" + } + return "系统繁忙" +} diff --git a/service/wechatpayopen/pay.partner.transactions.h5.go b/service/wechatpayopen/pay.partner.transactions.h5.go new file mode 100644 index 00000000..f644a032 --- /dev/null +++ b/service/wechatpayopen/pay.partner.transactions.h5.go @@ -0,0 +1,46 @@ +package wechatpayopen + +import ( + "encoding/json" + "go.dtapp.net/library/utils/gorequest" + "net/http" +) + +type PayPartnerTransactionsH5Response struct { + H5Url string `json:"h5_url"` // 支付跳转链接 +} + +type PayPartnerTransactionsH5Result struct { + Result PayPartnerTransactionsH5Response // 结果 + Body []byte // 内容 + Http gorequest.Response // 请求 + Err error // 错误 + ApiError ApiError // 接口错误 +} + +func newPayPartnerTransactionsH5Result(result PayPartnerTransactionsH5Response, body []byte, http gorequest.Response, err error, apiError ApiError) *PayPartnerTransactionsH5Result { + return &PayPartnerTransactionsH5Result{Result: result, Body: body, Http: http, Err: err, ApiError: apiError} +} + +// PayPartnerTransactionsH5 H5下单API +// https://pay.weixin.qq.com/wiki/doc/apiv3_partner/apis/chapter4_3_1.shtml +func (c *Client) PayPartnerTransactionsH5(notMustParams ...gorequest.Params) *PayPartnerTransactionsH5Result { + // 参数 + params := gorequest.NewParamsWith(notMustParams...) + params.Set("sp_appid", c.config.SpAppid) // 服务商应用ID + params.Set("sp_mchid", c.config.SpMchId) // 服务商户号 + params.Set("sub_appid", c.config.SubAppid) // 子商户应用ID + params.Set("sub_mchid", c.config.SubMchId) // 子商户号 + // 请求 + request, err := c.request(apiUrl+"/v3/pay/partner/transactions/h5", params, http.MethodPost) + if err != nil { + return newPayPartnerTransactionsH5Result(PayPartnerTransactionsH5Response{}, request.ResponseBody, request, err, ApiError{}) + } + // 结果 + var response PayPartnerTransactionsH5Response + err = json.Unmarshal(request.ResponseBody, &response) + // 错误 + var apiError ApiError + err = json.Unmarshal(request.ResponseBody, &apiError) + return newPayPartnerTransactionsH5Result(response, request.ResponseBody, request, err, apiError) +} diff --git a/service/wechatpayopen/pay.partner.transactions.jsapi.go b/service/wechatpayopen/pay.partner.transactions.jsapi.go index 66a9a5f6..33786fc1 100644 --- a/service/wechatpayopen/pay.partner.transactions.jsapi.go +++ b/service/wechatpayopen/pay.partner.transactions.jsapi.go @@ -11,14 +11,15 @@ type PayPartnerTransactionsJsapiResponse struct { } type PayPartnerTransactionsJsapiResult struct { - Result PayPartnerTransactionsJsapiResponse // 结果 - Body []byte // 内容 - Http gorequest.Response // 请求 - Err error // 错误 + Result PayPartnerTransactionsJsapiResponse // 结果 + Body []byte // 内容 + Http gorequest.Response // 请求 + Err error // 错误 + ApiError ApiError // 接口错误 } -func newPayPartnerTransactionsJsapiResult(result PayPartnerTransactionsJsapiResponse, body []byte, http gorequest.Response, err error) *PayPartnerTransactionsJsapiResult { - return &PayPartnerTransactionsJsapiResult{Result: result, Body: body, Http: http, Err: err} +func newPayPartnerTransactionsJsapiResult(result PayPartnerTransactionsJsapiResponse, body []byte, http gorequest.Response, err error, apiError ApiError) *PayPartnerTransactionsJsapiResult { + return &PayPartnerTransactionsJsapiResult{Result: result, Body: body, Http: http, Err: err, ApiError: apiError} } // PayPartnerTransactionsJsapi JSAPI下单 @@ -33,10 +34,13 @@ func (c *Client) PayPartnerTransactionsJsapi(notMustParams ...gorequest.Params) // 请求 request, err := c.request(apiUrl+"/v3/pay/partner/transactions/jsapi", params, http.MethodPost) if err != nil { - return newPayPartnerTransactionsJsapiResult(PayPartnerTransactionsJsapiResponse{}, request.ResponseBody, request, err) + return newPayPartnerTransactionsJsapiResult(PayPartnerTransactionsJsapiResponse{}, request.ResponseBody, request, err, ApiError{}) } - // 定义 + // 结果 var response PayPartnerTransactionsJsapiResponse err = json.Unmarshal(request.ResponseBody, &response) - return newPayPartnerTransactionsJsapiResult(response, request.ResponseBody, request, err) + // 错误 + var apiError ApiError + err = json.Unmarshal(request.ResponseBody, &apiError) + return newPayPartnerTransactionsJsapiResult(response, request.ResponseBody, request, err, apiError) }