示例#1
0
        //得到查询xml签名
        private static string GetQueryOrderPostSign(WXQueryOrderPost postParams)
        {
            //拼接排序list
            Dictionary <string, string> packageParams = new Dictionary <string, string>();

            packageParams.Add("appid", postParams.appid);
            packageParams.Add("mch_id", postParams.mch_id);
            packageParams.Add("nonce_str", postParams.nonce_str);
            packageParams.Add("out_trade_no", postParams.out_trade_no);
            StringBuilder sb = new StringBuilder();

            foreach (var packageParam in packageParams)
            {
                sb.Append(packageParam.Key);
                sb.Append('=');
                sb.Append(packageParam.Value);
                sb.Append('&');
            }
            sb.Append("key=");
            sb.Append(PartnerKey);//key设置路径:微信商户平台(pay.weixin.qq.com)-->账户设置-->API安全-->密钥设置
            //这里又用到了从实例代码复制的MD5 可以去上面copy
            String packageSign = MD5Tool.GetMD5(sb.ToString()).ToUpper();

            return(packageSign);
        }
示例#2
0
        public const string Order_PAYERROR   = "PAYERROR";   //支付失败(其他原因,如银行返回失败)
        //查询订单
        public static bool QueryOrder(string outTradeNoId)
        {
            WXQueryOrderPost post = new WXQueryOrderPost();

            post.appid        = Pay_App_Id;
            post.mch_id       = PartnerId;
            post.out_trade_no = outTradeNoId;
            post.nonce_str    = genNonceStr(32);//随机字符串  **1 不超过32位
            post.sign         = GetQueryOrderPostSign(post);

            Dictionary <string, string> firstSignParams = GetQueryOrderParams(post);
            string xmlParams = toXml(firstSignParams);
            string callStr   = HttpPost.Post(OrderQueryUrl, xmlParams);

            // Log.Debug("查询订单:");
            // Log.Debug(callStr);
            try
            {
                XElement xe = XElement.Parse(callStr);
                XElement tradeStatElement = xe.Element("trade_state");
                if (tradeStatElement == null)
                {
                    return(false);
                }
                return(tradeStatElement.Value == Order_SUCCESS);
            }
            catch (Exception e)
            {
                Log.Error(e + "查询微信支付订单失败");
                throw;
            }
        }
示例#3
0
        private static Dictionary <string, string> GetQueryOrderParams(WXQueryOrderPost postParams)
        {
            Dictionary <string, string> packageParams = new Dictionary <string, string>();

            packageParams.Add("appid", postParams.appid);
            packageParams.Add("mch_id", postParams.mch_id);
            packageParams.Add("out_trade_no", postParams.out_trade_no);
            packageParams.Add("nonce_str", postParams.nonce_str);
            packageParams.Add("sign", postParams.sign);
            return(packageParams);
        }