支付宝退款和结果查询接口简单实现(.Net 7.0)
〇、前言
支付宝对 .Net 的支持还是比较充分的,在每个接口文档中都有关于 C# 语言的示例,这样就大大降低了对接的难度,很容易上手。
官方接口文档地址:退款-alipay.trade.refund 退款状态查询-alipay.trade.fastpay.refund.query
本文就简单实现下这两个接口,并顺便记录特别注意的点。
一、接入准备
1.1 引入 SDK
安装支付宝开放平台官方 SDK:AlipaySDKNet.Standard。基于.Net Standard 2.0开发,支持.Net Framework 4.6.1、.Net Core 2.0及其以上版本。
NuGet 简介地址:https://www.nuget.org/packages/AlipaySDKNet.Standard/

1.2 必要账户基础信息
| 名称 | 示例 | |
| 应用 ID | 2024 ... ... | (15 位纯数字) |
| 应用公钥 | MIIBIjANBgkqhk ... ... | (392 位) |
| 应用私钥 | MIIEvgIBADANBgk ... ... | (PKCS1 格式的 1592 位) |
注意:通过支付宝密钥工具生成的应用私钥默认是 PKCS8 格式的,仅适用于 Java,此时必须手动转换成 PKCS1 格式,适用于其他全部语言。
密钥工具下载地址:https://opendocs.alipay.com/common/02kipk
如下格式转换,下边为转换后的格式以及标注:

