Ejemplo n.º 1
0
        /// <summary>
        /// 支付结果通知
        /// </summary>
        /// <param name="inputStream"></param>
        /// <param name="ReturnData"></param>
        /// <returns></returns>
        public static WxPayQueryResult ReceiveNofifyData(Stream inputStream, out WxPayData ReturnData)
        {
            WxPayData notifyData = GetNotifyData(inputStream);

            //检查支付结果中transaction_id是否存在
            if (!notifyData.IsSet("transaction_id"))
            {
                //若transaction_id不存在,则立即返回结果给微信支付后台
                ReturnData = new WxPayData();
                ReturnData.SetValue("return_code", "FAIL");
                ReturnData.SetValue("return_msg", "支付结果中微信订单号不存在");

                WxPayQueryResult result = new WxPayQueryResult(notifyData);
                return(result);
            }
            else
            {
                string transaction_id = notifyData.GetValue("transaction_id").ToString();

                //查询订单,判断订单真实性
                WxPayQueryResult result = QueryOrder(transaction_id: transaction_id);
                if (String.IsNullOrEmpty(result.transaction_id))
                {
                    //若订单查询失败,则立即返回结果给微信支付后台
                    ReturnData = new WxPayData();
                    ReturnData.SetValue("return_code", "FAIL");
                    ReturnData.SetValue("return_msg", "订单查询失败");
                }
                //查询订单成功
                else
                {
                    ReturnData = new WxPayData();
                    ReturnData.SetValue("return_code", "SUCCESS");
                    ReturnData.SetValue("return_msg", "OK");
                }

                return(result);
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 查询订单
        /// </summary>
        /// <param name="transaction_id"></param>
        ///  /// <param name="transaction_id"></param>
        /// <returns></returns>
        public static WxPayQueryResult QueryOrder(string transaction_id = null, string out_trade_no = null)
        {
            WxPayData req = new WxPayData();

            if (!String.IsNullOrEmpty(transaction_id))
            {
                req.SetValue("transaction_id", transaction_id);
            }
            if (!String.IsNullOrEmpty(out_trade_no))
            {
                req.SetValue("out_trade_no", out_trade_no);
            }

            WxPayData        _res   = PayApi.OrderQuery(req);
            WxPayQueryResult result = new WxPayQueryResult(_res);

            /*
             * res.GetValue("return_code").ToString() == "SUCCESS" &&
             *  res.GetValue("result_code").ToString() == "SUCCESS"
             */
            return(result);
        }