在.NET项目中接入支付宝支付接口,需要按照官方规范完成配置、接口调用和回调处理等步骤,确保支付流程的准确性和安全性。首先需要在支付宝开放平台注册应用,获取应用ID、商户私钥、支付宝公钥等核心配置信息,这些信息是后续接口调用的基础。

前期准备与配置
接入前需要先完成以下准备工作:
- 在支付宝开放平台创建网页&移动应用,提交相关资料通过审核
- 配置应用网关、授权回调地址,生成RSA2密钥对,上传应用公钥换取支付宝公钥
- 安装官方提供的.NET SDK,可通过NuGet搜索AlipaySDKNet安装
支付下单接口调用
以电脑网站支付为例,调用下单接口的核心代码如下:
using AlipaySDKNet.OpenApi;
using AlipaySDKNet.OpenApi.Models;
using System;
namespace AlipayDemo
{
public class PayService
{
// 支付宝配置参数
private static string appId = "你的应用ID";
private static string merchantPrivateKey = "你的商户私钥";
private static string alipayPublicKey = "你的支付宝公钥";
private static string serverUrl = "https://openapi.alipay.com/gateway.do";
private static string charset = "UTF-8";
private static string signType = "RSA2";
public string CreatePayOrder(string orderNo, string totalAmount, string subject)
{
// 初始化客户端
IAopClient client = new DefaultAopClient(serverUrl, appId, merchantPrivateKey, "json", charset, signType, alipayPublicKey, "AES", false);
// 构造请求参数
AlipayTradePagePayRequest request = new AlipayTradePagePayRequest();
// 设置异步回调地址
request.NotifyUrl = "https://你的域名/notify";
// 设置同步跳转地址
request.ReturnUrl = "https://你的域名/return";
// 业务参数
AlipayTradePagePayModel model = new AlipayTradePagePayModel();
model.OutTradeNo = orderNo; // 商户订单号
model.TotalAmount = totalAmount; // 订单总金额
model.Subject = subject; // 订单标题
model.ProductCode = "FAST_INSTANT_TRADE_PAY"; // 销售产品码,电脑支付固定值
request.SetBizModel(model);
// 执行请求,获取表单HTML
string response = client.pageExecute(request).Body;
return response;
}
}
}
上述代码执行后会返回一段包含支付表单的HTML字符串,将该字符串输出到页面即可跳转到支付宝支付页面。
异步回调处理
用户支付完成后,支付宝会向配置的异步回调地址发送通知,需要对通知进行验证和处理:
using AlipaySDKNet.OpenApi;
using System.Collections.Specialized;
using System.Web;
namespace AlipayDemo
{
public class NotifyHandler : IHttpHandler
{
private static string alipayPublicKey = "你的支付宝公钥";
private static string charset = "UTF-8";
private static string signType = "RSA2";
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
NameValueCollection parameters = context.Request.Form;
// 验证签名
bool signVerified = AlipaySignature.RSACheckV2(parameters, alipayPublicKey, charset, signType, false);
if (signVerified)
{
// 获取通知参数
string tradeNo = parameters["trade_no"]; // 支付宝交易号
string orderNo = parameters["out_trade_no"]; // 商户订单号
string tradeStatus = parameters["trade_status"]; // 交易状态
if (tradeStatus == "TRADE_SUCCESS" || tradeStatus == "TRADE_FINISHED")
{
// 处理业务逻辑,比如更新订单状态为已支付
// 注意要做幂等处理,避免重复回调导致业务异常
}
context.Response.Write("success");
}
else
{
context.Response.Write("failure");
}
}
public bool IsReusable
{
get { return false; }
}
}
}
常见问题说明
对接过程中需要注意以下问题:
- 签名验证失败通常是密钥配置错误,确认商户私钥和支付宝公钥是否匹配,密钥格式是否正确
- 回调地址必须是公网可访问的地址,且需要和开放平台配置的一致
- 订单金额单位默认为元,且支持两位小数,不要传错单位
- 异步回调处理时要做好幂等校验,避免同一订单重复处理
注意:测试时可以使用支付宝提供的沙箱环境,沙箱环境的配置和正式环境流程一致,只是参数和网关地址不同,方便开发者调试。
.NET支付宝支付接口支付对接Alipay_SDK修改时间:2026-07-01 13:00:19