Skip to content

2.0.0

Compare
Choose a tag to compare
@gdlcf88 gdlcf88 released this 18 Dec 09:46
· 143 commits to master since this release
c4552e1

这是一个包含破坏性改动的版本更新,请参考以下信息进行升级。

微信应用(小程序/公众号/第三方平台)模块变动

  1. 模块封装的服务(例如 ACodeService)现在不再支持直接的依赖注入,须先注入 IAbpWeChatServiceFactory ,在用其创建服务实例。为了避免误用依赖注入,对所有服务从 Service 更名为 WeService(例如 ACodeService 更名为了 ACodeWeService)。在调用 IAbpWeChatServiceFactory.Create<TService>()时,如果不传参 appId,则由 Settings 提供 AppId 和相关机密配置。
  2. 移除 Options resolving 机制,引入 Options provider 机制。单一微信 app 的场景,只需配置模块的 Options 或 Settings 即可;多微信 app 的场景,请实现 IAbpWeChatOptionsProvider<TOptions>,或使用微信管理模块
  3. 重构 HttpApi 层,现在它只依赖 Abstractions 层,控制器不再实际处理业务,而是转发到 RequestHandlingService 处理。
  4. HttpApi 层的多个控制器方法,包括微信服务器通知的处理方法,增加了多租户/多微信应用支持。
  5. 一些依赖注入的服务从单例对象改为瞬时对象。

微信支付模块变动

  1. 模块封装的服务(例如 ServiceProviderPayService)现在不再支持直接的依赖注入,须先注入 IAbpWeChatPayServiceFactory ,在用其创建服务实例。为了避免误用依赖注入,对所有服务从 Service 更名为 WeService(例如 ServiceProviderPayService 更名为了 ServiceProviderPayWeService)。在调用 IAbpWeChatPayServiceFactory.Create<TService>()时,如果不传参 mchId,则由 Settings 提供 MchId 和相关机密配置。
  2. 移除 Options resolving 机制,引入 Options provider 机制。单一微信 app 的场景,只需配置模块的 Options 或 Settings 即可;多微信 app 的场景,请实现 IAbpWeChatPayOptionsProvider,或使用 PaymentService 模块
  3. 重构 HttpApi 层,现在它只依赖 Abstractions 层,控制器不再实际处理业务,而是转发到 RequestHandlingService 处理。
  4. HttpApi 层的多个控制器方法,包括微信服务器通知的处理方法,增加了多租户/多商户支持。
  5. 微信支付成功事件的签名验证、微信支付退款事件的解码,现在不再以事件处理器的形式进行,而是在调用事件处理器之前进行。
  6. 重构微信支付事件通知处理器的结构,并且不再破坏微信通知的消息原文,而是将解密后的内容放在 DecryptedXmlData 中,而 WeChatRequestXmlData 保持原文不变。
  7. 一些依赖注入的服务从单例对象改为瞬时对象。

新模块:微信第三方平台

在安装了第三方平台模块后,如果一个小程序/公众号应用配置的 AppSecret 为 null,则会被认为已对第三方平台授权,后者代为管理。

默认情况下,对于以上情况,将从 Settings 中取配置的第三方平台信息(如果 Settings 没有配置,则从 Options 中取值,作为默认值),然后以此平台的身份代替应用调用所有接口。

如果是多平台场景,请注入 ICurrentWeChatThirdPartyPlatform 改变当前 ComponentAppId:

var aCodeService = await WeChatServiceFactory.CreateAsync<ACodeWeService>(authorizerAppId);

using (currentWeChatThirdPartyPlatform.Change(componentAppId))
{
    // 代客户生成小程序码
    await aCodeService.GetUnlimitedACodeAsync("test");
}

除此之外,还需要实现 IAbpWeChatOptionsProvider<AbpWeChatThirdPartyPlatformOptions>,以帮助模块获取到第三方平台的机密配置信息,从而支持多平台场景。你也可以使用微信管理模块,它已经做好了实现。

What's Changed

  • Third party platform services and tokens management by @gdlcf88 in #36
  • Rename to WeChatThirdPartyPlatformController by @gdlcf88 in #37
  • Fix QueryAuthResponse by @gdlcf88 in #38
  • Make callback endpoints support multi-tenant and multi-app by @gdlcf88 in #35
  • Fix classes naming by @gdlcf88 in #39
  • Fix QueryAuthResponse by @gdlcf88 in #40
  • Introduce IWeChatThirdPartyPlatformEventHandlingService by @gdlcf88 in #41
  • Abstractions modules for common and open-platform by @gdlcf88 in #42
  • Introduce IWeChatThirdPartyPlatformOptionsProvider by @gdlcf88 in #43
  • Add componentAppId as arg in IAuthorizerRefreshTokenStore by @gdlcf88 in #44
  • Introduce IAuthorizerAccessTokenCache by @gdlcf88 in #45
  • Improvement event handling by @gdlcf88 in #46
  • Refactor all the modules by @gdlcf88 in #47
  • Introduce ICurrentWeChatThirdPartyPlatform by @gdlcf88 in #48
  • Refactor request handling services by @gdlcf88 in #49
  • Refactor IWeChatThirdPartyPlatformEventRequestHandlingService by @gdlcf88 in #50
  • Use EnableBuffering by @gdlcf88 in #51
  • Fix ThirdPartyPlatformWeService by @gdlcf88 in #52
  • Use ToStringContent by @gdlcf88 in #53
  • Auto changes current platform on app event handling by @gdlcf88 in #54
  • Fix HybridAccessTokenProvider by @gdlcf88 in #55
  • Fix HybridAccessTokenProvider again by @gdlcf88 in #56
  • Fix CreateTemplateRequest by @gdlcf88 in #57
  • Implement 3rd-party platform release test handling by @gdlcf88 in #58
  • Fix 3rd-party platform release test by @gdlcf88 in #59
  • Refactor IWeChatThirdPartyPlatformAppEventHandler by @gdlcf88 in #60
  • Fix ReleaseTestWeChatThirdPartyPlatformAppEventHandler by @gdlcf88 in #61
  • Add EncryptAsync in IWeChatNotificationEncryptor by @gdlcf88 in #62
  • Support multi-type response by @gdlcf88 in #63
  • Specify response UTF-8 encoding name by @gdlcf88 in #64
  • Refactor controllers to resolve the ABP route warning by @gdlcf88 in #65
  • Made SharedStackExchangeRedisAccessTokenCache work by @gdlcf88 in #66
  • Register SharedStackExchangeRedisAccessTokenCache by @gdlcf88 in #67

Full Changelog: 1.11.0...2.0.0