public string WxAppPay(WxOrderPay pay)
        {
            this.config = pay;
            string noncestr = Sha1Util.GetNonceStr();

            SortedList <String, String> postParams = new SortedList <String, String>();

            postParams.Add("appid", pay.AppId);
            postParams.Add("mch_id", pay.PartnerKey);
            postParams.Add("nonce_str", noncestr);
            postParams.Add("body", pay.body);
            postParams.Add("out_trade_no", pay.orderNo);
            postParams.Add("total_fee", (double.Parse(pay.tradeAmount) * 100).ToString());//元转分
            postParams.Add("spbill_create_ip", System.Web.HttpContext.Current.Request.UserHostAddress);
            postParams.Add("notify_url", pay.notifyUrl);
            postParams.Add("trade_type", "JSAPI");//APP
            postParams.Add("openid", pay.openId);
            string sign = this.CreateSign(postParams);

            postParams.Add("sign", sign);
            string prepayid = this.Unifiedorder(postParams);

            SortedList <String, String> outParams = new SortedList <String, String>();

            outParams.Add("appId", config.AppId);
            outParams.Add("timeStamp", Sha1Util.GetTimeStamp(DateTime.Now));
            outParams.Add("nonceStr", noncestr);
            //outParams.Add("partnerid", config.PartnerKey);
            outParams.Add("package", $"prepay_id={prepayid}");
            //outParams.Add("prepayid", prepayid);
            outParams.Add("signType", "MD5");

            //生成签名
            sign = this.CreateSign(outParams);
            outParams.Add("sign", sign);
            outParams.Add("retcode", "0");
            outParams.Add("retmsg", "成功");

            string result = Newtonsoft.Json.JsonConvert.SerializeObject(outParams);

            return(result);
        }
 public WeiXinPayClient()
 {
     this.config = new WeiXinPayConfig();
 }
 public WeiXinPayClient(WeiXinPayConfig config)
 {
     this.config = config;
 }