package service import ( "encoding/json" "strconv" "xiawan/wx/api/req" "xiawan/wx/api/vo" "xiawan/wx/clientsdk" "xiawan/wx/clientsdk/baseinfo" "xiawan/wx/srv/wxface" ) // 获取银行卡信息 func GetBandCardListService(queryKey string) vo.DTO { return checkExIdPerformNoCreateConnect(queryKey, func(iwxConnect wxface.IWXConnect, newIWXConnect bool) vo.DTO { wxAccount := iwxConnect.GetWXAccount() loginState := wxAccount.GetLoginState() //判断在线情况 if loginState == baseinfo.MMLoginStateNoLogin { return vo.NewFail("该账号需要重新登录!loginState == MMLoginStateNoLogin ") } else if !iwxConnect.CheckOnLineStatus() { return vo.NewFail("账号离线,自动上线失败!loginState == " + strconv.Itoa(int(wxAccount.GetLoginState()))) } reqInvoker := iwxConnect.GetWXReqInvoker() tmpReqItem := &baseinfo.TenPayReqItem{} tmpReqItem.CgiCMD = 72 tmpReqItem.ReqText = "" tenPayResp, err := reqInvoker.SendBandCardRequest(tmpReqItem) if err != nil { return vo.NewFail("GetBandCardListService err:" + err.Error()) } // 解析响应 retResp := &baseinfo.TenPayResp{} retText := tenPayResp.GetRetText().GetBuffer() err = json.Unmarshal(retText, retResp) if err != nil { return vo.NewFail("查询QB信息失败") } return vo.NewSuccessObj(retResp, "") }) } // 生成自定义二维码 func GeneratePayQCodeService(queryKey string, req req.GeneratePayQCodeModel) vo.DTO { return checkExIdPerformNoCreateConnect(queryKey, func(iwxConnect wxface.IWXConnect, newIWXConnect bool) vo.DTO { wxAccount := iwxConnect.GetWXAccount() loginState := wxAccount.GetLoginState() //判断在线情况 if loginState == baseinfo.MMLoginStateNoLogin { return vo.NewFail("该账号需要重新登录!loginState == MMLoginStateNoLogin ") } else if !iwxConnect.CheckOnLineStatus() { return vo.NewFail("账号离线,自动上线失败!loginState == " + strconv.Itoa(int(wxAccount.GetLoginState()))) } reqInvoker := iwxConnect.GetWXReqInvoker() var tenpayUrl = "delay_confirm_flag=0&desc=" + req.Name + "&fee=" + req.Money + "&fee_type=CNY&pay_scene=31&receiver_name=" + wxAccount.GetUserInfo().WxId + "&scene=31&transfer_scene=2" wcPaySign, err := clientsdk.TenPaySignDes3(tenpayUrl, "%^&*Tenpay!@#$") if err != nil { return vo.NewFail("no") } tenpayUrl += "&WCPaySign=" + wcPaySign tmpReqItem := &baseinfo.TenPayReqItem{} tmpReqItem.CgiCMD = 94 tmpReqItem.ReqText = tenpayUrl tenPayResp, err := reqInvoker.SendTenPayRequest(tmpReqItem) if err != nil { return vo.NewFail("GetBandCardListService err:" + err.Error()) } // 解析响应 retResp := &baseinfo.GeneratePayQCodeResp{} retText := tenPayResp.GetRetText().GetBuffer() err = json.Unmarshal(retText, retResp) if err != nil { return vo.NewFail("查询QB信息失败") } return vo.NewSuccessObj(retResp, "") }) } // CollectMoneyService 确认收款 func CollectMoneyService(queryKey string, req req.CollectmoneyModel) vo.DTO { return checkExIdPerformNoCreateConnect(queryKey, func(iwxConnect wxface.IWXConnect, newIWXConnect bool) vo.DTO { wxAccount := iwxConnect.GetWXAccount() loginState := wxAccount.GetLoginState() //判断在线情况 if loginState == baseinfo.MMLoginStateNoLogin { return vo.NewFail("该账号需要重新登录!loginState == MMLoginStateNoLogin ") } else if !iwxConnect.CheckOnLineStatus() { return vo.NewFail("账号离线,自动上线失败!loginState == " + strconv.Itoa(int(wxAccount.GetLoginState()))) } reqInvoker := iwxConnect.GetWXReqInvoker() tenpayUrl := "invalid_time=" + req.InvalidTime + "&op=confirm&total_fee=0&trans_id=" + req.TransFerId + "&transaction_id=" + req.TransactionId + "&username=" + req.ToUserName wcPaySign, err := clientsdk.TenPaySignDes3(tenpayUrl, "%^&*Tenpay!@#$") if err != nil { return vo.NewFail("no") } tenpayUrl += "&WCPaySign=" + wcPaySign tmpReqItem := &baseinfo.TenPayReqItem{} tmpReqItem.CgiCMD = 85 tmpReqItem.ReqText = tenpayUrl tenPayResp, err := reqInvoker.SendTenPayRequest(tmpReqItem) if err != nil { return vo.NewFail("CollectMoneyService err:" + err.Error()) } return vo.NewSuccessObj(tenPayResp, "") }) } // 拆红包 func OpenRedEnvelopesService(queryKey string, req baseinfo.HongBaoItem) vo.DTO { return checkExIdPerformNoCreateConnect(queryKey, func(iwxConnect wxface.IWXConnect, newIWXConnect bool) vo.DTO { wxAccount := iwxConnect.GetWXAccount() loginState := wxAccount.GetLoginState() //判断在线情况 if loginState == baseinfo.MMLoginStateNoLogin { return vo.NewFail("该账号需要重新登录!loginState == MMLoginStateNoLogin ") } else if !iwxConnect.CheckOnLineStatus() { return vo.NewFail("账号离线,自动上线失败!loginState == " + strconv.Itoa(int(wxAccount.GetLoginState()))) } reqInvoker := iwxConnect.GetWXReqInvoker() rsp, err := reqInvoker.SendOpenRedEnvelopesRequest(&req) if err != nil { return vo.NewFail("CollectMoneyService err:" + err.Error()) } return vo.NewSuccessObj(rsp, "") }) } // 创建红包 func WXCreateRedPacketService(queryKey string, req baseinfo.RedPacket) vo.DTO { return checkExIdPerformNoCreateConnect(queryKey, func(iwxConnect wxface.IWXConnect, newIWXConnect bool) vo.DTO { wxAccount := iwxConnect.GetWXAccount() loginState := wxAccount.GetLoginState() //判断在线情况 if loginState == baseinfo.MMLoginStateNoLogin { return vo.NewFail("该账号需要重新登录!loginState == MMLoginStateNoLogin ") } else if !iwxConnect.CheckOnLineStatus() { return vo.NewFail("账号离线,自动上线失败!loginState == " + strconv.Itoa(int(wxAccount.GetLoginState()))) } reqInvoker := iwxConnect.GetWXReqInvoker() rsp, err := reqInvoker.SendWXCreateRedPacketRequest(&req) if err != nil { return vo.NewFail("CollectMoneyService err:" + err.Error()) } return vo.NewSuccessObj(rsp, "") }) } // 查看红包详情 func QueryRedEnvelopesDetailService(queryKey string, req baseinfo.HongBaoItem) vo.DTO { return checkExIdPerformNoCreateConnect(queryKey, func(iwxConnect wxface.IWXConnect, newIWXConnect bool) vo.DTO { wxAccount := iwxConnect.GetWXAccount() loginState := wxAccount.GetLoginState() //判断在线情况 if loginState == baseinfo.MMLoginStateNoLogin { return vo.NewFail("该账号需要重新登录!loginState == MMLoginStateNoLogin ") } else if !iwxConnect.CheckOnLineStatus() { return vo.NewFail("账号离线,自动上线失败!loginState == " + strconv.Itoa(int(wxAccount.GetLoginState()))) } reqInvoker := iwxConnect.GetWXReqInvoker() rsp, err := reqInvoker.SendRedEnvelopesDetailRequest(&req) if err != nil { return vo.NewFail("QueryRedEnvelopesDetailService err:" + err.Error()) } return vo.NewSuccessObj(string(rsp.GetRetText().GetBuffer()), "") }) } // 查看红包领取列表 func GetRedPacketListService(queryKey string, req baseinfo.GetRedPacketList) vo.DTO { return checkExIdPerformNoCreateConnect(queryKey, func(iwxConnect wxface.IWXConnect, newIWXConnect bool) vo.DTO { wxAccount := iwxConnect.GetWXAccount() loginState := wxAccount.GetLoginState() //判断在线情况 if loginState == baseinfo.MMLoginStateNoLogin { return vo.NewFail("该账号需要重新登录!loginState == MMLoginStateNoLogin ") } else if !iwxConnect.CheckOnLineStatus() { return vo.NewFail("账号离线,自动上线失败!loginState == " + strconv.Itoa(int(wxAccount.GetLoginState()))) } reqInvoker := iwxConnect.GetWXReqInvoker() rsp, err := reqInvoker.SendGetRedPacketListRequest(&req) if err != nil { return vo.NewFail("QueryRedEnvelopesDetailService err:" + err.Error()) } return vo.NewSuccessObj(string(rsp.GetRetText().GetBuffer()), "") }) } // CreatePreTransferService 创建转账 func CreatePreTransferService(queryKey string, req *req.CreatePreTransfer) vo.DTO { return checkExIdPerformNoCreateConnect(queryKey, func(iwxConnect wxface.IWXConnect, newIWXConnect bool) vo.DTO { wxAccount := iwxConnect.GetWXAccount() loginState := wxAccount.GetLoginState() //判断在线情况 if loginState == baseinfo.MMLoginStateNoLogin { return vo.NewFail("该账号需要重新登录!loginState == MMLoginStateNoLogin ") } else if !iwxConnect.CheckOnLineStatus() { return vo.NewFail("账号离线,自动上线失败!loginState == " + strconv.Itoa(int(wxAccount.GetLoginState()))) } reqInvoker := iwxConnect.GetWXReqInvoker() tenPayResp, err := reqInvoker.SendCreatePreTransferRequest(req) if err != nil { return vo.NewFail("CreatePreTransferService err:" + err.Error()) } return vo.NewSuccessObj(tenPayResp, "") }) } // ConfirmPreTransferService 确认转账 func ConfirmPreTransferService(queryKey string, req *req.ConfirmPreTransfer) vo.DTO { return checkExIdPerformNoCreateConnect(queryKey, func(iwxConnect wxface.IWXConnect, newIWXConnect bool) vo.DTO { wxAccount := iwxConnect.GetWXAccount() loginState := wxAccount.GetLoginState() //判断在线情况 if loginState == baseinfo.MMLoginStateNoLogin { return vo.NewFail("该账号需要重新登录!loginState == MMLoginStateNoLogin ") } else if !iwxConnect.CheckOnLineStatus() { return vo.NewFail("账号离线,自动上线失败!loginState == " + strconv.Itoa(int(wxAccount.GetLoginState()))) } reqInvoker := iwxConnect.GetWXReqInvoker() tenPayResp, err := reqInvoker.SendConfirmPreTransferRequest(req) if err != nil { return vo.NewFail("ConfirmPreTransferService err:" + err.Error()) } return vo.NewSuccessObj(tenPayResp, "") }) }