Compare commits

...

6 Commits

Author SHA1 Message Date
wangfuduo af3a8435b9 feat: refund to balance 2026-03-10 11:20:30 +08:00
jiangyong 79dd16de58 default 2026-03-09 12:38:49 +08:00
jiangyong 587e29ccd9 outTradeNo 2026-01-01 01:08:18 +08:00
jiangyong 7ca2710e16 channelg 2025-12-30 17:07:32 +08:00
jiangyong 4642e7e686 tansfer 2025-12-30 17:05:19 +08:00
wujiefeng 00f3429c84 Merge pull request 'feat: 公众号登录 共享access_token方案' (#3) from wfd into master
Reviewed-on: #3
2025-11-17 11:25:02 +08:00
3 changed files with 61 additions and 4 deletions

View File

@ -24,6 +24,7 @@ type Form struct {
Name string `json:"name"` //表单名称
Key string `json:"key"` //表单KEY
Value interface{} `json:"value"` //表单值
Default interface{} `json:"default"` //默认值
Disable bool `json:"disable,omitempty"` //是否禁用
Tips string `json:"tips"` //表单提示
Option []*FormOption `json:"option"` //表单选项radio和checkbox需要
@ -50,6 +51,8 @@ func NewFroms(tplConfig, saveConfig string) ([]*Form, error) {
for _, form := range forms {
if _, ok := cfg[form.Key]; ok {
form.Value = cfg[form.Key]
} else {
form.Value = form.Default
}
}
return forms, err

View File

@ -4,8 +4,10 @@ import (
"encoding/json"
"errors"
"fmt"
"git.u8t.cn/open/gosdk/util"
"net/url"
"git.u8t.cn/open/gosdk/util"
"git.u8t.cn/open/goutil"
)
var (
@ -177,7 +179,7 @@ func (p *Pay) RefundOrder(req *RefundOrderReq) error {
errors.New("outTradeNo is nil")
}
reqUrl := fmt.Sprintf("%s/api/pay/order?outTradeNo=%s&reason=%s&refundFee=%d", p.address, req.OutTradeNo, url.QueryEscape(req.Reason), req.RefundFee)
reqUrl := fmt.Sprintf("%s/api/pay/order?outTradeNo=%s&reason=%s&refundFee=%d&refundTarget=%s", p.address, req.OutTradeNo, url.QueryEscape(req.Reason), req.RefundFee, req.RefundTarget)
result, err := util.HttpDelete(reqUrl, map[string]string{
"x-token": p.token,
})
@ -219,3 +221,27 @@ func (p *Pay) RefundPartnerOrder(req *RefundOrderReq) error {
return nil
}
func (p *Pay) Transfer(req *TransferReq) error {
if err := req.Check(); err != nil {
return err
}
reqUrl := fmt.Sprintf("%s/api/pay/transfer?", p.address)
result, err := util.HttpPostJson(reqUrl, map[string]string{
"x-token": p.token,
}, []byte(goutil.EncodeJSON(req)))
if err != nil {
return err
}
var rsp CommonResponse
if err := json.Unmarshal([]byte(result), &rsp); err != nil {
return err
}
if rsp.Code != 0 {
return fmt.Errorf("%d:%s", rsp.Code, rsp.Message)
}
return nil
}

View File

@ -1,5 +1,7 @@
package unify
import "errors"
type OrderUser struct {
UserId string `json:"userId"`
UserName string `json:"userName"`
@ -46,9 +48,19 @@ type CreatePartnerOrderReq struct {
}
type RefundOrderReq struct {
OutTradeNo string `json:"outTradeNo"`
Reason string `json:"reason,omitempty"`
RefundFee int64 `json:"refundFee,omitempty"`
RefundTarget string `json:"refundTarget,omitempty"`
}
type TransferReq struct {
PayAmount int64 `json:"payAmount"`
PayType string `json:"payType"`
PayTitle string `json:"payTitle"`
PayChannel string `json:"payChannel"`
UserId string `json:"userId"`
OutTradeNo string `json:"outTradeNo"`
Reason string `json:"reason,omitempty"`
RefundFee int64 `json:"refundFee,omitempty"`
}
type CommonResponse struct {
@ -56,3 +68,19 @@ type CommonResponse struct {
Message string `json:"message"`
Data map[string]interface{} `json:"data"`
}
func (r *TransferReq) Check() error {
if r.PayTitle == "" {
return errors.New("PayTitle is nil")
}
if r.PayType == "" {
return errors.New("PayType is nil")
}
if r.UserId == "" {
return errors.New("UserId is nil")
}
if r.PayAmount < 0 {
return errors.New("PayAmount is nil")
}
return nil
}