diff --git a/New_College.Api/Controllers/Front/WeixinPayController.cs b/New_College.Api/Controllers/Front/WeixinPayController.cs index 5423ddf..6501f64 100644 --- a/New_College.Api/Controllers/Front/WeixinPayController.cs +++ b/New_College.Api/Controllers/Front/WeixinPayController.cs @@ -190,17 +190,7 @@ namespace New_College.Api.Controllers.Front } }; - // WebHookHelper.WebHookmarkdownSend("Check sign success"); - //检查支付结果中transaction_id是否存在 - //if (!data.IsSet("transaction_id")) - //{ - // DingHookHelper.DingTalkHookMessage("回调PayNotify", "支付结果中微信订单号不存在"); - // //若transaction_id不存在,则立即返回结果给微信支付后台 - // res.SetValue("return_code", "FAIL"); - // res.SetValue("return_msg", "支付结果中微信订单号不存在"); - // //WebHookHelper.WebHookmarkdownSend("支付结果中微信订单号不存在"); - // return Content(res.ToXml(), "text/xml"); - //} + // 执行订单状态操作 string out_trade_no = data.GetValue("out_trade_no").ToString(); logger.LogInformation("开始回调PayNotify" + out_trade_no); @@ -312,124 +302,13 @@ namespace New_College.Api.Controllers.Front } - /// - /// 暂时不用有bug - /// - /// - /// - [HttpPost] - [AllowAnonymous] - public async Task NewPayNotify(WeChatPayCallobject model) - { - DingHookHelper.DingTalkHookMessage("开始回调PayNotify", "开始回调PayNotify"); - - // 处理微信支付回调数据 - if (model.event_type == "TRANSACTION.SUCCESS") - { - DingHookHelper.DingTalkHookMessage("result_code", "SUCCESS"); - - - - - - - - - - // 订单支付成功处理逻辑 - var info = await v_OrderInfoRepository.Query(x => x.out_trade_no == ""); - if (info.Count <= 0) - { - DingHookHelper.DingTalkHookMessage("回调PayNotify", "在自有平台未找到该订单号" + ""); - //WebHookHelper.WebHookmarkdownSend("支付结果中微信订单号不存在"); - return Content("\"return_code\", \"FAIL\""); - } - var oneinfo = info.FirstOrDefault(); - oneinfo.Status = EnumOrderType.payoff; - var rep = await v_OrderInfoRepository.Update(oneinfo); - if (rep) - { - DingHookHelper.DingTalkHookMessage("支付回调成功", oneinfo.out_trade_no + ":修改为VIP"); - //修改用户信息 修改为VIp - var customerinfo = await v_CustomerInfoRepository.QueryById(oneinfo.CustomerId); - customerinfo.IsVIP = true; - customerinfo.VipCode = oneinfo.CardNo; - await v_CustomerInfoRepository.Update(customerinfo); - - var oldorderlist = await v_OrderInfoRepository.Query(c => c.CustomerId == oneinfo.CustomerId && c.Status == EnumOrderType.payment); - oldorderlist.ForEach(async a => - { - a.Status = EnumOrderType.Cancel; - await v_OrderInfoRepository.Update(a); - }); - //支付成功后根据用户code找到对应用户修改vip 状态 - return Ok("SUCCESS"); - } - else - { - // string attach = data.GetValue("attach").ToString(); - // WebHookHelper.WebHookmarkdownSend(attach); - DingHookHelper.DingTalkHookMessage("回调PayNotify", "在自有平台未找到该订单号" + ""); - //res.SetValue("return_code", "FAIL"); - //res.SetValue("return_msg", "在自有平台未找到该订单号"); - return Content("\"return_code\", \"FAIL\""); - } - - - - - } - //else if (model.result_code == "FAIL") - //{ - // DingHookHelper.DingTalkHookMessage("result_code", "订单支付失败处理逻辑"); - // 订单支付失败处理逻辑... - //} - - return Content("SUCCESS"); - } - + } - public class WeChatPayCallobject - { - public string id { get; set; } - public DateTime create_time { get; set; } - public string resource_type { get; set; } - public string event_type { get; set; } - public string summary { get; set; } - public Resource resource { get; set; } - } - - public class Resource - { - public string original_type { get; set; } - public string algorithm { get; set; } - public string ciphertext { get; set; } - public string associated_data { get; set; } - public string nonce { get; set; } - } - public class WeChatPayCallbackModel - { - public string return_code { get; set; } - public string return_msg { get; set; } - public string appid { get; set; } - public string mch_id { get; set; } - public string nonce_str { get; set; } - public string sign { get; set; } - public string result_code { get; set; } - public string openid { get; set; } - public string is_subscribe { get; set; } - public string trade_type { get; set; } - public string bank_type { get; set; } - public string total_fee { get; set; } - public string fee_type { get; set; } - public string transaction_id { get; set; } - public string out_trade_no { get; set; } - public string attach { get; set; } - public string time_end { get; set; } - } + + } diff --git a/New_College.Api/New_College.xml b/New_College.Api/New_College.xml index c56e570..fd57535 100644 --- a/New_College.Api/New_College.xml +++ b/New_College.Api/New_College.xml @@ -1016,13 +1016,6 @@ - - - 暂时不用有bug - - - - 服务器接口,因为是模板生成,所以首字母是大写的,自己可以重构下 diff --git a/New_College.Common/Helper/WeChatPaySignatureValidatorHelper.cs b/New_College.Common/Helper/WeChatPaySignatureValidatorHelper.cs deleted file mode 100644 index 7af2b59..0000000 --- a/New_College.Common/Helper/WeChatPaySignatureValidatorHelper.cs +++ /dev/null @@ -1,73 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Security.Cryptography; -using System.Text; -using System.Threading.Tasks; - -namespace New_College.Common.Helper -{ - - public class WeChatPaySignatureValidator - { - private readonly string appId; - private readonly string mchId; - private readonly string apiKey; - - //public WeChatPaySignatureValidator(string appId, string mchId, string apiKey) - //{ - // this.appId = appId; - // this.mchId = mchId; - // this.apiKey = apiKey; - //} - - public static bool VerifySignature(string returnCode, string returnMsg, string appId, string mchId, string nonceStr, string sign, string resultCode) - { - // 获取微信支付回调的全部参数,包括商户自定义参数等。 - var allParams = new SortedDictionary - { - {"return_code", returnCode}, - {"return_msg", returnMsg}, - {"appid", appId}, - {"mch_id", mchId}, - {"nonce_str", nonceStr}, - {"sign", sign}, - {"result_code", resultCode} - // 这里可以添加其他商户自定义的参数,并按照字典序排序。 - }; - - // 将所有参数按照键值对的形式拼接成一个字符串。 - var strToBeSigned = JoinByKey(allParams); - - // 验证签名,如果验证通过则返回true,否则返回false。 - return CheckSignature(strToBeSigned, WeixinConfig.APIv3Key); - } - - private static string JoinByKey(SortedDictionary dict) - { - var sb = new StringBuilder(); - foreach (var kv in dict) - { - sb.Append(kv.Key); - sb.Append("="); - sb.Append(kv.Value); - sb.Append("&"); - } - // 去掉最后一个"&"字符。 - if (sb.Length > 0) sb.Length -= 1; - return sb.ToString(); - } - - private static bool CheckSignature(string strToBeSigned, string apiSecret) - { - // 使用商户的API密钥进行签名验证。这里使用SHA256算法进行加密。 - using (var sha256 = SHA256.Create()) - { - var dataToBeSigned = Encoding.UTF8.GetBytes(strToBeSigned); - var dataSigned = sha256.ComputeHash(dataToBeSigned); - var dataSignedBase64 = Convert.ToBase64String(dataSigned); - return apiSecret == dataSignedBase64; // 这里将签名结果与商户的API密钥进行比对。如果比对成功,则签名验证通过。 - } - } - } -}