/// <summary>
        /// 统一下单
        /// </summary>
        public async Task <UnifiedOrderResult> UnifiedOrder(UnifiedOrderParam param)
        {
            var url     = "https://api.mch.weixin.qq.com/pay/unifiedorder";
            var dataDic = new SortedDictionary <string, object>();

            dataDic.SetValue("appid", _wxOptions.WxAppId);        //配置文件读取
            dataDic.SetValue("mch_id", _wxOptions.MechId);        //配置文件读取
            dataDic.SetValue("nonce_str", WeChatPayUtility.GeneratorNonceStr());
            dataDic.SetValue("body", _wxOptions.Body);            //传入或者配置
            dataDic.SetValue("out_trade_no", param.OutTradeNo ?? WeChatPayUtility.GeneratorNonceStr());
            dataDic.SetValue("total_fee", param.TotalFee);        //传入
            dataDic.SetValue("spbill_create_ip", "");             //
            dataDic.SetValue("notify_url", _wxOptions.NotifyUrl); //配置读取
            dataDic.SetValue("trade_type", param.TradeType);      //传入
            if (param.TradeType == "JSAPI")
            {
                dataDic.SetValue("OpenId", param.OpenId);
            }
            //可选参数
            dataDic.SetValue("goods_tag", _wxOptions.GoodsTag);
            dataDic.SetValue("attach", _wxOptions.Attach);
            dataDic.SetValue("time_start", DateTime.Now.ToString("yyyyMMddHHmmss"));
            dataDic.SetValue("time_expire", DateTime.Now.AddMinutes(40).ToString("yyyyMMddHHmmss"));

            var sign = WeChatPayUtility.MakeSign(dataDic.ToUrlString(), _wxOptions.MechKey);

            dataDic.SetValue("sign", sign);

            var xml    = dataDic.ToXml();
            var result = await _aSampleHttpClient.PostAsync <UnifiedOrderResult>(url, xml, DeserializeType.XmlDeserialize);

            return(result);
        }
Exemplo n.º 2
0
        public string TestToShowXml(UnifiedOrderParam param)
        {
            SetParams(param);
            ValidateParameters();
            string xml = ParamBuilder.ToXml();

            return(xml);
        }
Exemplo n.º 3
0
        public UnifiedOrderResult PostXml(UnifiedOrderParam param)
        {
            SetParams(param);
            ValidateParameters();
            ResultBuilder resultBuilder = PostForResult(Url, false, TimeOut);

            resultBuilder.BasicValidate();
            UnifiedOrderResult result = new UnifiedOrderResult(resultBuilder);

            return(result);
        }
        public async Task <string> JSAPIPay(UnifiedOrderParam param)
        {
            param.TradeType = "JSAPI";
            var result = await UnifiedOrder(param);

            if (result.ReturnCode == "SUCCESS" && result.ResultCode == "SUCCESS")
            {
                return(result.CodeUrl);
            }
            return(string.Empty);
        }
Exemplo n.º 5
0
 private void SetParams(UnifiedOrderParam param)
 {
     SetParam("body", param.Body);
     SetParam("attach", param.Attach);
     SetParam("out_trade_no", param.Out_trade_no);
     SetParam("total_fee", param.Total_fee);
     SetParam("spbill_create_ip", param.Spbill_create_ip);
     SetParam("time_start", param.Time_start);
     SetParam("time_expire", param.Time_expire);
     SetParam("goods_tag", param.Goods_tag);
     SetParam("notify_url", PaymentConfig.Instance.NOTIFY_URL);
     SetParam("trade_type", param.Trade_type);
     SetParam("openid", param.OpenId);
     SetParam("product_id", param.Product_id);
     SetParam("appId", param.AppId);
 }
Exemplo n.º 6
0
        /// <summary>
        /// 提交到微信,返回二维码的URL,通过二维码工具解析它
        /// </summary>
        /// <param name="orderid">订单号</param>
        /// <param name="vMoney">单位:分</param>
        /// <param name="userID">用户ID</param>
        /// <param name="product_id">产品ID</param>
        /// <returns></returns>
        public string RechargeTo(string orderid, decimal vMoney, int userID, string product_id = "")
        {
            var    totalfee  = (int)vMoney;
            string strImaUrl = string.Empty;
            Dictionary <string, string> dictReturnParams = new Dictionary <string, string>();

            try
            {
                WxPayClient       client            = GetWxPayClient();
                UnifiedOrderParam unifiedOrderParam = new UnifiedOrderParam()
                {
                    Body             = "微信支付",
                    Out_trade_no     = orderid,
                    Total_fee        = totalfee,
                    Spbill_create_ip = "",
                    Time_start       = DateTime.Now.ToString("yyyyMMddHHmmss"),
                    Time_expire      = DateTime.Now.AddMinutes(30).ToString("yyyyMMddHHmmss"),
                    Trade_type       = TradeType.NATIVE,
                    Product_id       = product_id
                };
                UnifiedOrderResult result = client.CreateUnifiedOrder(unifiedOrderParam);
                if (result.Success)
                {
                    dictReturnParams.Add("CodeUrl", result.Code_Url);
                    dictReturnParams.Add("PrepayId", result.Prepay_Id);
                    strImaUrl = result.Code_Url;
                }
                else
                {
                    dictReturnParams.Add("Error", result.ErrorMessage);
                }
            }
            catch (Exception ex)
            {
                dictReturnParams.Add("Error", ex.Message);
            }
            return(strImaUrl);
        }
Exemplo n.º 7
0
        /// <summary>
        /// 创建支付订单
        /// </summary>
        /// <param name="param"></param>
        /// <returns></returns>
        public UnifiedOrderResult CreateUnifiedOrder(UnifiedOrderParam param)
        {
            UnifiedOrderClient unifiedOrder = new UnifiedOrderClient();

            return(unifiedOrder.PostXml(param));
        }
Exemplo n.º 8
0
        public string TestToShowOrderRequestXml(UnifiedOrderParam param)
        {
            UnifiedOrderClient unifiedOrder = new UnifiedOrderClient();

            return(unifiedOrder.TestToShowXml(param));
        }