/// <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);
        }
        public async Task <RedPackResult> SendRedPackAsync(RedPackParam param)
        {
            var url      = "https://api.mch.weixin.qq.com/mmpaymkttransfers/sendredpack";
            var dataDic  = new SortedDictionary <string, object>();
            var wxConfig = _options.Value;

            dataDic.SetValue("nonce_str", WeChatPayUtility.GeneratorNonceStr()); //配置文件读取
            dataDic.SetValue("mch_billno", param.MchBillno ?? WeChatPayUtility.GeneratorNonceStr());
            dataDic.SetValue("mch_id", wxConfig.MechId);                         //传入或者配置
            dataDic.SetValue("wxappid", wxConfig.WxAppId);
            dataDic.SetValue("send_name", param.SendName);                       //传入
            dataDic.SetValue("re_openid", param.ReOpenId);                       //
            dataDic.SetValue("total_amount", param.TotalAmount);                 //配置读取
            dataDic.SetValue("total_num", param.TotalNum);                       //传入
            dataDic.SetValue("wishing", param.Wishing);                          //传入
            dataDic.SetValue("client_ip", param.ClientIp);                       //传入
            dataDic.SetValue("act_name", param.ActName);                         //传入
            dataDic.SetValue("remark", param.Remark);                            //传入
            dataDic.SetValue("scene_id", param.SceneId);                         //传入
            dataDic.SetValue("risk_info", param.RiskInfo);                       //传入

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

            dataDic.SetValue("sign", sign);

            var certPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, wxConfig.CertPath);
            var cert     = new X509Certificate2(certPath);
            var result   = await _aSampleHttpClient.PostAsync <RedPackResult>(url, dataDic.ToXml(), DeserializeType.XmlDeserialize, cert);

            return(result);
        }
Esempio n. 3
0
        /// <summary>
        /// 创建菜单按钮
        /// </summary>
        /// <param name="menuJsonStr"></param>
        /// <returns></returns>
        public async Task <HttpRequestResult> CreateMenuAsync(string menuJsonStr)
        {
            //获取微信令牌
            var accessToken = await GetAccessTokenAsync();

            //创建菜单
            var createMenuUrl = $"https://api.weixin.qq.com/cgi-bin/menu/create?access_token={accessToken.Data.ToString()}";
            var result        = await _aSampleHttpClient.PostAsync <CreateMenuResult>(createMenuUrl, menuJsonStr);

            if (result.ErrorCode == "0")
            {
                return(HttpRequestResult.Success(result, ""));
            }
            return(HttpRequestResult.Error(result.ErrorMsg));
        }
        public async Task <string> SaveFileAsync(IFormFile file)
        {
            //Log.Information($"FileSaverService -> SaveFile. webRootPath: {webRootPath}, file: {JsonConvert.SerializeObject(file)}");

            try
            {
                var fileName = $"{Path.GetExtension(file.FileName)}";
                var url      = _configuration.GetSection("fileStorage:imageUrl").Value;
                var savePath = await _aSampleHttpClient.PostAsync(url, file);

                return(savePath);
            }
            catch (Exception ex)
            {
                //Log.Error(ex, "Saving failed: FileSaverService -> SaveFile");
                throw ex;
            }
        }