Example #1
0
        public ResultModel <AccessTokenModel> GetAccessTokenData(string code)
        {
            var url = string.Format(WrapConfig.AccessTokenUrl, BasicConfig.WeChat_AppId, BasicConfig.WeChat_Secret, code);

            var jsonResult = WHttpUtil.Get(url);

            if (!string.IsNullOrWhiteSpace(jsonResult))
            {
                var result = JsonConvert.DeserializeObject <AccessTokenModel>(jsonResult);

                if (result == null)
                {
                    return(new ResultModel <AccessTokenModel>
                    {
                        code = 0,
                        msg = jsonResult,
                        data = null
                    });
                }

                return(new ResultModel <AccessTokenModel>
                {
                    code = 1,
                    msg = jsonResult,
                    data = result
                });
            }

            return(null);
        }
Example #2
0
        public ResultModel <LoginSessionModel> Getjscode2session(string code)
        {
            var url = string.Format(SprogramConfig.jscode2session, BasicConfig.Sprogram_AppId, BasicConfig.SprogramAppSecret, code);

            var jsonResult = WHttpUtil.Get(url, "");

            if (!string.IsNullOrWhiteSpace(jsonResult))
            {
                var result = JsonConvert.DeserializeObject <LoginSessionModel>(jsonResult);

                if (result == null)
                {
                    return(new ResultModel <LoginSessionModel>
                    {
                        code = 0,
                        msg = jsonResult,
                        data = null
                    });
                }

                return(new ResultModel <LoginSessionModel>
                {
                    code = 1,
                    msg = jsonResult,
                    data = result
                });
            }

            return(null);
        }
Example #3
0
        public async Task <ResultModel <AccessTokenModel> > GetAccessTokenDataAync(string code, string appid, string secret)
        {
            var url = string.Format(WrapConfig.AccessTokenUrl, appid, secret, code);

            var jsonResult = await WHttpUtil.HttpGetAsync(url);

            if (!string.IsNullOrWhiteSpace(jsonResult))
            {
                var result = JsonConvert.DeserializeObject <AccessTokenModel>(jsonResult);

                if (result == null)
                {
                    return(new ResultModel <AccessTokenModel>
                    {
                        code = 0,
                        msg = jsonResult,
                        data = null
                    });
                }

                return(new ResultModel <AccessTokenModel>
                {
                    code = 1,
                    msg = jsonResult,
                    data = result
                });
            }

            return(null);
        }
Example #4
0
        public ResultModel <AccessTokenModel> GetBaseAccessTokenData(string appid, string secret)
        {
            var url = string.Format(WrapConfig.BaseAccessTokenUrl, appid, secret);

            var jsonResult = WHttpUtil.HttpGet(url);

            if (!string.IsNullOrWhiteSpace(jsonResult))
            {
                var result = JsonConvert.DeserializeObject <AccessTokenModel>(jsonResult);

                if (result == null)
                {
                    return(new ResultModel <AccessTokenModel>
                    {
                        code = 0,
                        msg = jsonResult,
                        data = null
                    });
                }

                return(new ResultModel <AccessTokenModel>
                {
                    code = 1,
                    msg = jsonResult,
                    data = result
                });
            }

            return(null);
        }
