Exemplo n.º 1
0
        public ActionResult List()
        {
            WeChatPay w  = new WeChatPay();
            var       sd = HttpClientHelper.ToKeyValue(w);

            var df = HttpClientHelper.BuildParam(w);

            return(View());
        }
Exemplo n.º 2
0
        //提现到微信零钱
        //接口文档: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);
        }
Exemplo n.º 3
0
        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
            });
        }
Exemplo n.º 4
0
        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
            });
        }