示例#1
0
        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}]");
                }
            }
        }
示例#2
0
        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);
        }