适用于AbpBoilerplate的微信模块。
- 公共库
- 普通商户模式微信支付
- 服务商模式微信支付
- 境内服务商分账
- 小程序码服务
- 小程序登录服务
- 手机号获取服务
- 小程序订阅消息服务
- 小程序数据分析服务
- 公众号自定义菜单服务
- 公众号素材管理相关服务接口定义
- 公众号模板消息服务
- 公众号用户管理服务
- 公众号用户标签管理服务
Date | Version | Content |
---|---|---|
V0.1.0 | 2023-4-22 | 初始版本 |
V0.1.1 | 2023-5-19 | 添加 小程序数据分析WeAnalysis 获取访问页面数据接口 |
其他使用案例请参考sample/WeChatPaySample
注意!Sample中的证书文件和配置为模拟数据,运行前请替换成真实有效的证书和配置
在项目中引用AbpBoilerplate.WeChat.Pay、AbpBoilerplate.WeChat.MiniProgram或AbpBoilerplate.WeChat.Official
dotnet add package AbpBoilerplate.WeChat.Pay
dotnet add package AbpBoilerplate.WeChat.MiniProgram
dotnet add package AbpBoilerplate.WeChat.Official
添加WeChatModule模块依赖
[DependsOn(typeof(PayModule))]
[DependsOn(typeof(MiniProgramModule))]
[DependsOn(typeof(OfficialModule))]
public class YourCoreModule : AbpModule
appsettings.json配置文件中,添加服务相关配置
示例:
"WeChat": {
"MiniProgram": {
"AppId": "wx0123456789123456", //小程序AppId
"AppSecret": "cae470e3235798", //小程序AppSecret
},
"Official": {
"AppId": "wx0123456789123456", //小程序AppId
"AppSecret": "cae470e3235798", //小程序AppSecret
},
"Pay": {
"ApiKey": "TESTcom12345678TESTcom12345678", //商户平台API密钥
"MchId": "1234567890", //商户号
"IsSandBox": "false", //是否处于沙箱模式。当处于沙箱模式时,所有的支付服务将会调用沙箱支付接口,该参数值默认为 false。
"NotifyUrl": "https://yourwebsite/api/WeChat/PayNotify", //支付结果的回调地址,用于接收支付结果通知。
"RefundNotifyUrl": "https://yourwebsite/api/WeChat/RefundNotify", //退款结果的回调地址,用于接收退款结果通知
"CertificateBlobContainerName": "Cert", //证书存储容器名称
"CertificateBlobName": "apiclient_cert_test", //证书存储文件名称
"CertificateAssetsName": "WeChatPaySample.Core.Assets.apiclient_cert_test.p12", //证书资源名
"CertificateFilePath": "D:\\apiclient_cert_test.p12",//证书文件物理路径
"CertificateSecret": "1234567890" //PKCS 12 证书的密钥,默认为商户号
}
}
...
默认提供两种证书存储方式,
- 存储在FileStorage文件系统(推荐);
- 存储在本地文件系统。
需要配置
"CertificateBlobContainerName": "Cert", //证书存储容器名称
"CertificateBlobName": "apiclient_cert_test", //证书存储文件名称
"CertificateAssetsName": "WeChatPaySample.Core.Assets.apiclient_cert_test.p12", //证书资源名
将有效的证书文件放在CertificateAssetsName对应的文件目录下,并设置属性为嵌入的资源
。
需要配置
"CertificateFilePath": "D:\\apiclient_cert_test.p12" //证书文件物理路径
保证路径下存在有效的证书文件。
在类中注入相关服务即可
调用小程序登录示例
using WeChat.MiniProgram.Services.Login;
public class MiniProgramAppService : ApplicationService
{
private readonly LoginService loginService;
public MiniProgramAppService(LoginService loginService)
{
this.loginService = loginService;
}
public async Task<Code2SessionResponse> Login(string accessCode)
{
var weChatLoginResult = await loginService.Code2SessionAsync(accessCode);
if (weChatLoginResult.ErrorCode != 0)
{
LogHelper.Logger.Error("小程序调用获取token接口失败,原因" + weChatLoginResult.ErrorMessage);
}
return weChatLoginResult;
}
}
你可以自己写一个CertificateStorageProvider获取证书文件,只需要实现ICertificateStorageProvider接口,并在你的CoreModule中注册CertificateStorageProviderType为自己的实现类即可。
public class MyCertificateStorageProvider : ICertificateStorageProvider
{
public byte[] GetBytes()
{
var url = "http://api.xxxx.com/get-certificate";
byte[] fileBytes = default(byte[]);
using (var webClient = new WebClient())
{
webClient.Headers.Add("Authorization", "xxxx");
var formData = new NameValueCollection();
formData["file_id"] = "xxxxx";
fileBytes = webClient.UploadValues(url, "POST", formData);
}
return fileBytes;
}
...
}
IocManager.Register<ICertificateStorageProvider, MyCertificateStorageProvider>();
https://github.com/EasyAbp/Abp.WeChat
作者:林小
The MIT License (MIT)