微信红包发放调试

This commit is contained in:
李子铭 2024-09-19 09:34:50 +08:00
parent 2160b6fc42
commit 3fc404807d
4 changed files with 22 additions and 18 deletions

View File

@ -2,7 +2,7 @@ package main
// main 这只是一个演示 // main 这只是一个演示
func main() { func main() {
//wechatCpn()
//alipayOrderRedPack() //alipayOrderRedPack()
alipayQueryRedPack() //wechatRedPackOrder()
wechatRedPackQuery()
} }

View File

@ -27,28 +27,24 @@ func getWechatRedPackConf() []byte {
return marshal return marshal
} }
func wechatRedPack() { func wechatRedPackOrder() {
err := manage.Add(wechatRedPackConf) err := manage.Add(wechatRedPackConf)
if err != nil { if err != nil {
log.Fatalln(err) log.Fatalln(err)
} }
defer manage.Close() defer manage.Close()
wechatRedPackQuery()
}
func wechatRedPackOrder() {
req := &proto.OrderRequest{ req := &proto.OrderRequest{
Config: getWechatRedPackConf(), Config: getWechatRedPackConf(),
Order: &proto.OrderRequest_Order{ Order: &proto.OrderRequest_Order{
OrderNo: "240403164049635931", OrderNo: "240403164049635934",
Account: "oO3vO5AxRWgTjmMD38FTvnB5Rq6o", Account: "olf756DZlPHhTAduH9213h6Z2PCU",
Amount: 0.01, Amount: 0.01,
Quantity: 1, Quantity: 1,
Extra: []byte(`{"app_id":"wxbfcf9fd93f390c3a", "out_detail_no":"123456789"}`), Extra: []byte(`{"app_id":"wx381e6a04ab7f69b6", "out_detail_no":"12345678912"}`),
}, },
Product: &proto.OrderRequest_Product{ Product: &proto.OrderRequest_Product{
ProductNo: "", ProductNo: "",
Extra: []byte(`{"batch_name":"13100720242", "batch_remark":"stock_creator_mchid"}`), Extra: []byte(`{"batch_name":"batch_name", "batch_remark":"batch_remark"}`),
}, },
} }
res, err := instance.Order(context.Background(), wechatRedPackConf.Tag, req) res, err := instance.Order(context.Background(), wechatRedPackConf.Tag, req)
@ -59,14 +55,19 @@ func wechatRedPackOrder() {
} }
func wechatRedPackQuery() { func wechatRedPackQuery() {
err := manage.Add(wechatRedPackConf)
if err != nil {
log.Fatalln(err)
}
defer manage.Close()
//{status:ING order_no:"240403164049635931" trade_no:"131000508038701499912952024090256259261117" message:"成功"} //{status:ING order_no:"240403164049635931" trade_no:"131000508038701499912952024090256259261117" message:"成功"}
queryRequest := &proto.QueryRequest{ queryRequest := &proto.QueryRequest{
Config: getWechatRedPackConf(), Config: getWechatRedPackConf(),
Order: &proto.QueryRequest_Order{ Order: &proto.QueryRequest_Order{
OrderNo: "202409141056275034200011", OrderNo: "240403164049635934",
TradeNo: "", TradeNo: "",
Account: "", Account: "",
Extra: []byte(`{"out_detail_no":"0a2511525cc94a27bac18328771dc53e"}`), Extra: []byte(`{"out_detail_no":"12345678912"}`),
}, },
} }
resQuery, err := instance.Query(context.Background(), wechatRedPackConf.Tag, queryRequest) resQuery, err := instance.Query(context.Background(), wechatRedPackConf.Tag, queryRequest)

View File

@ -40,17 +40,19 @@ func orderReq(order *proto.OrderRequest_Order, product *proto.OrderRequest_Produ
if err != nil { if err != nil {
return transferbatch.InitiateBatchTransferRequest{}, fmt.Errorf("product拓展参数json unmarshal error:[%+v], extra[%s]", err, string(product.Extra)) return transferbatch.InitiateBatchTransferRequest{}, fmt.Errorf("product拓展参数json unmarshal error:[%+v], extra[%s]", err, string(product.Extra))
} }
transferAmount := int64(order.Amount * 100)
fmt.Println("transferAmount", transferAmount)
return transferbatch.InitiateBatchTransferRequest{ return transferbatch.InitiateBatchTransferRequest{
Appid: core.String(orderExtra.Appid), Appid: core.String(orderExtra.Appid),
OutBatchNo: core.String(order.OrderNo), // 微信转账商家批次单号 OutBatchNo: core.String(order.OrderNo), // 微信转账商家批次单号
BatchName: core.String(productExtra.BatchName), BatchName: core.String(productExtra.BatchName),
BatchRemark: core.String(productExtra.BatchRemark), BatchRemark: core.String(productExtra.BatchRemark),
TotalAmount: core.Int64(int64(order.Amount * 100)), // 转账总金额,单位分 100=1元 1000=0.1(需要申请) TotalAmount: core.Int64(transferAmount), // 转账总金额,单位分 100=1元 1000=0.1(需要申请)
TotalNum: core.Int64(int64(order.Quantity)), TotalNum: core.Int64(int64(order.Quantity)),
TransferDetailList: []transferbatch.TransferDetailInput{ TransferDetailList: []transferbatch.TransferDetailInput{
{ {
OutDetailNo: core.String(orderExtra.OutDetailNo), OutDetailNo: core.String(orderExtra.OutDetailNo),
TransferAmount: core.Int64(int64(order.Amount * 100)), TransferAmount: core.Int64(transferAmount),
TransferRemark: core.String(productExtra.BatchRemark), TransferRemark: core.String(productExtra.BatchRemark),
Openid: core.String(order.Account), Openid: core.String(order.Account),
UserName: nil, UserName: nil,
@ -91,12 +93,12 @@ func queryResp(request *proto.QueryRequest, resp *transferbatch.TransferDetailEn
data, _ := resp.MarshalJSON() data, _ := resp.MarshalJSON()
status := vo.QueryStatus(*resp.DetailStatus) status := vo.QueryStatus(*resp.DetailStatus)
msg := status.GetText() msg := status.GetText()
if resp.FailReason.Ptr() != nil { if resp.FailReason != nil {
m, ok := vo.FailReasonMsg[*resp.FailReason.Ptr()] m, ok := vo.FailReasonMsg[*resp.FailReason]
if ok { if ok {
msg = fmt.Sprintf("Message:%s, FailReason:%s", msg, m) msg = fmt.Sprintf("Message:%s, FailReason:%s", msg, m)
} else { } else {
msg = fmt.Sprintf("Message:%s, FailReason:%s", msg, *resp.FailReason.Ptr()) msg = fmt.Sprintf("Message:%s, FailReason:%s", msg, *resp.FailReason)
} }
} }
return &proto.QueryResponse{ return &proto.QueryResponse{

View File

@ -15,6 +15,7 @@ const (
CookieValue = "wechat_redpack" CookieValue = "wechat_redpack"
) )
// WeChatRedPackService @link https://pay.weixin.qq.com/docs/merchant/apis/batch-transfer-to-balance/transfer-batch/initiate-batch-transfer.html
type WeChatRedPackService struct{} type WeChatRedPackService struct{}
func (p *WeChatRedPackService) Order(ctx context.Context, request *proto.OrderRequest) (*proto.OrderResponse, error) { func (p *WeChatRedPackService) Order(ctx context.Context, request *proto.OrderRequest) (*proto.OrderResponse, error) {