Yi.Framework.Net6/Yi.Framework.WeChatPay/Core/Notify/AbstractNotify.cs
(开头部分) 2KB这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。
using Microsoft.AspNetCore.Http;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Yi.Framework.WeChatPay.Exceptions;
namespace Yi.Framework.WeChatPay.Core
{
public abstract class AbstractNotify
{
protected HttpContext _httpContext;
public AbstractNotify(IHttpContextAccessor httpContextAccessor)
{
this._httpContext = httpContextAccessor.HttpContext;
}
/// <summary>
/// 从请求对象中获取信息
/// </summary>
/// <param name="request"></param>
/// <param name="encoding"></param>
/// <returns></returns>
private async Task<string> GetRawBodyStringAsync(HttpRequest request, Encoding encoding = null)
{
if (encoding is null)
{
encoding = Encoding.UTF8;
}
var stream = new MemoryStream();
await request.Body.CopyToAsync(stream);
stream.Seek(0, 0);
using (var reader = new StreamReader(stream, encoding))
{
var result = await reader.ReadToEndAsync();
return result;
}
}
/// <summary>
/// 接收从微信支付后台发送过来的数据并验证签名
/// </summary>
/// <returns>微信支付后台返回的数据</returns>
public PayData GetNotifyData()
{
//接收从微信后台POST过来的数据
string content = GetRawBodyStringAsync(_httpContext.Request).Result;
Console.WriteLine(this.GetType().ToString(), "Receive data from WeChat : " + content);
//转换数据格式并验证签名
PayData data = new PayData();
try
{
data.FromXml(content);
}
catch (PayException ex)
{
后面还有 12 行代码,解锁后查看完整代码
24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明
AI 解读 AI
登录后可用,每次 10 算力,解读结果公开显示在下面。
还没有人解读过这个文件。
