Exemplo n.º 1
0
        /// <summary>
        /// 订单查询
        /// </summary>
        /// <returns></returns>
        public ActionResult OrderQuery()
        {
            string nonceStr = TenPayV3Util.GetNoncestr();

            //RequestHandler packageReqHandler = new RequestHandler(null);

            ////设置package订单参数
            //packageReqHandler.SetParameter("appid", TenPayV3Info.AppId);		  //公众账号ID
            //packageReqHandler.SetParameter("mch_id", TenPayV3Info.MchId);		  //商户号
            //packageReqHandler.SetParameter("transaction_id", "");       //填入微信订单号
            //packageReqHandler.SetParameter("out_trade_no", "");         //填入商家订单号
            //packageReqHandler.SetParameter("nonce_str", nonceStr);             //随机字符串
            //string sign = packageReqHandler.CreateMd5Sign("key", TenPayV3Info.Key);
            //packageReqHandler.SetParameter("sign", sign);	                    //签名

            //string data = packageReqHandler.ParseXML();
            var requestData =
                new TenPayV3OrderQueryRequestData(TenPayV3Info.AppId, TenPayV3Info.MchId, "", nonceStr, "", TenPayV3Info.Key, "MD5");

            //var result = TenPayV3.OrderQuery(data);
            //var res = XDocument.Parse(result);

            var result = TenPayV3.OrderQuery(requestData);
            var res    = XDocument.Parse(result.ResultXml);

            string openid = res.Element("xml").Element("sign").Value;

            return(Content(openid));
        }
        public ActionResult OrderQuery(string transactionId, string orderNumber)
        {
            string nonceStr = TenPayV3Util.GetNoncestr();
            ////设置订单参数
            TenPayV3OrderQueryRequestData data = new TenPayV3OrderQueryRequestData(WxOpenAppId, TenPayV3_MchId, transactionId, nonceStr, orderNumber, TenPayV3_Key);
            OrderQueryResult result            = TenPayV3.OrderQuery(data);

            return(new JsonResult(HttpResult.Success(result)));
        }
Exemplo n.º 3
0
        public ActionResult OrderQuery()
        {
            string nonceStr = TenPayV3Util.GetNoncestr();

            TenPayV3OrderQueryRequestData data = new TenPayV3OrderQueryRequestData(TenPayV3Info.AppId, TenPayV3Info.MchId, "微信订单号", nonceStr, "商家订单号", TenPayV3Info.Key);

            var    result = TenPayV3.OrderQuery(data);
            string openid = result.openid;

            return(Content(openid));
        }
Exemplo n.º 4
0
        public async Task <OrderQueryResult> OrderQueryAsync(string WXPayBillno, SystemConfigs tencentparam)
        {
            TenPayV3Info TenPayV3Info = new TenPayV3Info(tencentparam.AppID, tencentparam.AppSecret, tencentparam.TenPayMchId, tencentparam.TenPayKey, tencentparam.TenPayNotify, tencentparam.TenPayWxOpenNotify);
            string       nonceStr     = TenPayV3Util.GetNoncestr();
            TenPayV3OrderQueryRequestData querydata = new TenPayV3OrderQueryRequestData(TenPayV3Info.AppId, TenPayV3Info.MchId, "", nonceStr, WXPayBillno, TenPayV3Info.Key);
            var tencentpayresult = await TenPayV3.OrderQueryAsync(querydata);



            return(tencentpayresult);
        }
Exemplo n.º 5
0
        private void OrderQueryTest(string sandBoxKey, string nonceStr, string transactionId, string outTradeNo)
        {
            var dataInfo = new TenPayV3OrderQueryRequestData(base._appId, base._mchId, transactionId, nonceStr, outTradeNo, sandBoxKey);
            var result   = TenPayV3.OrderQuery(dataInfo);


            Console.WriteLine(result.ResultXml);
            Assert.IsTrue(result.IsReturnCodeSuccess());

            //下载对账单
            DownloadBillTest(sandBoxKey, nonceStr);
        }