Example #5
0
        public ResultModel <UserInfoModel> GetUser_InfoData(string accesstoken, string openid)
        {
            var url        = string.Format(WrapConfig.User_InfoUrl, accesstoken, openid);
            var jsonResult = WHttpUtil.HttpGet(url);

            if (!string.IsNullOrWhiteSpace(jsonResult))
            {
                var result = JsonConvert.DeserializeObject <UserInfoModel>(jsonResult);
                if (result == null || !string.IsNullOrWhiteSpace(result.errcode))
                {
                    return(new ResultModel <UserInfoModel>
                    {
                        code = 0,
                        msg = jsonResult,
                        data = null
                    });
                }
                return(new ResultModel <UserInfoModel>
                {
                    code = 1,
                    msg = jsonResult,
                    data = result
                });
            }
            return(null);
        }
 public ResultModel <WechatStatusModel> CreateMenu(string appid, string appsecret, string menuhtml)
 {
     try
     {
         AuthorService author = new AuthorService();
         var           token  = author.GetBaseAccessTokenData();
         if (token != null && token.code == 1 && !string.IsNullOrWhiteSpace(token.data.access_token))
         {
             string createurl  = string.Format(WrapConfig.MenuCreate, token.data.access_token);
             var    jsonresult = WHttpUtil.Get(createurl, menuhtml);
             var    err        = JsonConvert.DeserializeObject <ErroResult>(jsonresult);
             if (err.errmsg == "ok")
             {
                 return(new ResultModel <WechatStatusModel>
                 {
                     code = 1,
                     msg = "绑定微信目录成功",
                     data = new WechatStatusModel()
                     {
                         msg = err.errmsg,
                         status = true
                     }
                 });
             }
             else
             {
                 return(new ResultModel <WechatStatusModel>
                 {
                     code = 0,
                     msg = "绑定微信目录失败",
                     data = new WechatStatusModel()
                     {
                         msg = "错误代码:" + err.errcode + "," + err.errmsg,
                         status = false
                     }
                 });
             }
         }
         else
         {
             return(new ResultModel <WechatStatusModel>
             {
                 code = 0,
                 msg = "token获取为空",
                 data = null
             });
         }
     }
     catch (Exception e)
     {
         Log.Err(e, "CreateMenu创建菜单异常");
         return(new ResultModel <WechatStatusModel>
         {
             code = 0,
             msg = e.Message,
             data = null
         });
     }
 }
Example #7
0
        private WeChatPayData UnifiedOrder(WeChatPayData inputObj, int timeOut = 6)
        {
            string url = WrapConfig.UnifiedorderUrl;

            //检测必填参数
            if (!inputObj.IsSet("out_trade_no"))
            {
                throw new Exception("缺少统一支付接口必填参数out_trade_no!");
            }
            else if (!inputObj.IsSet("body"))
            {
                throw new Exception("缺少统一支付接口必填参数body!");
            }
            else if (!inputObj.IsSet("total_fee"))
            {
                throw new Exception("缺少统一支付接口必填参数total_fee!");
            }
            else if (!inputObj.IsSet("trade_type"))
            {
                throw new Exception("缺少统一支付接口必填参数trade_type!");
            }

            //JSAPI关联参数
            if (inputObj.GetValue("trade_type").ToString() == "JSAPI" && !inputObj.IsSet("openid"))
            {
                throw new Exception("统一支付接口中,缺少必填参数openid!trade_type为JSAPI时,openid为必填参数!");
            }

            //回调url
            if (!inputObj.IsSet("notify_url"))
            {
                inputObj.SetValue("notify_url", WrapConfig.WeChatCallBackUrl);
            }

            //支付场景

            inputObj.SetValue("appid", BasicConfig.Wechat_PayaAppId); //公众账号ID
            inputObj.SetValue("mch_id", BasicConfig.WeChat_MchId);    //商户号
            inputObj.SetValue("spbill_create_ip", "8.8.8.8");         //终端ip
            inputObj.SetValue("nonce_str", GenerateNonceStr());       //随机字符串
            string trade_type = inputObj.GetValue("trade_type").ToString();
            string keyvalue   = BasicConfig.WeChat_AppKey;

            inputObj.SetValue("sign", inputObj.MakeSign(trade_type, keyvalue)); //签名

            string xml = inputObj.ToXml();

            Log.Info("支付请求参数xml:" + xml);

            string response = WHttpUtil.Post(xml, url, false, timeOut);

            WeChatPayData result = new WeChatPayData();

            result.LoadXml(response, trade_type, keyvalue);

            return(result);
        }
        /// <summary>
        /// 上传图片、语音、视频、缩略图片永久素材
        /// </summary>
        /// <param name="appid"></param>
        /// <param name="appsecret"></param>
        /// <param name="type">image、voice、video、thumb</param>
        /// <param name="media"></param>
        /// <param name="description"></param>
        /// <returns></returns>
        public ResultModel <ForeverMaterialModel> AppendForeverMaterial(string appid, string appsecret, string type, byte[] bt, string filename)
        {
            try
            {
                AuthorService author = new AuthorService();
                var           token  = author.GetBaseAccessTokenData();
                if (token != null && token.code == 1 && token.data != null && !string.IsNullOrWhiteSpace(token.data.access_token))
                {
                    string url    = string.Format(WrapConfig.AddMaterial + token.data.access_token + "&type=" + type);
                    var    result = WHttpUtil.HttpMediaIdPost(url, bt, filename);
                    if (result.Contains("errcode"))
                    {
                        //异常
                        var errorinfo = JsonConvert.DeserializeObject <ErroResult>(result);
                        return(new ResultModel <ForeverMaterialModel>
                        {
                            code = 0,
                            msg = errorinfo.errmsg,
                            data = null
                        });
                    }
                    else
                    {
                        var material = JsonConvert.DeserializeObject <ForeverMaterialModel>(result);
                        return(new ResultModel <ForeverMaterialModel>
                        {
                            code = 1,
                            msg = "上传素材成功",
                            data = material
                        });
                    }
                }

                return(new ResultModel <ForeverMaterialModel>
                {
                    code = 0,
                    msg = "token获取为空",
                    data = null
                });
            }
            catch (Exception e)
            {
                Log.Err(e, "上传永久素材异常");
                return(new ResultModel <ForeverMaterialModel>
                {
                    code = 0,
                    msg = e.Message,
                    data = null
                });
            }
        }
