//得到查询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); }
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; } }
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); }