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, "")
|
||
})
|
||
}
|