static ApiTestBase()
        {
            //配置构造器
            WeChatSDKBuilder.Create()
            .WithApiLogger(new DebugLogger("Api"))
            .WithPayLogger(new DebugLogger("Pay"))
            .Build();

            //注册Key。这里用于单元测试,写死。在实际开发中,可以考虑使用Sesstion来存储
            WeChatFrameworkFuncsManager.Current.Register(WeChatFrameworkFuncTypes.GetKey,
                                                         model => "wxa6eecd3e040a2d1e");

            //注册获取配置函数:根据Key获取微信配置(加载一次后续将缓存)
            WeChatFrameworkFuncsManager.Current.Register(WeChatFrameworkFuncTypes.Config_GetWeChatConfigByKey,
                                                         model =>
            {
                var arg = model as WeChatApiCallbackFuncArgInfo;
                return(new WeChatConfig()
                {
                    //AppId = "wxe753e9de3a7ebfc2",
                    //AppSecret = "7cc4b4ef1daf99791d9a4f64b8f94648"
                    AppId = "wxaf360c577178e6f5",
                    AppSecret = "42b16416635613b8ca4dd30faaf21362"
                });
            });
        }
        static ApiTestBase()
        {
            //配置构造器
            WeChatSDKBuilder.Create()
            .WithApiLogger(new DebugLogger("Api"))
            .WithPayLogger(new DebugLogger("Pay"))
            .Build();

            //注册Key。这里用于单元测试,写死。在实际开发中,可以考虑使用Sesstion来存储
            WeChatFrameworkFuncsManager.Current.Register(WeChatFrameworkFuncTypes.GetKey,
                                                         model => "wxa6eecd3e040a2d1e");

            //注册获取配置函数:根据Key获取微信配置(加载一次后续将缓存)
            WeChatFrameworkFuncsManager.Current.Register(WeChatFrameworkFuncTypes.Config_GetWeChatConfigByKey,
                                                         model =>
            {
                var arg = model as WeChatApiCallbackFuncArgInfo;
                return(new WeChatConfig()
                {
                    AppId = "wx9ff101863db7db9c",
                    AppSecret = "f97b922e9cf4c1aedb4843f63b7cf6d7"
                                //AppId= "wxaf360c577178e6f5",
                                //AppSecret= "42b16416635613b8ca4dd30faaf21362"
                });
            });
        }
 static ApiTestBase()
 {
     WeChatSDKBuilder.Create()
     //设置日志记录
     .WithLoggerAction((tag, message) =>
     {
         Console.WriteLine(string.Format("Tag:{0}\tMessage:{1}", tag, message));
     })
     //注册Key。不再需要各个控制注册
     .Register(WeChatFrameworkFuncTypes.GetKey, model =>
     {
         return("wx9ff101863db7db9c");
     }
               )
     //注册获取配置函数:根据Key获取微信配置(加载一次后续将缓存)
     .Register(WeChatFrameworkFuncTypes.Config_GetWeChatConfigByKey,
               model =>
     {
         var arg = model as WeChatApiCallbackFuncArgInfo;
         return(new WeChatConfig()
         {
             AppId = "wx9ff101863db7db9c",
             AppSecret = "f97b922e9cf4c1aedb4843f63b7cf6d7"
                         //AppId= "wxaf360c577178e6f5",
                         //AppSecret= "42b16416635613b8ca4dd30faaf21362"
         });
     })
     .Build();
 }
 private void ConfigureWeChatSdk()
 {
     WeChatSDKBuilder.Create()
     .WithLoggerAction((tag, message) => { Console.WriteLine(string.Format("Tag:{0}\tMessage:{1}", tag, message)); })
     .Register(WeChatFrameworkFuncTypes.GetKey, model => _appConfiguration["Authentication:WeChat:AppId"])
     .Register(WeChatFrameworkFuncTypes.Config_GetWeChatConfigByKey,
               model =>
     {
         var arg = model as WeChatApiCallbackFuncArgInfo;
         return(new WeChatConfig
         {
             AppId = _appConfiguration["Authentication:WeChat:AppId"],
             AppSecret = _appConfiguration["Authentication:WeChat:AppSecret"]
         });
     })
     .Build();
 }