Exemplo n.º 6
0
        public async Task <IActionResult> OrderQueryGet([FromQuery] OrderQueryModel orderQuery)
        {
            if (string.IsNullOrWhiteSpace(orderQuery.NonceStr))
            {
                orderQuery.NonceStr = TenPayV3Util.GetNoncestr();
            }
            if (string.IsNullOrWhiteSpace(orderQuery.OutTradeNo) && string.IsNullOrWhiteSpace(orderQuery.TransactionId))
            {
                return(BadRequest("需要OutTradeNo,TransactionId之一"));
            }
            orderQuery.SignType = "MD5";
            TenPayV3OrderQueryRequestData datainfo = new TenPayV3OrderQueryRequestData(
                TenPyConfigRead.AppId,
                TenPyConfigRead.MchId,
                orderQuery.TransactionId,
                orderQuery.NonceStr,
                orderQuery.OutTradeNo,
                TenPyConfigRead.Key);
            var result = await TenPayV3.OrderQueryAsync(datainfo);

            var log = _logger.CreateLogger("订单查询");

            if (result.return_code == "FAIL")
            {
                log.LogError($"商家订单号(OutTradeNo):{orderQuery.OutTradeNo}   通讯标记(return_code):{result.return_code}  {result.return_msg}");
            }
            if (result.result_code == "FAIL")
            {
                log.LogError($"商家订单号(OutTradeNo):{orderQuery.OutTradeNo}   业务结果(result_code):{result.result_code}\n{result.err_code}:{result.err_code_des}");
            }

            //string openid = res.Element("xml").Element("sign").Value;
            return(Ok(new
            {
                respond = result,
                request = orderQuery
            }));
        }
Exemplo n.º 7
0
        public HttpResponseMessage Notify()
        {
            var respData = new Dictionary <string, string>();

            try
            {
                // 读取微信支付返回结果
                var resp = ReadFromInputStream();
                var dict = ReadXml(resp);

                LogHelper.Info("\n\nnotify 接收内容:\n" + JsonHelper.Serialize(dict));

                // 微信订单号
                string transactionId, tradeNo;
                dict.TryGetValue("transaction_id", out transactionId);
                dict.TryGetValue("out_trade_no", out tradeNo);

                #region 1. 检查支付结果中transaction_id是否存在

                if (string.IsNullOrEmpty(transactionId))
                {
                    //若transaction_id不存在,则立即返回结果给微信支付后台
                    respData.Add("return_code", "FAIL");
                    respData.Add("return_msg", "支付结果中微信订单号不存在");

                    var xml = DictToXml(respData);
                    LogHelper.Info("\n\nnotify 响应内容:\n" + xml);

                    return(RetMessage(xml));
                }

                #endregion

                #region 2. 同步查询订单,判断订单真实性

                var appId = ConfigurationManager.AppSettings["appId"];
                var mchId = ConfigurationManager.AppSettings["mchId"];
                var key   = ConfigurationManager.AppSettings["appKey"];

                var reqData   = new TenPayV3OrderQueryRequestData(appId, mchId, transactionId, TenPayV3Util.GetNoncestr(), "", key);
                var queryData = TenPayV3.OrderQuery(reqData);

                if (queryData.result_code == "SUCCESS" && queryData.result_code == "SUCCESS")
                {//查询订单成功
                    // 业务逻辑:更新订单状态
                    if (_orderService.UpdateOrderStatus(tradeNo, (int)Enums.OrderStatus.未发货))
                    {
                        respData.Add("return_code", "SUCCESS");
                        respData.Add("return_msg", "OK");

                        var xml = DictToXml(respData);
                        LogHelper.Info("\n\nnotify 响应内容:\n" + xml);

                        return(RetMessage(xml));
                    }
                    else
                    {
                        respData.Add("return_code", "FAIL");
                        respData.Add("return_msg", "订单状态修改失败");

                        var xml = DictToXml(respData);
                        LogHelper.Info("\n\nnotify 响应内容:\n" + xml);

                        return(RetMessage(xml));
                    }
                }
                else
                {//若订单查询失败,则立即返回结果给微信支付后台
                    respData.Add("return_code", "FAIL");
                    respData.Add("return_msg", "订单查询失败");

                    var xml = DictToXml(respData);
                    LogHelper.Info("\n\nnotify 响应内容:\n" + xml);

                    return(RetMessage(xml));
                }

                #endregion
            }
            catch (Exception ex)
            {
                LogHelper.Info("\n\nnotify 异常:\n", ex);
                respData.Add("return_code", "FAIL");
                respData.Add("return_msg", "系统异常:" + ex.Message);

                var xml = DictToXml(respData);
                return(RetMessage(xml));
            }
        }
Exemplo n.º 8
0
        /// <summary>
        /// 订单查询
        /// </summary>
        /// <param name="requestDto"></param>
        /// <returns></returns>
        public async Task <OrderQueryResult> OrderQuery(GetWeiXinPaymentBeforeRequestDto requestDto)
        {
            TenPayV3OrderQueryRequestData data = new TenPayV3OrderQueryRequestData(AppID, MerchantNumber, "wx0818171559664608e39c01920461325676", GetRandomString(16, false, true, true, false, string.Empty), "GDSPDD_IKJRMNLCCJ20190408181709", MerchantSecret);

            return(TenPayV3.OrderQuery(data));
        }
