MysqlWechatPayConfigStorage
继承IWechatPayConfigStorage
主要是多商户支付配置,根据不同名称获取不同的支付配置。
serviceDescriptors.AddWechatPay(w =>
{
w.AppId = "wx1111111111111";
w.MerchantId = "11111111111";
w.PrivateKey = "xxxxxxxxxxxxxxxxxxx";
w.NotifyUrl = "https://www.xxxx.com?NotifyUrl";
});
serviceDescriptors.AddWechatPay().AddWehcatpayStorage<MysqlWechatPayConfigStorage>();
根据IWehcatPayServiceProvider
去获取微信支付的服务【IWechatPayNativePayService】,参数是商户支付配置的唯一标识。
public class PayController
{
private readonly IWechatPayNativePayService _wechatPayNativePayService;
public PayController(IWehcatPayServiceProvider wehcatPayServiceProvider)
{
_wechatPayNativePayService = wehcatPayServiceProvider.GetService<IWechatPayNativePayService>("shanghu1");
}
//支付
public async Task<WechatPayResult<WechatPayNativePayResponse>> Pay(WechatPayNativePayRequest request)
{
var resp = await _wechatPayNativePayService.PayAsync(request);
return resp;
}
}
//2。查询订单
var wechatOrderQueryService = serviceProvider.GetService<IWechatOrderQueryService>();
var result2 =await wechatOrderQueryService.QueryAsync(new WechatOrderQueryRequest()
{
OutTradeNo = orderId
});
//3.关闭订单
var wechatCloseOrderService = serviceProvider.GetService<IWechatCloseOrderService>();
var result3 = await wechatCloseOrderService.CloseAsync(new WechatCloseOrderRequest()
{
OutTradeNo = orderId
});
如果微信有新增接口,但Payments没有更新该怎么调用呢
public class CustomePayController
{
private readonly ICustomeWehcatPayService _customeWehcatPayService;
public CustomePayController(IWehcatPayServiceProvider wehcatPayServiceProvider)
{
_customeWehcatPayService = wehcatPayServiceProvider.GetService<ICustomeWehcatPayService>("shanghu1");
}
public async Task<WechatPayResult<WechatPayResponse>> Pay()
{
//设置请求url
_customeWehcatPayService.SetUrl("https://api.mch.weixin.qq.com/new/aaa");
IDictionary<string, object> dic = new Dictionary<string, object>();
dic.Add("params1", "11");
dic.Add("params2", "22");
dic.Add("params3", "33");
//构造参数
_customeWehcatPayService.SetExtensionParameter(dic);
var resp = await _customeWehcatPayService.Request();
return resp;
}
}