当前位置: 代码网 > it编程>编程语言>Asp.net > .Net 7.0实现支付宝退款和结果查询接口

.Net 7.0实现支付宝退款和结果查询接口

2024年09月08日 Asp.net 我要评论
〇、前言支付宝对 .net 的支持还是比较充分的,在每个接口文档中都有关于 c# 语言的示例,这样就大大降低了对接的难度,很容易上手。官方接口文档地址:退款-alipay.trade.refund退款

〇、前言

支付宝对 .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 必要账户基础信息

名称示例
应用 id2024 ... ...(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)的文章就介绍到这了,更多相关.net 支付宝退款和结果查询接口内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com