瀏覽代碼

no message

xingzai 11 月之前
父節點
當前提交
b7b79e4122
共有 4 個文件被更改,包括 43 次插入14 次删除
  1. 11 2
      controllers/cygx/order.go
  2. 1 1
      models/cygx/orde.go
  3. 2 2
      models/cygx/order_refund.go
  4. 29 9
      services/cygx/wx_pay.go

+ 11 - 2
controllers/cygx/order.go

@@ -6,6 +6,7 @@ import (
 	"hongze/hz_crm_api/controllers"
 	"hongze/hz_crm_api/models"
 	"hongze/hz_crm_api/models/cygx"
+	cygxService "hongze/hz_crm_api/services/cygx"
 	"hongze/hz_crm_api/utils"
 	"strconv"
 	"time"
@@ -217,6 +218,14 @@ func (this *UserController) OrderRefund() {
 		br.ErrMsg = "订单状态异常,orderCode:" + orderCode
 		return
 	}
+	//订单状态,0:已取消、1:待支付、2:已支付、3:退款成功、4:退款处理中、5:退款异常、6:退款关闭
+	statusCode, err := cygxService.RefundsApiService(orderDetail)
+	var orderStatus int
+	if statusCode == 200 && err == nil {
+		orderStatus = 4
+	} else {
+		orderStatus = 5
+	}
 	item := new(cygx.CygxOrderRefund)
 	item.OrderCode = orderCode
 	item.RefundMoney = orderDetail.OrderMoney
@@ -226,7 +235,7 @@ func (this *UserController) OrderRefund() {
 	item.RefundTime = time.Now()
 	item.AdminId = sysUser.AdminId
 	item.AdminName = sysUser.RealName
-	err = cygx.AddCygxOrderRefund(item)
+	err = cygx.AddCygxOrderRefund(item, orderStatus)
 	if err != nil {
 		br.Msg = "新增失败."
 		br.ErrMsg = "新增失败,Err:" + err.Error()
@@ -234,7 +243,7 @@ func (this *UserController) OrderRefund() {
 	}
 	br.Ret = 200
 	br.Success = true
-	br.Msg = "新增成功"
+	br.Msg = "操作成功"
 }
 
 // @Title 退款记录列表

+ 1 - 1
models/cygx/orde.go

@@ -22,7 +22,7 @@ type CygxOrder struct {
 	RefundMoney      float64   `comment:"订单退款金额"`
 	RefundTime       time.Time `description:"退款时间"`
 	RefundRemark     string    `description:"退款原因说明"`
-	OrderStatus      int       `comment:"订单状态,0:已取消、1:待支付、2:已支付、3:已退款"`
+	OrderStatus      int       `comment:"订单状态,0:已取消、1:待支付、2:已支付、3:退款成功、4:退款处理中、5:退款异常、6:退款关闭"`
 	PayTime          time.Time `comment:"订单付款时间"`
 	SourceId         int       `comment:"来源ID"`
 	Source           string    `comment:"来源\n报告 :article\n活动 :activity"`

+ 2 - 2
models/cygx/order_refund.go

@@ -25,7 +25,7 @@ type CygxOrderRefundReq struct {
 }
 
 // 添加CygxOrderRefund
-func AddCygxOrderRefund(item *CygxOrderRefund) (err error) {
+func AddCygxOrderRefund(item *CygxOrderRefund, orderStatus int) (err error) {
 	to := orm.NewOrmUsingDB("hz_cygx")
 	o, err := to.Begin()
 	if err != nil {
@@ -39,7 +39,7 @@ func AddCygxOrderRefund(item *CygxOrderRefund) (err error) {
 		}
 	}()
 	updateParams := make(map[string]interface{})
-	updateParams["OrderStatus"] = 3
+	updateParams["OrderStatus"] = orderStatus
 	updateParams["RefundMoney"] = item.RefundMoney
 	updateParams["RefundRemark"] = item.Remark
 	updateParams["RefundTime"] = time.Now()

+ 29 - 9
services/cygx/wx_pay.go

@@ -2,16 +2,20 @@ package cygx
 
 import (
 	"context"
+	"fmt"
 	"github.com/wechatpay-apiv3/wechatpay-go/core"
 	"github.com/wechatpay-apiv3/wechatpay-go/core/option"
 	"github.com/wechatpay-apiv3/wechatpay-go/services/refunddomestic"
 	payUtils "github.com/wechatpay-apiv3/wechatpay-go/utils"
+	"hongze/hz_crm_api/models/cygx"
+	"hongze/hz_crm_api/services/alarm_msg"
 	"log"
 )
 
 const (
 	//MchPKFileName              = "./utils/cert/apiclient_key.pem"
-	MchPKFileName              = "../cert/cygx/apiclient_key.pem"
+	//MchPKFileName = "../cert/cygx/apiclient_key.pem"
+	MchPKFileName              = "../hongze_mfyx/utils/cert/apiclient_key.pem"
 	Mchid                      = "1624495680"
 	MchCertificateSerialNumber = "5ED2719CFAE5205763034AD80BF4B8A33533C418"
 	MchAPIv3Key                = "W1tbnzQrzQ7yRRNuQCIHjis8dgdasKVX"
@@ -19,6 +23,13 @@ const (
 
 // 微信商户建立连接
 func getWechatClient() (context.Context, *core.Client, error) {
+	var err error
+	defer func() {
+		if err != nil {
+			fmt.Println(err)
+			go alarm_msg.SendAlarmMsg(fmt.Sprint("微信商户建立连接失败 getWechatClient, err:", err.Error()), 2)
+		}
+	}()
 	// 使用 utils 提供的函数从本地文件中加载商户私钥,商户私钥会用来生成请求的签名
 	mchPrivateKey, err := payUtils.LoadPrivateKeyWithPath(MchPKFileName)
 	if err != nil {
@@ -38,20 +49,28 @@ func getWechatClient() (context.Context, *core.Client, error) {
 	return ctx, client, nil
 }
 
-func init1212() {
+// 微信商户退款
+func RefundsApiService(orderDetail *cygx.CygxOrderResp) (statusCode int, err error) {
+	defer func() {
+		if err != nil {
+			fmt.Println(err)
+			go alarm_msg.SendAlarmMsg(fmt.Sprint("生成预支付交易单失败 ExampleJsapiApiServicePrepay, err:", err.Error()), 2)
+		}
+	}()
 	ctx, client, err := getWechatClient()
 	if err != nil {
 		log.Printf("getWechatClientt err:%s", err)
 		return
 	}
+
 	svc := refunddomestic.RefundsApiService{Client: client}
 	resp, result, err := svc.Create(ctx,
 		refunddomestic.CreateRequest{
 			//SubMchid:      core.String(Mchid),
-			TransactionId: core.String("4200002189202403252248752161"),
-			OutTradeNo:    core.String("OD202403251018320707"),
-			OutRefundNo:   core.String("RefundOD202403251018320707"),
-			Reason:        core.String("嘿!延边!"),
+			TransactionId: core.String(orderDetail.OutTradeCode),
+			OutTradeNo:    core.String(orderDetail.OrderCode),
+			OutRefundNo:   core.String("RE" + orderDetail.OrderCode),
+			Reason:        core.String("退款"),
 			NotifyUrl:     core.String("https://testmfyx.hzinsights.com/api/wechat/wxpay/refunds/notify"),
 			FundsAccount:  refunddomestic.REQFUNDSACCOUNT_AVAILABLE.Ptr(),
 			Amount: &refunddomestic.AmountReq{
@@ -60,12 +79,12 @@ func init1212() {
 				//	Account: refunddomestic.ACCOUNT_AVAILABLE.Ptr(),
 				//	Amount:  core.Int64(444),
 				//}},
-				Refund: core.Int64(1),
-				Total:  core.Int64(1),
+				Refund: core.Int64(int64(orderDetail.PayMoney * 100)),
+				Total:  core.Int64(int64(orderDetail.PayMoney * 100)),
 			},
 		},
 	)
-
+	statusCode = result.Response.StatusCode
 	if err != nil {
 		// 处理错误
 		log.Printf("call Create err:%s", err)
@@ -73,4 +92,5 @@ func init1212() {
 		// 处理返回结果
 		log.Printf("status=%d resp=%s", result.Response.StatusCode, resp)
 	}
+	return
 }