ASP.NET Core 微信支付(三)【查询订单 APIV3】
官方参考资料
理论实战
官方提供两种查询订单的方式,一种是根据商户自己生成的订单号查询,一种方式是根据微信生成的订单号查询。而我使用的就是第一种方式。
调用微信支付的查询订单,需要生成签名,按照微信支付的接口规则构造http的header。
生成签名可以参考我的文章:《ASP.NET Core 微信支付(一)【统一下单 APIV3】》、《ASP.NET Core 微信支付(二)【 发布到服务器上签名加密时报错:系统找不到指定的文件 APIV3】》。
代码
数据实体映射类
public class WxPayStatusRespModel
{
/// <summary>
/// 商户系统内部订单号,只能是数字、大小写字母_-*且在同一个商户号下唯一
/// </summary>
public string out_trade_no { get; set; } /// <summary>
/// 微信支付系统生成的订单号。
/// </summary>
public string transaction_id { get; set; } /// <summary>
/// 交易类型,枚举值:
/// JSAPI:公众号支付
/// NATIVE:扫码支付
/// APP:APP支付
/// MICROPAY:付款码支付
/// MWEB:H5支付
/// FACEPAY:刷脸支付
/// </summary>
public string trade_type { get; set; } /// <summary>
/// 交易状态,枚举值:
/// SUCCESS:支付成功
/// REFUND:转入退款
/// NOTPAY:未支付
/// CLOSED:已关闭
/// REVOKED:已撤销(付款码支付)
/// USERPAYING:用户支付中(付款码支付)
/// PAYERROR:支付失败(其他原因,如银行返回失败)
/// ACCEPT:已接收,等待扣款
/// </summary>
public string trade_state { get; set; } /// <summary>
/// 交易状态描述
/// </summary>
public string trade_state_desc { get; set; } /// <summary>
/// 支付者信息
/// </summary>
public WxPayerModel payer { set; get; }
} /// <summary>
/// 支付用户信息实体
/// </summary>
public class WxPayerModel
{
/// <summary>
/// 用户在直连商户appid下的唯一标识。
/// </summary>
public string openid { get; set; }
}
查询订单接口请求代码
var url = $"https://api.mch.weixin.qq.com/v3/pay/transactions/out-trade-no/{orderNumber}?mchid={WxPayConst.mchid}";
var client = new HttpClient(new HttpHandler());
var resp = await client.GetAsync(url);
NlogHelper.Debug("查询订单状态");
var respStr = await resp.Content.ReadAsStringAsync();//这里就是微信支付查询订单返回的json数据了,自己进行解析就可以了
var payModel = respStr.ToObject<WxPayStatusRespModel>();
类型转换工具方法
/// <summary>
/// json字符串转化为相应的类型
/// </summary>
/// <typeparam name="T">转化后的类型</typeparam>
/// <param name="json">json字符串</param>
/// <returns>转化后的类型</returns>
public static T ToObject<T>(this string json)
{
return json == null ? default(T) : JsonConvert.DeserializeObject<T>(json);
}
ASP.NET Core 微信支付(三)【查询订单 APIV3】的更多相关文章
- ASP.NET Core 使用 EF 框架查询数据 - ASP.NET Core 基础教程 - 简单教程,简单编程
原文:ASP.NET Core 使用 EF 框架查询数据 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core 使用 EF 框架查询数据 上一章节我们学习了如何设置 ...
- asp.net mvc 微信支付代码分析(根据沐雪微信平台3.1商城业务来分析)
开发微信应用,微信支付是永远要面对的.现在的微信支付相对以往已经很稳定,很少出现诡异情况.再加上无数人开发的经验分享,现在开发微信支付已经没什么难度了. 我这次主要是想基于沐雪微信平台的微商城业务来分 ...
- ASP.NET Core Web 支付功能接入 微信-扫码支付篇
这篇文章将介绍ASP.NET Core中使用 开源项目 Payment,实现接入微信-扫码支付及异步通知功能. 开发环境:Win 10 x64.VS2017 15.6.4..NET Core SDK ...
- 【转载】ASP.NET Core Web 支付功能接入 微信-扫码支付篇
转自:http://www.cnblogs.com/essenroc/p/8630730.html 这篇文章将介绍ASP.NET Core中使用 开源项目 Payment,实现接入微信-扫码支付及异步 ...
- asp.net core 微信扫码支付(扫码支付,H5支付,公众号支付,app支付)之1
2018-08-13更新生成二维码的方法 在做微信支付前,首先要了解你需要什么方式的微信支付,目前本人做过的支付包含扫码支付.H5支付.公众号支付.App支付等,本人使用的是asp.net mvc c ...
- ASP.NET Core Web 支付功能接入 微信-扫码支付篇(转)
原文 https://www.cnblogs.com/essenroc/p/8630730.html // 随着版本更迭,新版本可能无法完全适用,请参考仓库内的示例. 这篇文章将介绍ASP.NET C ...
- .net core 支付宝,微信支付 三
支付回调: 获取HttpRequest的body内容,之前使用Request.Form有时候数据请求不到(可能是跟.net core 版本有关?) var s = HttpRequest.Body; ...
- Asp.net Core 微信小程序支付
最近要做一个微信小程序支付的功能 在网上找了一下 .net Core做微信支付的博客 和 demo 几乎没有 自己研究了好几天 参考了 很多 大牛的博客 勉强做出来了 因为参数都没有 比如 opid ...
- asp.net core 微信APP支付(扫码支付,H5支付,公众号支付,app支付)之4
微信app支付需要以下参数,类封装如下 public class WxPayModel { /// <summary> /// 应用ID /// </summary> publ ...
- asp.net core 微信公众号支付(扫码支付,H5支付,公众号支付,app支付)之3
在微信公众号中访问手机网站,当需要调用支付时候无法使用H5支付,只有使用微信公众号支付,使用公众号支付用户必须关注该公众号同时该公众号必须开通公众号支付功能. 1.获取用户的OpenId ,参考之前写 ...
随机推荐
- Lectures
Copy and Paste 3(P9523) Problem Solution 转移方程中的"父问题枚举子问题寻找转移"可以转成"子问题寻找父问题主动转移"处 ...
- vue2-vue3监听子组件的生命周期的两种方式
1.生命周期 生命周期是指:vue实例从创建到销毁这一系列过程.vue官网生命周期如下图所示: vue的生命周期有多少个 beforeCreate, created, beforeMount, mou ...
- js引起的 xxxx of null
在 vue 中操作 dom 元素的时候,报错 style of null 这个报错的原因,跟你代码的健壮性有关了; 这样就不会报错了 if( document.querySelectorAll(&qu ...
- OpenIM Open Source Instant Messaging Project Docker Compose Deployment Guide
The deployment of OpenIM involves multiple components and supports various methods including source ...
- Elasticsearch Relevance Engine---为AI变革提供高级搜索能力[ES向量搜索、常用配置参数、聚合功能等详解]
Elasticsearch Relevance Engine---为AI变革提供高级搜索能力[ES向量搜索.常用配置参数.聚合功能等详解] 今天要介绍的 Elasticsearch Relevance ...
- 【三】分布式训练---单机多卡与多机多卡组网(飞桨paddle2.0+)更加推荐spawn方式!
1. 单机多卡启动并行训练 飞桨2.0增加paddle.distributed.spawn函数来启动单机多卡训练,同时原有的paddle.distributed.launch的方式依然保留. padd ...
- 21.14 Python 实现Web指纹识别
在当今的Web安全行业中,识别目标网站的指纹是渗透测试的常见第一步.指纹识别的目的是了解目标网站所使用的技术栈和框架,从而进一步根据目标框架进行针对性的安全测试,指纹识别的原理其实很简单,目前主流的识 ...
- nftables用法介绍
Kubernetes 1.29版本中已经将nftables作为一个featureGates,本文简单整理了nftables的用法,便于后续理解kubernetes的nftables规则.文末给出了使用 ...
- Redis中的key的生存时间和过期时间
目录 1.说明 2.指令 2.1.删除和更新 3.过期时间的保存 4.计算剩余生存时间 5.过期键的删除策略 5.1.定时删除 5.2.惰性删除 5.3.定期删除 1.说明 生存时间: (Time T ...
- 详细了解Transformer:Attention Is All You Need
1. 背景 在机器翻译任务下,RNN.LSTM.GRU等序列模型在NLP中取得了巨大的成功,但是这些模型的训练是通常沿着输入和输出序列的符号位置进行计算的顺序计算,无法并行. 文中提出了名为Trans ...