Jelajahi Sumber

微信支付时间调整

warr.qian 2 tahun lalu
induk
melakukan
312b413f28
3 mengubah file dengan 11 tambahan dan 41 penghapusan
  1. 0 16
      Common/WeChat/RandomGenerator.cs
  2. 0 20
      Common/WeChat/WxPayApi.cs
  3. 11 5
      Common/WeChat/WxPayNativePay.cs

+ 0 - 16
Common/WeChat/RandomGenerator.cs

@@ -12,22 +12,6 @@ namespace WingPaymentService.Common.WeChat
             _csp =  RandomNumberGenerator.Create();
         }
 
-        public int Next(int minValue, int maxExclusiveValue)
-        {
-            if (minValue >= maxExclusiveValue)
-                throw new ArgumentOutOfRangeException($"minValue must be lower than maxExclusiveValue");
-
-            long diff = (long)maxExclusiveValue - minValue;
-            long upperBound = uint.MaxValue / diff * diff;
-
-            uint ui;
-            do
-            {
-                ui = GetRandomUInt();
-            } while (ui >= upperBound);
-            return (int)(minValue + (ui % diff));
-        }
-
         public uint GetRandomUInt()
         {
             var randomBytes = GenerateRandomBytes(sizeof(uint));

+ 0 - 20
Common/WeChat/WxPayApi.cs

@@ -427,26 +427,6 @@ namespace WingPaymentService.Common.WeChat
             return result;
         }
 
-        /**
-        * 根据当前系统时间加随机序列来生成订单号
-         * @return 订单号
-        */
-        private string GenerateOutTradeNo()
-        {
-            var ran = new Random();
-            return string.Format("{0}{1}{2}", WxPayConfig.GetConfig().GetMchId(), DateTime.Now.ToString("yyyyMMddHHmmss"), ran.Next(999));
-        }
-
-        /**
-        * 生成时间戳,标准北京时间,时区为东八区,自1970年1月1日 0点0分0秒以来的秒数
-         * @return 时间戳
-        */
-        public static string GenerateTimeStamp()
-        {
-            TimeSpan ts = DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0);
-            return Convert.ToInt64(ts.TotalSeconds).ToString();
-        }
-
         /**
         * 生成随机串,随机串包含字母或数字
         * @return 随机串

+ 11 - 5
Common/WeChat/WxPayNativePay.cs

@@ -1,4 +1,6 @@
-using System;
+using Internal;
+using System.Linq;
+using System;
 using System.Collections.Generic;
 using System.Threading.Tasks;
 
@@ -24,8 +26,10 @@ namespace WingPaymentService.Common.WeChat
             data.SetValue("attach", attach);//附加数据
             data.SetValue("out_trade_no", outTradeNo);//随机字符串
             data.SetValue("total_fee", totalAmount);//总金额
-            data.SetValue("time_start", DateTime.Now.ToString("yyyyMMddHHmmss"));//交易起始时间
-            data.SetValue("time_expire", DateTime.Now.AddMinutes(10).ToString("yyyyMMddHHmmss"));//交易结束时间
+            //将当前服务器时间转换为北京时间(微信接口只接受北京时间)
+            var startBeijingTime = TimeZoneInfo.ConvertTimeBySystemTimeZoneId(DateTime.Now, TimeZoneInfo.Local.Id, "China Standard Time");
+            data.SetValue("time_start", startBeijingTime.ToString("yyyyMMddHHmmss"));//交易起始时间
+            data.SetValue("time_expire", startBeijingTime.AddMinutes(10).ToString("yyyyMMddHHmmss"));//交易结束时间
             //data.SetValue("goods_tag", "jjj");//商品标记
             data.SetValue("trade_type", "NATIVE");//交易类型
             data.SetValue("device_info", deviceInfo);
@@ -56,8 +60,10 @@ namespace WingPaymentService.Common.WeChat
             data.SetValue("attach", attach);//附加数据
             data.SetValue("out_trade_no", outTradeNo);//随机字符串
             data.SetValue("total_fee", totalAmount);//总金额
-            data.SetValue("time_start", DateTime.Now.ToString("yyyyMMddHHmmss"));//交易起始时间
-            data.SetValue("time_expire", DateTime.Now.AddMinutes(10).ToString("yyyyMMddHHmmss"));//交易结束时间
+            //将当前服务器时间转换为北京时间(微信接口只接受北京时间)
+            var startBeijingTime = TimeZoneInfo.ConvertTimeBySystemTimeZoneId(DateTime.Now, TimeZoneInfo.Local.Id, "China Standard Time");
+            data.SetValue("time_start", startBeijingTime.ToString("yyyyMMddHHmmss"));//交易起始时间
+            data.SetValue("time_expire", startBeijingTime.AddMinutes(10).ToString("yyyyMMddHHmmss"));//交易结束时间
             //data.SetValue("goods_tag", "jjj");//商品标记
             data.SetValue("trade_type", "MWEB");//交易类型
             data.SetValue("device_info", deviceInfo);