Example #5
0
        public static void RegisterSdkFuncs()
        {
            var baseDir = HostingEnvironment.MapPath("~/");

            baseDir = Path.Combine(baseDir, "Storage");
            if (!Directory.Exists(baseDir))
            {
                Directory.CreateDirectory(baseDir);
            }

            WeChatSDKBuilder.Create()
            //设置Api日志记录器
            .WithApiLogger(new NLogLogger("WeChatApiLogger"))
            //设置支付日志记录器
            .WithPayLogger(new NLogLogger("WeChatPayLogger"))
            //设置存储管理提供程序
            .WithStorageProvider(new LocalStorageProvider(Path.Combine(baseDir, "WeChat"), "/Storage/WeChat"))
            .Build();

            //注册Key。不再需要各个控制注册
            WeChatFrameworkFuncsManager.Current.Register(WeChatFrameworkFuncTypes.GetKey,
                                                         model => WeiChatApplicationContext.Current.TenantId);

            //注册获取配置函数:根据Key获取微信配置(加载一次后续将缓存)
            WeChatFrameworkFuncsManager.Current.Register(WeChatFrameworkFuncTypes.Config_GetWeChatConfigByKey,
                                                         model =>
            {
                var arg = model as WeChatApiCallbackFuncArgInfo;
                using (var db = new AppDbContext())
                {
                    var appConfig = db.WeiChat_Apps.Find(arg.Data);
                    if (appConfig == null)
                    {
                        throw new Exception("您尚未配置公众号,请配置公众号信息!");
                    }
                    return(appConfig);
                }
            });

            //注册获取微信支付配置函数:根据Key获取微信支付配置(加载一次后续将缓存)
            WeChatFrameworkFuncsManager.Current.Register(WeChatFrameworkFuncTypes.Config_GetWeChatPayConfigByKey,
                                                         model =>
            {
                var arg = model as WeChatPayCallbackFuncArgInfo;
                using (var _db = new AppDbContext())
                {
                    var key = arg.Api == null ? null : arg.Api.GetKey();
                    if (key == null)
                    {
                        key = arg.Data;
                    }

                    var tenantId  = key != null ? (int)key : WeiChatApplicationContext.Current.TenantId;
                    var appConfig = _db.WeiChat_Pays.FirstOrDefault(p => p.TenantId == tenantId);
                    if (appConfig == null)
                    {
                        throw new Exception("您尚未配置微信支付,请配置微信支付信息!");
                    }
                    return(appConfig);
                }
            });

            //模板消息发送:记录发送日志
            WeChatFrameworkFuncsManager.Current.Register(WeChatFrameworkFuncTypes.APIFunc_TemplateMessageApi_Create,
                                                         model =>
            {
                var arg = model as WeChatApiCallbackFuncArgInfo;
                var messagesTemplateLogFuncModel = arg.Data as List <MessagesTemplateLogFuncModel>;
                if ((messagesTemplateLogFuncModel == null) || (messagesTemplateLogFuncModel.Count == 0))
                {
                    return(true);
                }
                var key          = arg.Api == null ? null : arg.Api.GetKey();
                var tenantId     = key != null ? (int)key : WeiChatApplicationContext.Current.TenantId;
                var userId       = WeiChatApplicationContext.Current.UserId;
                var messageTplNo = messagesTemplateLogFuncModel.First().MessagesTemplateNo;
                using (var _db = new AppDbContext())
                {
                    var messageTemplate =
                        _db.WeiChat_MessagesTemplates.FirstOrDefault(
                            p => (p.TenantId == tenantId) && (p.TemplateNo == messageTplNo));
                    if (messageTemplate == null)
                    {
                        throw new Exception(
                            string.Format(
                                "模板库中不存在此模板消息,请先维护。模板Id:{0}。模板库地址:https://mp.weixin.qq.com/advanced/tmplmsg?action=tmpl_store&t=tmplmsg/store&token=1241910100&lang=zh_CN",
                                messageTplNo));
                    }
                    var logs = messagesTemplateLogFuncModel.Select(p => new WeiChat_MessagesTemplateSendLog
                    {
                        CreateTime         = p.CreateTime,
                        BatchNumber        = p.BatchNumber,
                        Content            = p.Content,
                        MessagesTemplateNo = p.MessagesTemplateNo,
                        MessagesTemplateId = messageTemplate.Id,
                        ReceiverId         = p.ReceiverId,
                        TopColor           = p.TopColor,
                        Url      = p.Url,
                        TenantId = tenantId,
                        CreateBy = userId,
                        Result   = p.Result
                    }).ToList();
                    _db.WeiChat_MessagesTemplateSendLogs.AddRange(logs);
                    _db.SaveChanges();
                }
                return(true);
            });
        }