Example #9
0
        private WeChatPayData UnifiedOrder(WeChatPayData inputObj, int timeOut = 6)
        {
            try
            {
                string url = WrapConfig.UnifiedorderUrl;

                //检测必填参数
                if (!inputObj.IsSet("out_trade_no"))
                {
                    throw new Exception("缺少统一支付接口必填参数out_trade_no!");
                }
                else if (!inputObj.IsSet("body"))
                {
                    throw new Exception("缺少统一支付接口必填参数body!");
                }
                else if (!inputObj.IsSet("total_fee"))
                {
                    throw new Exception("缺少统一支付接口必填参数total_fee!");
                }
                else if (!inputObj.IsSet("trade_type"))
                {
                    throw new Exception("缺少统一支付接口必填参数trade_type!");
                }

                //JSAPI关联参数
                if (inputObj.GetValue("trade_type").ToString() == "JSAPI" && !inputObj.IsSet("openid"))
                {
                    throw new Exception("统一支付接口中,缺少必填参数openid!trade_type为JSAPI时,openid为必填参数!");
                }

                //NATIVE关联参数
                if (inputObj.GetValue("trade_type").ToString() == "NATIVE" && !inputObj.IsSet("product_id"))
                {
                    throw new Exception("统一支付接口中,缺少必填参数product_id!trade_type为JSAPI时,product_id为必填参数!");
                }

                //回调url
                if (!inputObj.IsSet("notify_url"))
                {
                    throw new Exception("统一支付接口中,缺少必填参数notify_url!trade_type为JSAPI时,notify_url为必填参数!");
                }

                //支付场景
                string trade_type = inputObj.GetValue("trade_type").ToString();
                string keyvalue   = "";


                if (trade_type == "JSAPI")
                {
                    inputObj.SetValue("appid", BasicConfig.Sprogram_AppId); //公众账号ID
                    inputObj.SetValue("mch_id", BasicConfig.WeChat_MchId);  //商户号

                    if (trade_type == "JSAPI")
                    {
                        keyvalue = BasicConfig.WeChat_AppKey;
                    }
                }

                inputObj.SetValue("nonce_str", GenerateNonceStr());                 //随机字符串
                inputObj.SetValue("sign", inputObj.MakeSign(trade_type, keyvalue)); //签名

                string xml = inputObj.ToXml();

                //Log.Info("xml:" + xml);

                string response = WHttpUtil.Post(xml, url, false, timeOut);

                WeChatPayData result = new WeChatPayData();

                result.LoadXml(response, trade_type, keyvalue);

                return(result);
            }
            catch (Exception ex)
            {
                throw new Exception(ex.ToString());
            }
        }