public string MakeSign(WeChatPayOptions option) { if (option.IsDebug) { string url = "https://api.mch.weixin.qq.com/sandboxnew/pay/getsignkey"; WeChatPayData signkeyPayData = new WeChatPayData(); signkeyPayData.SetValue("mch_id", option.MchID); //商户号 signkeyPayData.SetValue("nonce_str", Guid.NewGuid().ToString("N").ToLower()); //随机字符串 signkeyPayData.SetValue("sign", signkeyPayData.MakeSign("MD5", option.Key)); string response = (new HttpService(option)).Post(signkeyPayData.ToXml(), url, false, 6); //调用HTTP通信接口提交数据 WeChatPayData result = new WeChatPayData(); result.FromXml(response); if (result.GetValue("return_code")?.ToString() == "SUCCESS") { var key = result.GetValue("sandbox_signkey")?.ToString(); return(MakeSign(key)); } throw new WeChatPayException("获取沙盒签名失败" + result.ToJson()); } if ((this.GetValue("signType") ?? this.GetValue("sign_type"))?.ToString() != "MD5") { return(MakeSign(SIGN_TYPE_HMAC_SHA256, option.Key)); } return(MakeSign(option.Key)); }
/// <summary> /// 注册微信支付 /// </summary> /// <param name="services"></param> /// <param name="acOption"></param> /// <returns></returns> public static IServiceCollection UseWeChatPay(this IServiceCollection services, Action <WeChatPayOptions> acOption) { if (acOption == null) { throw new ArgumentException(nameof(acOption)); } var option = new WeChatPayOptions(); acOption?.Invoke(option); return(AddWeChatPay(services, option)); }
internal WeChatPayApi(WeChatPayOptions option, ILoggerFactory loggerFactory) { if (option.IsDebug) { payHost = "https://api.mch.weixin.qq.com/sandboxnew"; } else { payHost = "https://api.mch.weixin.qq.com"; } logger = loggerFactory.CreateLogger <WeChatPayApi>(); httpService = new HttpService(option); this.option = option; }
/// <summary> /// 注册微信支付 /// </summary> /// <param name="services"></param> /// <param name="options"></param> /// <returns></returns> public static IServiceCollection AddWeChatPay(this IServiceCollection services, WeChatPayOptions options) { if (options == null) { throw new ArgumentException(nameof(options)); } //添加单例 services.AddSingleton(new WeChatPayer(options, services.BuildServiceProvider().GetRequiredService <ILoggerFactory>())); return(services); }
public HttpService(WeChatPayOptions config) { Config = config; USER_AGENT = string.Format("WXPaySDK/{3} ({0}) .net/{1} {2}", Environment.OSVersion, Environment.Version, Config.MchID, typeof(HttpService).Assembly.GetName().Version); }
public WeChatPayer(WeChatPayOptions option, ILoggerFactory loggerFactory) { this.option = option; this.logger = loggerFactory.CreateLogger <WeChatPayer>(); weChatPayApi = new WeChatPayApi(option, loggerFactory); }