/// <summary> /// 支付回调通知处理 /// </summary> /// <param name="inputStream"></param> /// <returns></returns> public PayNotifyOutput PayNotifyHandler(Stream inputStream) { PayNotifyOutput result = null; var data = PostInput(inputStream); try { result = XmlHelper.DeserializeObject <PayNotifyOutput>(data); } catch (Exception ex) { LoggerAction?.Invoke("Error", "解析支付回调参数出错:" + data + " Exception:" + ex.ToString()); throw; } return(result); }
/// <summary> /// 处理支付回调参数 /// </summary> /// <param name="inputStream">输入流</param> /// <param name="payHandlerFunc">支付处理逻辑函数</param> /// <returns>处理结果</returns> public Task <string> PayNotifyHandler(Stream inputStream, Action <PayNotifyOutput, string> payHandlerFunc) { PayNotifyOutput result = null; var data = weChatPayHelper.PostInput(inputStream); var outPutXml = string.Empty; var error = string.Empty; try { result = XmlHelper.DeserializeObject <PayNotifyOutput>(data); } catch (Exception ex) { WeChatPayHelper.LoggerAction?.Invoke("Error", "解析支付回调参数出错:" + data + " Exception:" + ex); outPutXml = string.Format(Fail_Xml_Tpl, "解析支付回调参数出错"); error = ex.ToString(); } if (!string.IsNullOrWhiteSpace(outPutXml)) { } else if (string.IsNullOrWhiteSpace(result?.TransactionId)) { error = "支付结果中微信订单号不存在"; outPutXml = string.Format(Fail_Xml_Tpl, error); } else if (!result.IsSuccess()) { outPutXml = string.Format(Fail_Xml_Tpl, "回调处理失败"); error = $"回调处理失败:ErrCode:{result.ErrCode} \nErrCodeDes:{result.ErrCodeDes}"; } //查询订单,判断订单真实性 else if (!QueryOrder(result.TransactionId)) { error = "订单不存在"; outPutXml = string.Format(Fail_Xml_Tpl, error); } payHandlerFunc?.Invoke(result, error); return(Task.FromResult(!string.IsNullOrWhiteSpace(outPutXml) ? outPutXml : "<xml><return_code><![CDATA[SUCCESS]]></return_code></xml>")); }