二、接口调用
2.1 公用配置方法
将固定的应用信息填入,此方法可在不同接口中公用:
private static AlipayConfig GetAlipayConfig()
{
string privateKey = "<-- 请填写您的应用私钥,例如:MIIEvQIBADANB ... ... -->";
string alipayPublicKey = "<-- 请填写您的支付宝公钥,例如:MIIBIjANBg... -->";
AlipayConfig alipayConfig = new AlipayConfig();
alipayConfig.ServerUrl = "https://openapi.alipay.com/gateway.do";
alipayConfig.AppId = "<-- 请填写您的AppId,例如:2019091767145019 -->";
alipayConfig.PrivateKey = privateKey;
alipayConfig.Format = "json";
alipayConfig.AlipayPublicKey = alipayPublicKey;
alipayConfig.Charset = "UTF-8";
alipayConfig.SignType = "RSA2";
return alipayConfig;
}
2.2 退款接口
以下是退款接口的代码,其中入参仅示例了必要的字段,其他详情见官方文档。
// 初始化SDK
IAopClient alipayClient = new DefaultAopClient(GetAlipayConfig());
// 构造请求参数以调用接口
AlipayTradeRefundRequest request = new AlipayTradeRefundRequest();
AlipayTradeRefundModel model = new AlipayTradeRefundModel();
// 设置查询选项
List<String> queryOptions = new List<String>();
queryOptions.Add("refund_detail_item_list");
model.QueryOptions = queryOptions;
//// 设置商户订单号(与支付宝交易号,配置任一即可)
//model.OutTradeNo = "20150320010101001";
// 设置支付宝交易号
model.TradeNo = "2024072900000000000000000001";
// 设置退款金额,单位为:元
model.RefundAmount = "0.01";
// 设置退款原因说明
model.RefundReason = "正常退款0729";
// 设置退款请求号
model.OutRequestNo = $"ZFB{DateTime.Now.ToString("yyyyMMddHHmmssffffff")}";
request.SetBizModel(model);
AlipayTradeRefundResponse response = alipayClient.Execute(request);
if (!response.IsError)
{
Console.WriteLine("调用成功");
}
else
{
Console.WriteLine("调用失败");
}
成功返回:
{
"alipay_trade_refund_response": {
"code": "10000",
"msg": "Success",
"buyer_logon_id": "188******10",
"fund_change": "Y",
"gmt_refund_pay": "2024-07-29 13:50:04",
"out_trade_no": "*****",
"refund_detail_item_list": [
{
"amount": "0.01",
"fund_channel": "COUPON"
}
],
"refund_fee": "0.01",
"send_back_fee": "0.01",
"trade_no": "*****",
"buyer_open_id": "*****"
},
"sign": "*****"
}
2.3 退款状态查询接口
以下是退款状态查询接口的代码,其中入参仅示例了必要的字段,其他详情见官方文档。
// 初始化SDK
IAopClient alipayClient = new DefaultAopClient(GetAlipayConfig());
// 构造请求参数以调用接口
AlipayTradeFastpayRefundQueryRequest request = new AlipayTradeFastpayRefundQueryRequest();
AlipayTradeFastpayRefundQueryModel model = new AlipayTradeFastpayRefundQueryModel();
// 设置查询选项
List<String> queryOptions = new List<String>();
queryOptions.Add("refund_detail_item_list");
model.QueryOptions = queryOptions;
//// 设置商户订单号(与支付宝交易号,配置任一即可)
//model.OutTradeNo = "2014112611001004680073956707";
// 设置支付宝交易号
model.TradeNo = "2024072900000000000000000001";
// 设置退款请求号,来自退款接口中生成的编号
model.OutRequestNo = "ZFB20240729135000591024";
request.SetBizModel(model);
AlipayTradeFastpayRefundQueryResponse response = alipayClient.Execute(request);
if (!response.IsError)
{
Console.WriteLine("调用成功");
}
else
{
Console.WriteLine("调用失败");
}
成功返回:
{
"alipay_trade_fastpay_refund_query_response": {
"code": "10000",
"msg": "Success",
"out_request_no": "ZFB20240729135000591024",
"out_trade_no": "*****",
"refund_amount": "0.01",
"refund_detail_item_list": [
{
"amount": "0.01",
"fund_channel": "COUPON"
}
],
"refund_status": "REFUND_SUCCESS",
"send_back_fee": "0.01",
"total_amount": "1.00",
"trade_no": "*****"
},
"sign": "*****"
}
支付宝退款和结果查询接口简单实现(.Net 7.0)的更多相关文章
- 微信退款和支付宝退款接口调用(java版)
项目中需要使用到微信和支付宝的退款功能,在这两天研究了一下这两个平台的退款,有很多坑,在开发中需要留意 1.微信退款接口 相对来说我感觉微信的退款接口还是比较好调用的,直接发送httppost请求即可 ...
- 落网数据库简单查询接口 caddy+php7+mongodb
落网数据库简单查询接口 一个简单的DEMO,使用了caddy + php7 + mongodb 数据库&接口设计 来自 https://github.com/Aedron/Luoo.spide ...
- C# 微支付退款查询接口 V3.3.6
#region 微支付退款查询 string Nonce = CreateRandomCode(15).ToLower(); //生成15个随机字符string sign1 = "appid ...
- 简单的股票信息查询系统 1 程序启动后,给用户提供查询接口,允许用户重复查股票行情信息(用到循环) 2 允许用户通过模糊查询股票名,比如输入“啤酒”, 就把所有股票名称中包含“啤酒”的信息打印出来 3 允许按股票价格、涨跌幅、换手率这几列来筛选信息, 比如输入“价格>50”则把价格大于50的股票都打印,输入“市盈率<50“,则把市盈率小于50的股票都打印,不用判断等于。
'''需求:1 程序启动后,给用户提供查询接口,允许用户重复查股票行情信息(用到循环)2 允许用户通过模糊查询股票名,比如输入“啤酒”, 就把所有股票名称中包含“啤酒”的信息打印出来3 允许按股票价格 ...
- java 支付宝 第三方即时到账支付 接口
alipay 的几个内核功能文件:=================================================================================== ...
- ThinkPHP5 支付宝支付扩展库(超级简单,超级好用!)
ThinkPHP5 支付宝支付扩展库, 一个静态方法的调用就可以实现,包括手机网站支付.电脑网站支付.支付查询.退款.退款查询.对账单所有功能,而且是2017年7月20日最新版~我的想法是,调用一个静 ...
- API之IP地址查询---权威的IP地址查询接口集合
原文地址:http://yushine.iteye.com/blog/1717586 推荐实用IP138 http://www.baidu.com/s?wd=IP&rsv_spt=1& ...
- 使用C++进行WMI查询的简单封装
封装WMI查询的简单类CWMIUtil 头文件WMIUtil.h #pragma once #include <Wbemidl.h> class CWMIUtil { public: CW ...
- 利用微信支付的订单查询接口可以在APP 中提高支付的可靠性
最近公司有一个应用,用户可以在微信公众号上面下单,也可以在APP 中下单. 当用户在公共号上面下单时,微信支付成功可以返回微信支付单号,但是在APP 中用户微信支付时,个别时候会出现用户已经付款成功, ...
- python爬取免费优质IP归属地查询接口
python爬取免费优质IP归属地查询接口 具体不表,我今天要做的工作就是: 需要将数据库中大量ip查询出起归属地 刚开始感觉好简单啊,毕竟只需要从百度找个免费接口然后来个python脚本跑一晚上就o ...
随机推荐
- Qt(python) + 百度语音合成 实现demo
python实现 安装api sudo pip3 install baidu-aip 安装音频处理模块pydub sudo pip3 install pydub from aip import Aip ...
- iOS面试题详解-开篇
一.前言 转眼之前,已经毕业5年,从事iOS开发5年.5年的时间说长不长,却把我从刚毕业的毛头小伙子变成了现在的"中年大叔",不仅仅是外表还有心态. 一方面不愿意接收自己形体的改变 ...
- flutter3-weos手机OS系统|Flutter3.22+Getx仿ios桌面管理OA应用
原创自研flutter3.x+getx仿制ios手机桌面UI管理系统模板Flutter3-OS. flutter3-osx基于最新跨平台技术Flutter3.22+Dart3.4+GetX+fl_ch ...
- lazyload图片懒加载
安装 npm i -S vue-lazyload 在src/main.js文件中添加如下内容 import VueLazyload from 'vue-lazyload' Vue.use(VueLaz ...
- jquery的树状菜单
<body> <ul> <li>一级菜单 <ol> <li ...
- windows 右键菜单编辑/删除
windows 右键菜单编辑/删除.WIN7,WIN8,WIN10,WIN11. 在 https://www.sordum.org/7615/easy-context-menu-v1-6/ 页面底部下 ...
- EF 从设计器改为 DB First时遇到 Keyword not supported: 'data source'.
EF 从设计器改为 DB First时遇到 Keyword not supported: 'data source'. 解决方法: 把providerName="System.Data.En ...
- 构建SaaS能力,加速数字化转型!猪齿鱼将在华为云快成长直播间开讲!
时代的浪潮驱动着企业数字化转型.伴随着新基建.云计算成为国家战略的重要环节之一,"千行百业"开始专注于数字化转型,企业纷纷使用软件提升研发.销售.市场.消费者等不同场景下的效率,S ...
- Github上优秀的.NET Core开源项目的集合【转】
一般 ASP.NET Core Documentation - 官方ASP.NET核心文档站点. .NET Core Documentation - .NET Core,C#,F#和Visual Ba ...
- 加速鸿蒙生态共建,蚂蚁mPaaS助力鸿蒙原生应用开发创新
6月21日-23日,2024华为开发者大会(HDC 2024)如期举行.在22日的[鸿蒙生态伙伴SDK]分论坛中,正式发布了[鸿蒙生态伙伴SDK市场],其中蚂蚁数科旗下移动开发平台mPaaS(以下简称 ...