From daa87579aee0813cd5a1763a8188edf27dd8cb2e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Tue, 3 Mar 2020 16:12:38 +0800 Subject: [PATCH] =?UTF-8?q?=E9=80=9A=E8=81=94=E5=AE=9D=E6=94=AF=E4=BB=98?= =?UTF-8?q?=E5=85=B6=E4=BB=96=E6=94=AF=E4=BB=98=E6=8E=A5=E5=8F=A3=E6=96=B0?= =?UTF-8?q?=E5=A2=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- platformapi/tonglianpayapi/tonglianpayapi.go | 38 ++++++++++++++++--- .../tonglianpayapi/tonglianpayapi_test.go | 13 ++++++- 2 files changed, 45 insertions(+), 6 deletions(-) diff --git a/platformapi/tonglianpayapi/tonglianpayapi.go b/platformapi/tonglianpayapi/tonglianpayapi.go index 3f2f0228..ce24df46 100644 --- a/platformapi/tonglianpayapi/tonglianpayapi.go +++ b/platformapi/tonglianpayapi/tonglianpayapi.go @@ -13,12 +13,15 @@ import ( ) const ( - prodURL = "https://vsp.allinpay.com/apiweb" - sepcAction = "unitorder/pay" + prodURL = "https://vsp.allinpay.com/apiweb" + prodURL2 = "https://syb.allinpay.com/apiweb" + sepcAction = "unitorder/pay" + sepcAction2 = "h5unionpay/unionorder" sigKey = "sign" PayTypeWxXcx = "W06" PayTypeZfbApp = "A03" + PayTypeZfbJS = "A02" ResponseCodeSuccess = "SUCCESS" ResponseCodeFail = "FAIL" @@ -97,6 +100,15 @@ type PayRefundResult struct { TrxCode string `json:"trxCode"` } +type CreateH5UnitorderOrderParam struct { + Trxamt int `json:"trxamt"` //交易金额 单位为分 + Reqsn string `json:"reqsn"` //商户交易单号 + NotifyUrl string `json:"notifyUrl"` //接收微信支付异步通知回调地址,通知url必须为直接可访问的url,不能携带参数。 + Charset string `json:"charset"` + Returl string `json:"returl"` + Body string `json:"body"` +} + func New(appID, appKey, cusID, subAppid string, config ...*platformapi.APIConfig) *API { curConfig := platformapi.DefAPIConfig if len(config) > 0 { @@ -138,12 +150,18 @@ func (a *API) AccessAPI(action string, bizParams map[string]interface{}) (retVal params = utils.MergeMaps(params, bizParams) if action == sepcAction { // params["paytype"] = payType - params["sub_appid"] = a.subAppid + if bizParams["paytype"] == PayTypeWxXcx { + params["sub_appid"] = a.subAppid + } } signStr := a.signParam(params) params["sign"] = signStr - fullURL := utils.GenerateGetURL(prodURL, action, nil) - + var fullURL string + if action == sepcAction2 { + fullURL = utils.GenerateGetURL(prodURL2, action, nil) + } else { + fullURL = utils.GenerateGetURL(prodURL, action, nil) + } err = platformapi.AccessPlatformAPIWithRetry(a.client, func() *http.Request { request, _ := http.NewRequest(http.MethodPost, fullURL, strings.NewReader(utils.Map2URLValues(params).Encode())) @@ -197,3 +215,13 @@ func (a *API) PayRefund(param *PayRefundParam) (result *PayRefundResult, err err } return result, err } + +func (a *API) CreateH5UnitorderOrder(param *CreateH5UnitorderOrderParam) (err error) { + params := make(map[string]interface{}) + params["trxamt"] = param.Trxamt + params["reqsn"] = param.Reqsn + params["charset"] = param.Charset + params["body"] = param.Body + _, err = a.AccessAPI(sepcAction2, params) + return err +} diff --git a/platformapi/tonglianpayapi/tonglianpayapi_test.go b/platformapi/tonglianpayapi/tonglianpayapi_test.go index 57f66a9c..bf4129d3 100644 --- a/platformapi/tonglianpayapi/tonglianpayapi_test.go +++ b/platformapi/tonglianpayapi/tonglianpayapi_test.go @@ -23,13 +23,24 @@ func init() { func TestCreateUnitorderOrder(t *testing.T) { result, err := api.CreateUnitorderOrder(&CreateUnitorderOrderParam{ - Reqsn: "88320316370927", + Reqsn: "88320943177180", Trxamt: 10, NotifyUrl: "http://callback.test.jxc4.com/tlpay/msg/", Acct: "ojWb10M_8kV8NT0aZJa6A5umG1c8", + PayType: PayTypeZfbJS, }) if err != nil { t.Fatal(err) } t.Log(utils.Format4Output(result, false)) } + +func TestCreateH5UnitorderOrder(t *testing.T) { + api.CreateH5UnitorderOrder(&CreateH5UnitorderOrderParam{ + Reqsn: "88320943177180", + Trxamt: 1, + NotifyUrl: "http://callback.test.jxc4.com/tlpay/msg/", + Charset: "UTF-8", + Body: "test", + }) +}