feat:去掉不需要的代码内容
parent
f44b0ff515
commit
7dd0560323
|
|
@ -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
|
|||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 暂时不用有bug
|
||||
/// </summary>
|
||||
/// <param name="model"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
[AllowAnonymous]
|
||||
public async Task<IActionResult> 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; }
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1016,13 +1016,6 @@
|
|||
</summary>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:New_College.Api.Controllers.Front.WeixinPayController.NewPayNotify(New_College.Api.Controllers.Front.WeChatPayCallobject)">
|
||||
<summary>
|
||||
暂时不用有bug
|
||||
</summary>
|
||||
<param name="model"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="F:New_College.Api.Controllers.HighSchoolRankController._d_HighSchoolRankServices">
|
||||
<summary>
|
||||
服务器接口,因为是模板生成,所以首字母是大写的,自己可以重构下
|
||||
|
|
|
|||
|
|
@ -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<string, string>
|
||||
{
|
||||
{"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<string, string> 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密钥进行比对。如果比对成功,则签名验证通过。
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue