141 Star 1.2K Fork 346

RHQYZ / DotNetCore.SKIT.FlurlHttpClient.Wechat

 / 详情

能否提供一个三方平台验证票据的demo?

已完成
创建于  
2021-08-03 20:30

评论 (8)

杨二狗 创建了任务
展开全部操作日志

我没有实际调用过这个接口,只单纯封装了一下事件的实体模型。

能否先给我一个真实的数据(敏感字段可脱敏处理再贴上来)?我再据此给你可行的 demo。

RHQYZ 添加了
 
enhancement
标签
RHQYZ 添加了
 
question
标签

接受到的数据:
地址参数:http://xxx/Wechat/AuthorizationCallBack?signature=bd3a09cba0ad0eaab810526ae64ddf04355b4495&timestamp=1627834418&nonce=808409293&encrypt_type=aes&msg_signature=cf5e48332265d4b5cd919f79b1c379971646dd47

接受到的stream:

<xml>
    <AppId><![CDATA[wxf6c4156b9b86f89d]]></AppId>
    <Encrypt><![CDATA[b9U0E6wD5UBOsgi9F6nlUChoiXAMEADV30qmAQyxGYGrz40Mzc+j6Zb1XLMSpUEMQN7iXUmVz5KiR8TW9SgLrgVCN2wb/eMbIBYpeoWoZ3uvWeKncxUumMlNN+xrKFXtqb0LXbQj88QWCQpUPakzzmvE/5CoJE+DWOFfZa+K1oa1vJKEljoykyalNuZrviPzgyF7gjS/Trr1KdPjX4dZWcsN9GGr8bkuwPqqJIe8yOEH3EAzuBoqOmHdUJ0SCJhjb1DElu9FjiG5v71khNcVpCBGeRtVTF7bXsrwPlL0oGc+wOjOP9Ub6kPhF9aWw4y9LpMR4kFoDuryl0+LifUOyb2DeCnjF4mUYxkBaiDTccmI/SDY2o4YF53Sd7jlC3C1OePQ9n6bmX58XlTfzoJWyu1EEgZXWrY9auAIe0ZAVkunWlA6ndqTewp6Sr2cd98n3QSy9A2FGu2UfKvJYz8BPg==]]></Encrypt>
</xml>

盛派sdk操作如下:

 [HttpPost("/Wechat/AuthorizationCallBack")]
        [AllowAnonymous]
        public string AuthorizationCallBacke([FromQuery]PostModel postModel)
        {
            try
            {
                postModel.Token = component_Token;
                postModel.EncodingAESKey = component_EncodingAESKey;//根据自己后台的设置保持一致
                postModel.AppId = component_AppId;//根据自己后台的设置保持一致 
                App.HttpContext.Request.EnableBuffering(); 
                var messageHandler = new CustomThirdPartyMessageHandler(App.HttpContext.Request.Body, postModel);//初始化
                messageHandler.Execute();//执行
                Log.Information("获取微信推送ticket解析后的数据:" + messageHandler.ToJson());
                if (messageHandler.RequestMessage.InfoType == RequestInfoType.component_verify_ticket)
                {
                    var vTicket = messageHandler.RequestMessage as RequestMessageComponentVerifyTicket;
                    var options = new DistributedCacheEntryOptions().SetSlidingExpiration(TimeSpan.FromHours(12));
                    _cache.SetString(CACHE_KEY_TICKET, vTicket.ComponentVerifyTicket, options);
                } 
            }
            catch (Exception ex)
            {
                ex.Message.LogError();
            }
            return "success"; 
        }

它这个 Encrypt 的加密方式、跟公众号本身的安全模式的加密方式有区别么?我看官方给的示例代码好像是一样的。

如果是一样的,那么跟公众号的安全模式下的解析回调通知用法一样,文档见此:https://gitee.com/fudiwei/DotNetCore.SKIT.FlurlHttpClient.Wechat/blob/main/docs/WechatApi/Advanced_EventDataDeserialization.md#%E5%AE%89%E5%85%A8%E6%A8%A1%E5%BC%8F

对应的实体模型是:https://gitee.com/fudiwei/DotNetCore.SKIT.FlurlHttpClient.Wechat/blob/main/src/SKIT.FlurlHttpClient.Wechat.Api/Events/OpenComponent/ComponentVerifyTicketEvent.cs

P.S. 如果文档理解有困难可以给我留言从哪开始没看懂,可能是我文档写的不够通俗。

好的,我先试一下,之前没看到这篇文档,感谢! :pray:

文档的入口在这里哈~

截图

噢对了,如果文档里 callbackXml 那个字符串怎么在 Action 里得来的你不清楚,可以看示例项目,示例项目里有一个例子是关于这个的。

好的,再次感谢耐心指导

I'll close this issue. If you see other bugs about this, you can reopen it.

RHQYZ 任务状态待办的 修改为已完成
RHQYZ 移除了
 
question
标签

登录 后才可以发表评论

状态
负责人
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
参与者(2)
628099 fudiwei 1627875359
C#
1
https://gitee.com/fudiwei/DotNetCore.SKIT.FlurlHttpClient.Wechat.git
git@gitee.com:fudiwei/DotNetCore.SKIT.FlurlHttpClient.Wechat.git
fudiwei
DotNetCore.SKIT.FlurlHttpClient.Wechat
DotNetCore.SKIT.FlurlHttpClient.Wechat

搜索帮助

53164aa7 5694891 3bd8fe86 5694891