wechatpay-apiv3 / wechatpay-go

微信支付 APIv3 的官方 Go Library
https://pay.weixin.qq.com/wiki/doc/apiv3/wxpay/pages/index.shtml
Apache License 2.0
1.05k stars 142 forks source link

退款的状态解析错误 #160

Open CoMixCo opened 1 year ago

CoMixCo commented 1 year ago

/services/refunddomestic/models.go 第880行: Status *Status json:"status" 解析失败,无法获取退款状态 json字段应该是 json:"json_status"

zhangllee commented 1 year ago

应该是 refund_status 吧 这个问题什么时候给更新啊

yinmingming commented 1 year ago

没人管吗?大家遇到这个问题是怎么解决的呢?

jianxing-xu commented 1 year ago

@zhangllee 很奇怪的是,退款接口返回的里面是status,推送通知过来的又是refund_status,而且通知里推过来的channel是空的,导致解析报错了,服了

kokais commented 1 year ago

你们怎么处理的?手撸一份?

reechou commented 1 year ago

通知里推过来的channel是空的,导致解析报错了

这个有人处理吗?

ccfish86 commented 1 year ago

反正我是通过if notifyReq.EventType == "REFUND.SUCCESS" {判断,然后传的【refunddomestic.STATUS_SUCCESS,】给业务层处理。 或者自己手撸一个struct用于接收 /Resource/Plaintext

'''

handler, err := mall.GetWechatPayHandler(mchid)
if err != nil {
    global.GVA_LOG.Warn("微信退款回调处理失败", zap.Error(err))
    return mparam.WxPayCallbackResp{Code: "failed", Message: "处理失败"}, err
}

// 解析异步通知的参数
refund := new(refunddomestic.Refund)
notifyReq, err := handler.ParseNotifyRequest(context.Background(), c.Request, refund)

if err != nil {
    global.GVA_LOG.Warn("微信退款回调处理失败", zap.Error(err))
    return mparam.WxPayCallbackResp{Code: "failed", Message: "验签或解密失败"}, err
}

if notifyReq.EventType == "REFUND.SUCCESS" {

    //  业务处理
    // 解析异步通知的参数
    if err = json.Unmarshal([]byte(notifyReq.Resource.Plaintext), &refund); err != nil {
        global.GVA_LOG.Warn("微信退款回调处理失败", zap.Error(err))
        return mparam.WxPayCallbackResp{Code: "failed", Message: "解析参数失败"}, err
    }

    outRefundNo := strings.TrimPrefix(*refund.OutRefundNo, global.GVA_CONFIG.Wechat.TradeNoPrefix)
    outTradeNo := strings.TrimPrefix(*refund.OutTradeNo, global.GVA_CONFIG.Wechat.TradeNoPrefix)

    // 后续处理 .......................
}

'''

Jeremyly commented 3 months ago

直到今天,这个问题依旧,是go用户量太小懒得理?这个问题很难解决吗?改个字段名就行了的,愣是不修复,搞到测试半天,测试又麻烦!

ccfish86 commented 3 months ago

直到今天,这个问题依旧,是go用户量太小懒得理?这个问题很难解决吗?改个字段名就行了的,愣是不修复,搞到测试半天,测试又麻烦!

这个BUG 但凡你提交个commit,也不至于留到现在