123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- 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
- }
- }
- }
- func CashOutAccount() {
- for true {
- var cashOut shanghu.CashOut
- cashOut.AccountStatus = 0 //未分账
- cashOut.Status = 3 //钱已到账为扣减金额
- cashOutInfo, err := cashOut.GetCashOutByAccount()
- if err != nil {
- break
- }
- cashOut.AccountStatus = 3 //分账中
- cashOut.ID = cashOutInfo.ID
- err = cashOut.UpdateCashOutAccountStatus()
- if err != nil {
- break
- }
- if cashOutInfo.AppID == "wxef36f8713d6469b5" { //b端 商户卡
- var account shanghu.ClientPayTrans
- err = account.SettleSubMerchant(cashOutInfo.Amount, cashOutInfo.OpenID, cashOutInfo.ID)
- if err != nil {
- cashOut.AccountStatus = 2 //分账失败
- cashOut.AccountFailRes = err.Error()
- cashOut.ID = cashOutInfo.ID
- cashOut.UpdateCashOutAccountStatus()
- continue
- }
- } else if cashOutInfo.AppID == "wx25357518f710b8ce" { //c端 周末传媒
- var account shanghu.ClientPayTrans
- err = account.SettleSubClient(cashOutInfo.Amount, cashOutInfo.OpenID, cashOutInfo.ID)
- if err != nil {
- cashOut.AccountStatus = 2 //分账失败
- cashOut.AccountFailRes = err.Error()
- cashOut.ID = cashOutInfo.ID
- cashOut.UpdateCashOutAccountStatus()
- continue
- }
- } else {
- continue
- }
- }
- }
|