public void NowPayNotify() { string errorMessage = "fail"; try { string appKey = NowPayConfig.AppKey; SortedDictionary <string, string> sPara = GetRequestPost(); if (sPara.Count > 0) { if (string.Compare(GetSign(appKey, sPara), sPara["signature"], true) == 0) { string mhtOrderNo = sPara["mhtOrderNo"]; decimal mhtOrderAmt = StringHelper.ToDecimal(sPara["mhtOrderAmt"]); string tradeStatus = sPara["tradeStatus"]; if (string.Compare(tradeStatus, "A001", true) == 0) { int result = 0; RechargeInfo model = new RechargeInfo(); model.OrderId = mhtOrderNo; model.FOrderId = ""; model.Cash = mhtOrderAmt; model.PayMobile = ""; _rechargeService.Completed(model, out result); //1:成功 0:失败 if (result == (int)ErrorMessage.成功) { errorMessage = "success"; } } } } } catch { } Response.Write(errorMessage); }
public override void ProcessNotify(out WxPayData data) { if (GetNotifyData(out data)) { //检查支付结果中transaction_id是否存在 if (!data.IsSet("transaction_id")) { //若transaction_id不存在,则立即返回结果给微信支付后台 data = new WxPayData(); data.SetValue("return_code", "FAIL"); data.SetValue("return_msg", "支付结果中微信订单号不存在"); Log.Error(this.GetType().ToString(), "The Pay result is error : " + data.ToXml()); return; } string transaction_id = data.GetValue("transaction_id").ToString(); //查询订单,判断订单真实性 if (!QueryOrder(transaction_id)) { //若订单查询失败,则立即返回结果给微信支付后台 data = new WxPayData(); data.SetValue("return_code", "FAIL"); data.SetValue("return_msg", "订单查询失败"); Log.Error(this.GetType().ToString(), "Order query failure : " + data.ToXml()); } //查询订单成功 else { string mhtOrderNo = data.GetValue("out_trade_no").ToString(); decimal total_fee = StringHelper.ToDecimal(data.GetValue("total_fee")); if (!string.IsNullOrEmpty(mhtOrderNo)) { int result = 0; RechargeInfo model = new RechargeInfo(); model.OrderId = mhtOrderNo; model.FOrderId = ""; model.Cash = total_fee; model.PayMobile = ""; _rechargeService.Completed(model, out result); //1:成功 0:失败 if (result != (int)ErrorMessage.成功) { //失败 data = new WxPayData(); data.SetValue("return_code", "FAIL"); data.SetValue("return_msg", "订单查询失败"); Log.Error(this.GetType().ToString(), "Order query failure : " + data.ToXml()); return; } } //成功 data.SetValue("return_code", "SUCCESS"); data.SetValue("return_msg", "OK"); Log.Info(this.GetType().ToString(), "order query success : " + data.ToXml()); } } }
public override void ProcessNotify(out WxPayData data) { if (GetNotifyData(out data)) { //Log.Info(this.GetType().ToString(), "ProcessNotify() out_trade_no = " + data.GetValue("out_trade_no").ToString()); //Log.Info(this.GetType().ToString(), "ProcessNotify() isset openid = " + data.IsSet("openid")); //Log.Info(this.GetType().ToString(), "ProcessNotify() openid = " + data.GetValue("openid").ToString()); //Log.Info(this.GetType().ToString(), "ProcessNotify() isset product_id = " + data.IsSet("product_id")); //Log.Info(this.GetType().ToString(), "ProcessNotify() product_id = " + data.GetValue("product_id").ToString()); //检查openid和product_id是否返回 if (!data.IsSet("openid") || !data.IsSet("product_id")) { data = new WxPayData(); data.SetValue("return_code", "FAIL"); data.SetValue("return_msg", "回调数据异常"); Log.Info(this.GetType().ToString(), "The data WeChat post is error : " + data.ToXml()); return; } //调统一下单接口,获得下单结果 string openid = data.GetValue("openid").ToString(); string product_id = data.GetValue("product_id").ToString(); WxPayData unifiedOrderResult = new WxPayData(); try { unifiedOrderResult = UnifiedOrder(openid, product_id); } catch //若在调统一下单接口时抛异常,立即返回结果给微信支付后台 { data = new WxPayData(); data.SetValue("return_code", "FAIL"); data.SetValue("return_msg", "统一下单失败"); Log.Error(this.GetType().ToString(), "UnifiedOrder failure : " + data.ToXml()); return; } //若下单失败,则立即返回结果给微信支付后台 if (!unifiedOrderResult.IsSet("appid") || !unifiedOrderResult.IsSet("mch_id") || !unifiedOrderResult.IsSet("prepay_id")) { data = new WxPayData(); data.SetValue("return_code", "FAIL"); data.SetValue("return_msg", "统一下单失败"); Log.Error(this.GetType().ToString(), "UnifiedOrder failure : " + data.ToXml()); return; } #region string mhtOrderNo = data.GetValue("out_trade_no").ToString(); decimal total_fee = StringHelper.ToDecimal(data.GetValue("total_fee")); if (!string.IsNullOrEmpty(mhtOrderNo)) { int result = 0; RechargeInfo model = new RechargeInfo(); model.OrderId = mhtOrderNo; model.FOrderId = ""; model.Cash = total_fee; model.PayMobile = ""; _rechargeService.Completed(model, out result); //1:成功 0:失败 if (result != (int)ErrorMessage.成功) { data = new WxPayData(); data.SetValue("return_code", "FAIL"); data.SetValue("return_msg", "统一下单失败"); Log.Error(this.GetType().ToString(), "UnifiedOrder failure : " + data.ToXml()); return; } } #endregion //统一下单成功,则返回成功结果给微信支付后台 data = new WxPayData(); data.SetValue("return_code", "SUCCESS"); data.SetValue("return_msg", "OK"); data.SetValue("appid", WxPayConfig.APPID); data.SetValue("mch_id", WxPayConfig.MCHID); data.SetValue("nonce_str", WxPayApi.GenerateNonceStr()); data.SetValue("prepay_id", unifiedOrderResult.GetValue("prepay_id")); data.SetValue("result_code", "SUCCESS"); data.SetValue("err_code_des", "OK"); data.SetValue("sign", data.MakeSign()); Log.Info(this.GetType().ToString(), "UnifiedOrder success , send data to WeChat : " + data.ToXml()); } }
public void Notify() { string errorMessage = "fail"; Dictionary <string, string> sPara = GetParamPost(); if (sPara.Count > 0)//判断是否有带返回参数 { Com.Alipay.Notify aliNotify = new Com.Alipay.Notify(); bool verifyResult = aliNotify.VerifyNotify(sPara, Request.Form["sign"]); if (verifyResult)//验证成功 { //解密(如果是RSA签名需要解密,如果是MD5签名则下面一行清注释掉) sPara = aliNotify.Decrypt(sPara); //XML解析notify_data数据 try { XmlHelper xmlHelper = new XmlHelper(sPara["notify_data"]); if (xmlHelper != null) { //商户订单号 string out_trade_no = xmlHelper.GetNodeString("/notify/out_trade_no"); //支付宝交易号 string trade_no = xmlHelper.GetNodeString("/notify/trade_no"); //交易状态 string trade_status = xmlHelper.GetNodeString("/notify/trade_status"); string buyer_email = xmlHelper.GetNodeString("/notify/buyer_email"); string seller_id = xmlHelper.GetNodeString("/notify/seller_id"); decimal total_fee = xmlHelper.GetNodeDecimal("/notify/total_fee"); if (string.Compare(Com.Alipay.Config.Partner, seller_id, true) == 0 && (string.Compare(trade_status, "TRADE_FINISHED", true) == 0 || string.Compare(trade_status, "TRADE_SUCCESS", true) == 0)) { int result = 0; RechargeInfo model = new RechargeInfo(); model.OrderId = out_trade_no; model.FOrderId = trade_no; model.Cash = total_fee * 100; model.PayMobile = ""; _rechargeService.Completed(model, out result); //1:成功 0:失败 if (result == (int)ErrorMessage.成功) { errorMessage = "success"; } } else { errorMessage = trade_status; } } } catch { } } } else { errorMessage = "无通知参数"; } this.Response.Write(errorMessage); }