package report import ( "context" apiShanghu "duoduo/apis/shanghu" "duoduo/models/shanghu" "encoding/json" "fmt" "github.com/go-pay/gopay" "time" ) func CashOut() { for true { var cashOut shanghu.CashOut bm := make(gopay.BodyMap) cashOut.Status = 1 // 提现中 cashOutInfo, err := cashOut.GetCashOutByStatus() if err != nil { fmt.Println("GetCashOutByStatus err ", err.Error()) break } wechatV3, err := apiShanghu.NewWechatServiceV3("") if err != nil { break } bm.Set("need_query_detail", false) transferBatch, err := wechatV3.V3TransferMerchantQuery(context.Background(), cashOutInfo.PartnerTradeNo, bm) if err != nil { break } by, _ := json.Marshal(transferBatch) fmt.Println(string(by)) if transferBatch.Code != 0 { break } if transferBatch.Response.TransferBatch.FailNum == 0 && transferBatch.Response.TransferBatch.BatchStatus == "FINISHED" { //转账成功 cashOut.PartnerTradeNo = transferBatch.Response.TransferBatch.OutBatchNo cashOut.Status = 3 err = cashOut.UpdateCashOutStatus() if err != nil { break } } else if transferBatch.Response.TransferBatch.FailNum > 0 { //失败 cashOut.PartnerTradeNo = transferBatch.Response.TransferBatch.OutBatchNo cashOut.Status = 2 err = cashOut.UpdateCashOutStatus() if err != nil { break } } else if transferBatch.Response.TransferBatch.BatchStatus == "CLOSE" { cashOut.PartnerTradeNo = transferBatch.Response.TransferBatch.OutBatchNo cashOut.Status = 2 cashOut.FailRes = transferBatch.Response.TransferBatch.CloseReason err = cashOut.UpdateCashOutStatusClose() if err != nil { break } } else { time.Sleep(time.Second * 1) continue } } }