public WxPayData PostApiRequest(string url, IDictionary <string, string> values) { if (values == null) { throw new ArgumentNullException(nameof(values)); } var wxdata = new WxPayData(_WeixinPaymentSetting.MchKey); foreach (var p in values) { wxdata.SetValue(p.Key, p.Value); } wxdata.SetValue("appid", _WeixinPaymentSetting.AppId); wxdata.SetValue("mch_id", _WeixinPaymentSetting.MchId); wxdata.SetValue("nonce_str", WxPayData.GenerateNonceStr()); wxdata.SetValue("sign", wxdata.MakeSign()); if (!wxdata.CheckSign()) { throw new NopException("在请求之前发现签名校验错误!"); } using (var wc = new WebClient()) { wc.Encoding = System.Text.Encoding.UTF8; _logger.Information($"Post 微信支付API调用:URL=[{url}], DATA=[{wxdata.ToXml()}]"); var result = wc.UploadString(url, "POST", wxdata.ToXml()); _logger.Information($"微信支付调用返回数据:[{result}]"); var returnWeixinData = new WxPayData(this._WeixinPaymentSetting.MchKey); returnWeixinData.FromXml(result); var returnCode = returnWeixinData.GetValue("return_code"); if (returnCode != null && returnCode == "SUCCESS") { return(returnWeixinData); } else { var msg = returnWeixinData.GetValue("return_msg"); throw new NopException($"微信统一下单接口返回错误:[{msg}]"); } } }
private PrepayInfoModel PreparePrepayInfo(string prepayId, int orderId) { var payData = new WxPayData(_WeixinPaymentSetting.MchKey); payData.SetValue("appId", _WeixinPaymentSetting.AppId); payData.SetValue("timeStamp", WxPayData.GenerateTimeStamp()); payData.SetValue("nonceStr", WxPayData.GenerateNonceStr()); payData.SetValue("package", $"prepay_id={prepayId}"); payData.SetValue("signType", "MD5"); payData.SetValue("paySign", payData.MakeSign()); var model = new PrepayInfoModel() { AppId = payData.GetValue("appId"), TimeStamp = payData.GetValue("timeStamp"), NonceStr = payData.GetValue("nonceStr"), Package = payData.GetValue("package"), SignType = payData.GetValue("signType"), PaySign = payData.GetValue("paySign"), PrepayId = prepayId, OrderId = orderId, }; return(model); }