public ActionResult List() { WeChatPay w = new WeChatPay(); var sd = HttpClientHelper.ToKeyValue(w); var df = HttpClientHelper.BuildParam(w); return(View()); }
//提现到微信零钱 //接口文档:https://pay.weixin.qq.com/wiki/doc/api/tools/mch_pay.php?chapter=14_2 private async Task <WxTransferResult> TakeToWxMoney(decimal Amount, string openid) { WxTransferResult result = new WxTransferResult(); try { WeChatTransfers weChatTrans = new WeChatTransfers(); weChatTrans.amount = Math.Truncate(Amount * 100).ToString(); weChatTrans.openid = openid; weChatTrans.desc = "提现到零钱"; weChatTrans.spbill_create_ip = WebHelper.GetClientIp(); string parm = HttpClientHelper.BuildParam(weChatTrans); string key = System.Configuration.ConfigurationManager.AppSettings["KEY"]; parm = parm + "&key=" + key; string sign = CommonHelper.GetMD5(parm); HttpClient httpClient = new HttpClient(); string xml = HttpClientHelper.SerializeXml(weChatTrans, sign); log.DebugFormat($"TakeToWxMoney response xml:{xml}"); // string res = await HttpClientHelper.GetResponseByPostXMLAsync(httpClient, xml, "https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers"); string res = await HttpClientHelper.PostHttpsAsync(httpClient, xml, "https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers", "cyds.wohuicn.com"); log.DebugFormat($"TakeToWxMoney result xml:{res}"); // string res = @"<xml><return_code><![CDATA[SUCCESS]]></return_code> //<return_msg><![CDATA[]]></return_msg> //<mch_appid><![CDATA[wxbe49b62a3cb300da]]></mch_appid> //<mchid><![CDATA[1312108801]]></mchid> //<nonce_str><![CDATA[gpgms78aay]]></nonce_str> //<result_code><![CDATA[SUCCESS]]></result_code> //<partner_trade_no><![CDATA[gpgms78aayr5]]></partner_trade_no> //<payment_no><![CDATA[1000018301201810253156081639]]></payment_no> //<payment_time><![CDATA[2018-10-25 17:29:34]]></payment_time> //</xml>"; XmlDocument xmlDoc = new XmlDocument(); xmlDoc.LoadXml(res); result.return_code = xmlDoc.SelectSingleNode("xml/return_code").InnerText; result.return_msg = xmlDoc.SelectSingleNode("xml/return_msg").InnerText; if (result.return_code == "SUCCESS") { result.result_code = xmlDoc.SelectSingleNode("xml/result_code").InnerText; result.partner_trade_no = xmlDoc.SelectSingleNode("xml/partner_trade_no").InnerText; result.payment_no = xmlDoc.SelectSingleNode("xml/payment_no").InnerText; result.payment_time = xmlDoc.SelectSingleNode("xml/payment_time").InnerText; } } catch (Exception ex) { log.DebugFormat($"TakeToWxMoney Exception:{ex}"); result.return_code = "ERROR"; result.return_msg = "提现错误"; } return(result); }
public async Task <ApiResult> RePay(OrderReApplysModel model) { //long orderStateId = await idNameService.GetIdByNameAsync("待付款"); User user = JwtHelper.JwtDecrypt <User>(ControllerContext); OrderDTO order = await orderService.GetModelAsync(model.OrderId); if (order == null) { return(new ApiResult { status = 0, msg = "订单不存在" }); } long id = await orderService.ValidOrder(order.Id); if (id == -1) { return(new ApiResult { status = 0, msg = "订单不存在" }); } if (id == -2) { return(new ApiResult { status = 0, msg = "会员不存在", data = order.Id }); } if (id == -4) { return(new ApiResult { status = 0, msg = "订单中有商品已经下架,请重新下单", data = order.Id }); } if (id == -3) { return(new ApiResult { status = 0, msg = "商品库存不足", data = order.Id }); } WeChatPay weChatPay = new WeChatPay(); weChatPay.body = "订单支付"; weChatPay.out_trade_no = order.Code; weChatPay.openid = user.Code.Substring(3, 28); weChatPay.total_fee = Math.Truncate(order.Amount * 100).ToString(); string parm = HttpClientHelper.BuildParam(weChatPay); string key = System.Configuration.ConfigurationManager.AppSettings["KEY"]; parm = parm + "&key=" + key; string sign = CommonHelper.GetMD5(parm); HttpClient httpClient = new HttpClient(); string xml = HttpClientHelper.ObjSerializeXml(weChatPay, sign); //CacheHelper.SetCache("App_Order_Pay" + weChatPay.out_trade_no, sign, DateTime.UtcNow.AddMinutes(2), TimeSpan.Zero); string res = await HttpClientHelper.GetResponseByPostXMLAsync(httpClient, xml, "https://api.mch.weixin.qq.com/pay/unifiedorder"); if (!res.Contains("SUCCESS")) { return(new ApiResult { status = 0, msg = res }); } XmlDocument xmlDoc = new XmlDocument(); xmlDoc.LoadXml(res); XmlNode Child = xmlDoc.SelectSingleNode("xml/prepay_id"); log.DebugFormat($"待支付订单微信支付统一下单,时间:{DateTime.Now}"); TimeSpan ts = DateTime.Now - new DateTime(1970, 1, 1, 0, 0, 0, 0); GetWechat getWeChat = new GetWechat(); getWeChat.timeStamp = Convert.ToInt64(ts.TotalSeconds).ToString(); getWeChat.package = "prepay_id" + Child.InnerText; parm = HttpClientHelper.BuildParam(getWeChat); parm = parm.Replace("prepay_id", "prepay_id="); parm = parm + "&key=" + key; string paySign = CommonHelper.GetMD5(parm); GetWechat1 getWeChat1 = new GetWechat1(); getWeChat1.appId = getWeChat.appId; getWeChat1.nonceStr = getWeChat.nonceStr; getWeChat1.package = "prepay_id=" + Child.InnerText; getWeChat1.signType = getWeChat.signType; getWeChat1.timeStamp = getWeChat.timeStamp; getWeChat1.paySign = paySign; getWeChat1.orderId = order.Id; return(new ApiResult { status = 1, data = getWeChat1 }); }
public async Task <ApiResult> Pay(OrderPayModel model) { int orderStateId = (int)OrderStateEnum.待付款; User user = JwtHelper.JwtDecrypt <User>(ControllerContext); var dtos = await orderApplyService.GetModelListAsync(user.Id); if (dtos.OrderApplies.Count() <= 0) { return(new ApiResult { status = 0, msg = "下单列表无商品" }); } long id = await orderService.AddAsync(model.DeliveryTypeId, 0, user.Id, model.AddressId, model.PayTypeId, orderStateId, dtos.OrderApplies); if (id <= 0) { if (id == -4) { return(new ApiResult { status = 0, msg = "订单中有商品已经下架,请重新下单", data = 0 }); } if (id == -6) { return(new ApiResult { status = 0, msg = "用户账户已经冻结", data = id }); } return(new ApiResult { status = 0, msg = "生成订单失败" }); } OrderDTO order = await orderService.GetModelAsync(id); await goodsCarService.DeleteListAsync(user.Id); await orderApplyService.DeleteListAsync(user.Id); int payTypeId1 = (int)PayTypeEnum.微信; if (payTypeId1 != model.PayTypeId) { return(new ApiResult { status = 0, msg = "请选择微信支付" }); } WeChatPay weChatPay = new WeChatPay(); weChatPay.body = "订单支付"; weChatPay.out_trade_no = order.Code; weChatPay.openid = user.Code.Substring(3, 28); weChatPay.total_fee = Math.Truncate(order.Amount * 100).ToString(); string parm = HttpClientHelper.BuildParam(weChatPay); string key = System.Configuration.ConfigurationManager.AppSettings["KEY"]; parm = parm + "&key=" + key; string sign = CommonHelper.GetMD5(parm); HttpClient httpClient = new HttpClient(); string xml = HttpClientHelper.ObjSerializeXml(weChatPay, sign); //CacheHelper.SetCache("App_Order_Pay" + weChatPay.out_trade_no, sign, DateTime.UtcNow.AddMinutes(2), TimeSpan.Zero); string res = await HttpClientHelper.GetResponseByPostXMLAsync(httpClient, xml, "https://api.mch.weixin.qq.com/pay/unifiedorder"); if (!res.Contains("SUCCESS")) { return(new ApiResult { status = 0, msg = res + "参数:" + parm }); } XmlDocument xmlDoc = new XmlDocument(); xmlDoc.LoadXml(res); XmlNode Child = xmlDoc.SelectSingleNode("xml/prepay_id"); TimeSpan ts = DateTime.Now - new DateTime(1970, 1, 1, 0, 0, 0, 0); GetWechat getWeChat = new GetWechat(); getWeChat.timeStamp = Convert.ToInt64(ts.TotalSeconds).ToString(); getWeChat.package = "prepay_id" + Child.InnerText; parm = HttpClientHelper.BuildParam(getWeChat); parm = parm.Replace("prepay_id", "prepay_id="); parm = parm + "&key=" + key; string paySign = CommonHelper.GetMD5(parm); GetWechat1 getWeChat1 = new GetWechat1(); getWeChat1.appId = getWeChat.appId; getWeChat1.nonceStr = getWeChat.nonceStr; getWeChat1.package = "prepay_id=" + Child.InnerText; getWeChat1.signType = getWeChat.signType; getWeChat1.timeStamp = getWeChat.timeStamp; getWeChat1.paySign = paySign; getWeChat1.orderId = id; log.DebugFormat($"微信支付统一下单:时间{DateTime.Now},回调地址:{weChatPay.notify_url}"); return(new ApiResult { status = 1, data = getWeChat1 }); }