fix:
This commit is contained in:
parent
81e54ea039
commit
a01e8fdfd2
|
@ -437,8 +437,7 @@ func UpgradeMember(c *gin.Context) {
|
||||||
RespJson(c, status.InternalServerError, nil)
|
RespJson(c, status.InternalServerError, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
//totalFee = (totalFee / 100) * 100
|
|
||||||
|
|
||||||
if req.UserCouponId != 0 {
|
if req.UserCouponId != 0 {
|
||||||
var coupon model.UserCoupon
|
var coupon model.UserCoupon
|
||||||
err = model.NewUserCouponQuerySet(model.DB).IDEq(req.UserCouponId).One(&coupon)
|
err = model.NewUserCouponQuerySet(model.DB).IDEq(req.UserCouponId).One(&coupon)
|
||||||
|
@ -879,6 +878,7 @@ func UserMemberExpireDelayingPay(c *gin.Context) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//userMemberExpireDelay.DelayAmount = userMemberExpireDelay.DelayAmount / 100 // 测试TODO
|
||||||
//webPay, err := wxpay.WebPay(orderSn, uint32(userMemberExpireDelay.DelayAmount), user.WxOpenID, "N", wxpay.WxPayMemberExpireDelay, configInfo.NotifyUrl)
|
//webPay, err := wxpay.WebPay(orderSn, uint32(userMemberExpireDelay.DelayAmount), user.WxOpenID, "N", wxpay.WxPayMemberExpireDelay, configInfo.NotifyUrl)
|
||||||
//if err != nil {
|
//if err != nil {
|
||||||
// logger.Error(errors.New("WebPay err"))
|
// logger.Error(errors.New("WebPay err"))
|
||||||
|
|
|
@ -558,13 +558,20 @@ func ShareCardRetrieveCancel(c *gin.Context) {
|
||||||
orderRefundJson, _ := json.Marshal(&orderRefund)
|
orderRefundJson, _ := json.Marshal(&orderRefund)
|
||||||
fmt.Println("订单取消 orderRefundJson:", string(orderRefundJson))
|
fmt.Println("订单取消 orderRefundJson:", string(orderRefundJson))
|
||||||
//err = wxpay.WxPayOrderRefund(orderRefund)
|
//err = wxpay.WxPayOrderRefund(orderRefund)
|
||||||
err = wxpay.TransactionOrderRefund(orderRefund)
|
err = wxpay.HmRefundTransaction(orderRefund)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Error("err:", err)
|
logger.Error("err:", err)
|
||||||
RespJson(c, status.InternalServerError, nil)
|
RespJson(c, status.InternalServerError, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//err = wxpay.TransactionOrderRefund(orderRefund)
|
||||||
|
//if err != nil {
|
||||||
|
// logger.Error("err:", err)
|
||||||
|
// RespJson(c, status.InternalServerError, nil)
|
||||||
|
// return
|
||||||
|
//}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
begin := model.DB.Begin()
|
begin := model.DB.Begin()
|
||||||
|
|
|
@ -60,7 +60,7 @@ const (
|
||||||
HmPayMerchantId = "664403000030115"
|
HmPayMerchantId = "664403000030115"
|
||||||
HmWxSubMerchantId = "546017470"
|
HmWxSubMerchantId = "546017470"
|
||||||
//HmPayUnifiedOrderUrl = "https://hmpay.sandpay.com.cn/gateway/api"
|
//HmPayUnifiedOrderUrl = "https://hmpay.sandpay.com.cn/gateway/api"
|
||||||
HmPayUnifiedOrderUrl = "https://hmpay.sandpay.com.cn/gateway/api"
|
HmPayApiUrl = "https://hmpay.sandpay.com.cn/gateway/api"
|
||||||
)
|
)
|
||||||
|
|
||||||
//web 微信支付
|
//web 微信支付
|
||||||
|
@ -679,6 +679,90 @@ func TransactionOrderRefund(orderRefund OrderRefund) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type HmRefundBizContent struct {
|
||||||
|
OutOrderNo string `json:"out_order_no"`
|
||||||
|
RefundAmount float64 `json:"refund_amount"`
|
||||||
|
RefundRequestNo string `json:"refund_request_no"` //商户退款请求号
|
||||||
|
StoreId string `json:"store_id"`
|
||||||
|
//ExtendParams string `json:"extend_params"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func HmRefundTransaction(orderRefund OrderRefund) error {
|
||||||
|
now := time.Now().Local()
|
||||||
|
//strTime := fmt.Sprintf("%04d%02d%02d%02d%02d%02d", now.Year(), now.Month(), now.Day(), now.Hour(),
|
||||||
|
// now.Minute(), now.Second())
|
||||||
|
//expireTime := now.Add(time.Hour * 3)
|
||||||
|
//strExpireTime := fmt.Sprintf("%04d%02d%02d%02d%02d%02d", expireTime.Year(), expireTime.Month(),
|
||||||
|
// expireTime.Day(), expireTime.Hour(), expireTime.Minute(), expireTime.Second())
|
||||||
|
nonce := utils.GenRandStr(NonceStringLength)
|
||||||
|
|
||||||
|
//if notifyUrl == "" {
|
||||||
|
// logger.Error("NotifyUrl is null")
|
||||||
|
// return nil, errors.New("NotifyUrl is null")
|
||||||
|
//}
|
||||||
|
|
||||||
|
unifiedOrderReq := HmJsPayUnifiedOrderReq{}
|
||||||
|
publicPara := HmPayPublicPara{
|
||||||
|
AppId: HmPayMerchantId,
|
||||||
|
//SubAppId: HmWxSubMerchantId,
|
||||||
|
Method: "trade.refund",
|
||||||
|
//Charset: "UTF-8",
|
||||||
|
SignType: "RSA",
|
||||||
|
Sign: "",
|
||||||
|
Timestamp: now.Format(TimeFormat),
|
||||||
|
Nonce: nonce,
|
||||||
|
//Nonce: fmt.Sprintf("%d", time.Now().UnixNano()),
|
||||||
|
//Version: "1.0.0",
|
||||||
|
//Format: "JSON",
|
||||||
|
}
|
||||||
|
|
||||||
|
biz := HmRefundBizContent{
|
||||||
|
//OutOrderNo: orderRefund.OutRefundNo,
|
||||||
|
OutOrderNo: orderRefund.OutTradeNo,
|
||||||
|
RefundAmount: float64(orderRefund.Amount.Refund) / 100,
|
||||||
|
//RefundRequestNo: orderRefund.OutTradeNo,
|
||||||
|
RefundRequestNo: orderRefund.OutRefundNo,
|
||||||
|
StoreId: "100001",
|
||||||
|
}
|
||||||
|
unifiedOrderReq.HmPayPublicPara = publicPara
|
||||||
|
|
||||||
|
bizString, err := json.Marshal(&biz)
|
||||||
|
if err != nil {
|
||||||
|
logger.Error("marshal biz err:", err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
unifiedOrderReq.HmPayPublicPara.BizContent = string(bizString)
|
||||||
|
m, err := struct2Map(unifiedOrderReq)
|
||||||
|
if err != nil {
|
||||||
|
logger.Error(err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
//mJson, _ := json.MarshalIndent(&m, "", " ")
|
||||||
|
//fmt.Println("mJson:", string(mJson))
|
||||||
|
|
||||||
|
sign, err := GenHmPaySign(m)
|
||||||
|
if err != nil {
|
||||||
|
logger.Error(err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
unifiedOrderReq.Sign = sign
|
||||||
|
|
||||||
|
//unifiedOrderReqJson, _ := json.Marshal(&unifiedOrderReq)
|
||||||
|
//fmt.Println("unifiedOrderReqJson:", string(unifiedOrderReqJson))
|
||||||
|
|
||||||
|
unifiedOrderResp, err := HmPayRefundOrder(unifiedOrderReq)
|
||||||
|
if err != nil {
|
||||||
|
logger.Errorf("hm pay refund order error %#v", err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
unifiedOrderRespJson, _ := json.Marshal(&unifiedOrderResp)
|
||||||
|
fmt.Println("unifiedOrderRespJson:", string(unifiedOrderRespJson))
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func PayOrderRefund(orderRefund OrderRefund) error {
|
func PayOrderRefund(orderRefund OrderRefund) error {
|
||||||
para, err := json.Marshal(&orderRefund)
|
para, err := json.Marshal(&orderRefund)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -1073,7 +1157,7 @@ func HmJsPayUnifiedOrder(orderId string, totalFee uint32, openId, notifyUrl stri
|
||||||
}
|
}
|
||||||
|
|
||||||
biz := HmPayBizContent{
|
biz := HmPayBizContent{
|
||||||
Body: "会员费",
|
Body: "服务费",
|
||||||
MerAppId: WxAppId,
|
MerAppId: WxAppId,
|
||||||
MerBuyerId: openId,
|
MerBuyerId: openId,
|
||||||
CreateIp: clientIp,
|
CreateIp: clientIp,
|
||||||
|
@ -1369,7 +1453,53 @@ func HmPayUnifiedOrder(r HmJsPayUnifiedOrderReq) (HmPayUnifiedOrderRsp, error) {
|
||||||
|
|
||||||
fmt.Println("data json:", string(data))
|
fmt.Println("data json:", string(data))
|
||||||
client := http.Client{}
|
client := http.Client{}
|
||||||
req, err := http.NewRequest("POST", HmPayUnifiedOrderUrl, bytes.NewBuffer(data))
|
req, err := http.NewRequest("POST", HmPayApiUrl, bytes.NewBuffer(data))
|
||||||
|
if err != nil {
|
||||||
|
logger.Error(err)
|
||||||
|
return hmPayUnifiedOrderRsp, err
|
||||||
|
}
|
||||||
|
req.Header.Set("Content-Type", "application/json; charset=utf-8")
|
||||||
|
//req.Header.Set("Content-Type", "application/json")
|
||||||
|
|
||||||
|
resp, err := client.Do(req)
|
||||||
|
if err != nil {
|
||||||
|
logger.Error(err)
|
||||||
|
return hmPayUnifiedOrderRsp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
body, err := ioutil.ReadAll(resp.Body)
|
||||||
|
if err != nil {
|
||||||
|
logger.Error(err)
|
||||||
|
return hmPayUnifiedOrderRsp, err
|
||||||
|
}
|
||||||
|
fmt.Println("body:", string(body))
|
||||||
|
|
||||||
|
defer resp.Body.Close()
|
||||||
|
|
||||||
|
err = json.Unmarshal(body, &hmPayUnifiedOrderRsp)
|
||||||
|
if err != nil {
|
||||||
|
logger.Error("hmPayUnifiedOrderRsp err:", err)
|
||||||
|
return hmPayUnifiedOrderRsp, err
|
||||||
|
}
|
||||||
|
if hmPayUnifiedOrderRsp.Code != "200" {
|
||||||
|
return hmPayUnifiedOrderRsp, errors.New(hmPayUnifiedOrderRsp.Msg)
|
||||||
|
}
|
||||||
|
|
||||||
|
return hmPayUnifiedOrderRsp, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func HmPayRefundOrder(r HmJsPayUnifiedOrderReq) (HmPayUnifiedOrderRsp, error) {
|
||||||
|
var hmPayUnifiedOrderRsp HmPayUnifiedOrderRsp
|
||||||
|
|
||||||
|
data, err := json.Marshal(r)
|
||||||
|
if err != nil {
|
||||||
|
logger.Error(err)
|
||||||
|
return hmPayUnifiedOrderRsp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
fmt.Println("data json:", string(data))
|
||||||
|
client := http.Client{}
|
||||||
|
req, err := http.NewRequest("POST", HmPayApiUrl, bytes.NewBuffer(data))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Error(err)
|
logger.Error(err)
|
||||||
return hmPayUnifiedOrderRsp, err
|
return hmPayUnifiedOrderRsp, err
|
||||||
|
|
|
@ -52,10 +52,14 @@ func TestWxPayTransactionOrderClose(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestHmJsPayUnifiedOrder(t *testing.T) {
|
func TestHmJsPayUnifiedOrder(t *testing.T) {
|
||||||
order, err := HmJsPayUnifiedOrder("84FDC15BCC", 2, "ohuHh4riVVPxwKHrYHsWwZRpxVMk", "N", WxPayRentCard, "https://dev.switch.deovo.com:8004/api/v1/wxpay/notice")
|
order, err := HmJsPayUnifiedOrder("84FDC15BCC", 2, "ohuHh4riVVPxwKHrYHsWwZRpxVMk", "https://dev.switch.deovo.com:8004/api/v1/wxpay/notice")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println("err:", err)
|
fmt.Println("err:", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
fmt.Println("order:", order)
|
fmt.Println("order:", order)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestHmRefundTransaction(t *testing.T) {
|
||||||
|
|
||||||
|
}
|
|
@ -2007,12 +2007,13 @@ func TestNameScanInvite(t *testing.T) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 模拟邀请数据
|
||||||
func TestNewUser(t *testing.T) {
|
func TestNewUser(t *testing.T) {
|
||||||
InitTestDB()
|
InitTestDB()
|
||||||
DB = DBDev
|
DB = DBDev
|
||||||
|
|
||||||
InviteUid := uint32(63192613)
|
InviteUid := uint32(63192613)
|
||||||
Uid := uint32(45321263)
|
Uid := uint32(41186164)
|
||||||
user := GetUserByUid(Uid)
|
user := GetUserByUid(Uid)
|
||||||
nowTime := time.Now()
|
nowTime := time.Now()
|
||||||
|
|
||||||
|
@ -2124,6 +2125,20 @@ func TestHmJsPayUnifiedOrder(t *testing.T) {
|
||||||
fmt.Println("order:", order)
|
fmt.Println("order:", order)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestHmRefundTransaction(t *testing.T) {
|
||||||
|
refund := wxpay.OrderRefund{
|
||||||
|
OutTradeNo: "84FDC15BCE",
|
||||||
|
OutRefundNo: "861C878AB8",
|
||||||
|
NotifyUrl: "",
|
||||||
|
Amount: wxpay.OrderRefundAmount{
|
||||||
|
Refund: 15,
|
||||||
|
Total: 15,
|
||||||
|
Currency: "",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
wxpay.HmRefundTransaction(refund)
|
||||||
|
}
|
||||||
|
|
||||||
func TestUnicode(t *testing.T) {
|
func TestUnicode(t *testing.T) {
|
||||||
str := `{"msg":"\u8be5\u5355\u53f7\u6682\u65e0\u7269\u6d41\u8fdb\u5c55\uff0c\u8bf7\u7a0d\u540e\u518d\u8bd5\uff0c\u6216\u68c0\u67e5\u516c\u53f8\u548c\u5355\u53f7\u662f\u5426\u6709\u8bef\u3002","status":"-3","error_code":"13","data":{"info":{"status":"0","msg":"\u8be5\u5355\u53f7\u6682\u65e0\u7269\u6d41\u8fdb\u5c55\uff0c\u8bf7\u7a0d\u540e\u518d\u8bd5\uff0c\u6216\u68c0\u67e5\u516c\u53f8\u548c\u5355\u53f7\u662f\u5426\u6709\u8bef\u3002","_source_com":""},"com":"zhongtong","company":{"url":"http:\/\/www.zto.com\/?from=openv","fullname":"\u4e2d\u901a\u5feb\u9012","shortname":"\u4e2d\u901a","icon":{"id":"29","smallurl":"https:\/\/ss0.baidu.com\/6ONWsjip0QIZ8tyhnq\/it\/u=3682653099,2524883494&fm=58","smallpos":"0,496","middleurl":"https:\/\/ss2.baidu.com\/6ONYsjip0QIZ8tyhnq\/it\/u=1078213688,3146076104&fm=58","middlepos":"0,324","normal":"https:\/\/ss0.baidu.com\/6ONWsjip0QIZ8tyhnq\/it\/u=1022514261,1855787563&fm=58"},"website":{"title":"www.zto.com","url":"http:\/\/www.zto.com"},"tel":"95311","auxiliary":[{"title":"\u7f51\u70b9\u67e5\u8be2","url":"http:\/\/www.zto.com\/GuestService\/SiteQuery"},{"title":"\u7f51\u4e0a\u5bc4\u4ef6","url":"http:\/\/my.zto.com\/order"},{"title":"\u4ef7\u683c\u67e5\u8be2","url":"http:\/\/www.zto.com\/GuestService\/PriceQuery"},{"title":"\u4e2d\u901a\u4f18\u9009","url":"http:\/\/www.ztbest.com"}]},"source":{"logo":"https:\/\/ss2.baidu.com\/6ONYsjip0QIZ8tyhnq\/it\/u=1429564979,1787167512&fm=58","title":"\u6570\u636e\u6765\u81ea\u5feb\u9012100","url":"http:\/\/www.kuaidi100.com\/?from=baidu_ala","name":"\u5feb\u9012100","showName":"\u5feb\u9012100"}}}`
|
str := `{"msg":"\u8be5\u5355\u53f7\u6682\u65e0\u7269\u6d41\u8fdb\u5c55\uff0c\u8bf7\u7a0d\u540e\u518d\u8bd5\uff0c\u6216\u68c0\u67e5\u516c\u53f8\u548c\u5355\u53f7\u662f\u5426\u6709\u8bef\u3002","status":"-3","error_code":"13","data":{"info":{"status":"0","msg":"\u8be5\u5355\u53f7\u6682\u65e0\u7269\u6d41\u8fdb\u5c55\uff0c\u8bf7\u7a0d\u540e\u518d\u8bd5\uff0c\u6216\u68c0\u67e5\u516c\u53f8\u548c\u5355\u53f7\u662f\u5426\u6709\u8bef\u3002","_source_com":""},"com":"zhongtong","company":{"url":"http:\/\/www.zto.com\/?from=openv","fullname":"\u4e2d\u901a\u5feb\u9012","shortname":"\u4e2d\u901a","icon":{"id":"29","smallurl":"https:\/\/ss0.baidu.com\/6ONWsjip0QIZ8tyhnq\/it\/u=3682653099,2524883494&fm=58","smallpos":"0,496","middleurl":"https:\/\/ss2.baidu.com\/6ONYsjip0QIZ8tyhnq\/it\/u=1078213688,3146076104&fm=58","middlepos":"0,324","normal":"https:\/\/ss0.baidu.com\/6ONWsjip0QIZ8tyhnq\/it\/u=1022514261,1855787563&fm=58"},"website":{"title":"www.zto.com","url":"http:\/\/www.zto.com"},"tel":"95311","auxiliary":[{"title":"\u7f51\u70b9\u67e5\u8be2","url":"http:\/\/www.zto.com\/GuestService\/SiteQuery"},{"title":"\u7f51\u4e0a\u5bc4\u4ef6","url":"http:\/\/my.zto.com\/order"},{"title":"\u4ef7\u683c\u67e5\u8be2","url":"http:\/\/www.zto.com\/GuestService\/PriceQuery"},{"title":"\u4e2d\u901a\u4f18\u9009","url":"http:\/\/www.ztbest.com"}]},"source":{"logo":"https:\/\/ss2.baidu.com\/6ONYsjip0QIZ8tyhnq\/it\/u=1429564979,1787167512&fm=58","title":"\u6570\u636e\u6765\u81ea\u5feb\u9012100","url":"http:\/\/www.kuaidi100.com\/?from=baidu_ala","name":"\u5feb\u9012100","showName":"\u5feb\u9012100"}}}`
|
||||||
data := make(map[string]interface{})
|
data := make(map[string]interface{})
|
||||||
|
|
|
@ -428,11 +428,17 @@ func (m *UserOpenMemberRecord) Refund(outTradeNo string, amount uint32) error {
|
||||||
Currency: "CNY",
|
Currency: "CNY",
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
err = wxpay.TransactionOrderRefund(orderRefund)
|
|
||||||
|
err = wxpay.HmRefundTransaction(orderRefund)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Error("err:", err)
|
logger.Error("err:", err)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
//err = wxpay.TransactionOrderRefund(orderRefund)
|
||||||
|
//if err != nil {
|
||||||
|
// logger.Error("err:", err)
|
||||||
|
// return err
|
||||||
|
//}
|
||||||
|
|
||||||
//FundRecord{
|
//FundRecord{
|
||||||
// Uid: m.Uid,
|
// Uid: m.Uid,
|
||||||
|
|
Loading…
Reference in New Issue
Block a user