Exemplo n.º 9
0
        /// <summary>
        /// 微信支付的结果校验
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void timerDo2_Tick(object sender, ElapsedEventArgs e)
        {
            t2.Enabled = false;
            Console.WriteLine("开始支付查询");
            LogHelper.WriteLog(typeof(string), "开始支付查询");
            try
            {
                var time = DateTime.Now;
                if (time.Second % 3 == 0)
                {
                    context_m2.Dispose();
                    context_m2 = new MSZ();
                    //t.Enabled = false;
                    var list = context_m2.BillState.Where(x => x.State == 0).ToList();
                    if (list.Count == 0)
                    {
                        LogHelper.WriteLog(typeof(string), "无数据跳出支付查询");
                        t2.Enabled = true;
                        return;
                    }
                    else
                    {
                        LogHelper.WriteLog(typeof(FrmMain), "进行支付遍历");
                        for (int i = 0; i < list.Count; i++)
                        {
                            var    entity   = list[i];
                            string nonceStr = TenPayV3Util.GetNoncestr();
                            TenPayV3OrderQueryRequestData order = new TenPayV3OrderQueryRequestData(entity.Appid, entity.Mch_id, null, nonceStr, entity.BillNum, entity.Key, "MD5");
                            var result = TenPayV3.OrderQuery(order);
                            LogHelper.WriteLog(typeof(FrmMain), "返回结果:" + JsonConvert.SerializeObject(result));
                            var bill = context_m2.BillState.FirstOrDefault(x => x.BillNum == entity.BillNum);
                            if (result.return_code == "SUCCESS" && result.result_code == "SUCCESS" && result.trade_state == "SUCCESS")
                            {
                                LogHelper.WriteLog(typeof(FrmMain), "金额:" + result.cash_fee);

                                if (result.trade_state == "SUCCESS")
                                {
                                    Console.WriteLine("SUCCESS");
                                    bill.State = 1;
                                    Console.WriteLine("保存:" + context_m2.SaveChanges());
                                    var sbill = context_m2.StudentBill.FirstOrDefault(x => x.StudentBillUUID == bill.SBillUUID.Value);
                                    LogHelper.WriteLog(typeof(FrmMain), "钱:" + sbill.OrderMoney);
                                    LogHelper.WriteLog(typeof(FrmMain), "钱2:" + (decimal.Parse(result.cash_fee)));
                                    LogHelper.WriteLog(typeof(FrmMain), "愿订单时间:" + DateTime.Parse(sbill.OederTime));

                                    if ((string.IsNullOrEmpty(sbill.OrderNum)) || ((!string.IsNullOrEmpty(sbill.OrderNum)) && sbill.OrderNum != result.out_trade_no && DateTime.Parse(sbill.OederTime) < DateTime.ParseExact(result.time_end, "yyyyMMddHHmmss", System.Globalization.CultureInfo.CurrentCulture)))
                                    {
                                        LogHelper.WriteLog(typeof(string), "进入条件,修改数据");
                                        sbill.OrderMoney     = sbill.OrderMoney + (decimal.Parse(result.cash_fee) / 100);
                                        sbill.OrderNum       = result.out_trade_no;
                                        sbill.OederTime      = DateTime.ParseExact(result.time_end, "yyyyMMddHHmmss", System.Globalization.CultureInfo.CurrentCulture).ToString("yyyy-MM-dd HH:mm:ss");
                                        sbill.SystemUserUUID = context_m2.SystemUser.FirstOrDefault(x => x.Wechat == result.openid).SystemUserUUID;
                                    }
                                }
                                else if (result.trade_state == "REFUND")
                                {
                                    Console.WriteLine("REFUND");

                                    bill.State = 2;
                                }
                                else if (result.trade_state == "NOTPAY")
                                {
                                    Console.WriteLine("NOTPAY");

                                    bill.State = 3;
                                }
                                else if (result.trade_state == "CLOSED")
                                {
                                    Console.WriteLine("CLOSED");

                                    bill.State = 4;
                                }
                                else if (result.trade_state == "REVOKED")
                                {
                                    Console.WriteLine("REVOKED");

                                    bill.State = 5;
                                }
                                else if (result.trade_state == "USERPAYING")
                                {
                                    Console.WriteLine("USERPAYING");

                                    bill.State = 0;
                                }
                                else if (result.trade_state == "PAYERROR")
                                {
                                    Console.WriteLine("PAYERROR");

                                    bill.State = 6;
                                }
                                var num = context_m2.SaveChanges();
                                Console.WriteLine("保存" + num);
                            }
                            //else
                            //{
                            //    bill.State = -1;
                            //    context_m.SaveChanges();
                            //}
                        }
                    }
                }
                else
                {
                    LogHelper.WriteLog(typeof(string), "非时段跳出");
                    t2.Enabled = true;
                    return;
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                LogHelper.WriteLog(typeof(string), "支付查询错误:" + ex.Message);
            }
            finally
            {
                t2.Enabled = true;
            }
        }