Esempio n. 1
0
 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));
 }
Esempio n. 2
0
        /// <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));
        }
Esempio n. 3
0
 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;
 }
Esempio n. 4
0
 /// <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);
 }
Esempio n. 5
0
 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);
 }
Esempio n. 6
0
 public WeChatPayer(WeChatPayOptions option, ILoggerFactory loggerFactory)
 {
     this.option  = option;
     this.logger  = loggerFactory.CreateLogger <WeChatPayer>();
     weChatPayApi = new WeChatPayApi(option, loggerFactory);
 }