227 lines
9.3 KiB
Go
227 lines
9.3 KiB
Go
|
|
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, "")
|
|||
|
|
})
|
|||
|
|
}
|