C#集成Stripe支付全指南

温以宁
温以宁
发布时间:2026-10-16| 5人浏览过
原创

本文将演示在C#与ASP.NET环境下如何快速集成Stripe支付功能,涵盖从前端JS调用的Token获取、后端ChargeService的调用逻辑到App.config配置文件的设置。

Stripe支付环境准备

要在C#环境中运行Stripe支付接口,需要预先引用以下核心组件,以确保依赖兼容:

  1. Stripe.net:建议引用版本不低于 22.8.0,它是连接Stripe API的主要SDK。
  2. Newtonsoft.Json:用于JSON序列化处理,版本号不能低于 9.0.1。
  3. System.Collections.Immutable:要求版本不低于 1.5.0。

项目运行的基础环境要求为 .NET Framework 4.5 或以上版本。

配置站点密钥

首先需要将Stripe账号的公钥(Publishable Key)和私钥(Secret Key)添加到项目的配置文件 web.config 或 app.config 中。

<appSettings>
    <!-- Stripe公钥,用于前端初始化 -->
    <add key="pk_liveConfig" value="pk_test_XXXXXX" />
    <!-- Stripe私钥,绝对保密,仅用于后端 -->
    <add key="pk_liveSecretKey" value="sk_test_XXXXXX" />
</appSettings>

前端JS交互代码

在前端HTML页面中,首先加载Stripe提供的官方脚本文件。随后封装一个 myStripe 对象,主要用于控制支付弹窗的弹出以及接收用户提交的Token信息。

<script src="https://js.stripe.com/v3/"></script>
<script src="https://checkout.stripe.com/checkout.js"></script>
<script type="text/javascript">
	var myStripe = {
		// 从后台获取或配置文件中读取的PublicKey
		testKey: '<%=ConfigurationManager.AppSettings["pk_liveConfig"] %>',
		logoImg: "https://stripe.com/img/documentation/checkout/marketplace.png",
		payHandler: function (f) {
			// 关闭其他loading层
			layer.closeAll(0);
			return StripeCheckout.configure({
				key: this.testKey,
				name: f.title || 'Stripe费用',
				email: f.Email || '',
				currency: f.currency || 'USD',
				amount: f.amount || 0, // 注意单位通常是分,例如$1对应100
				image: f.logoImg || this.logoImg,
				locale: 'auto',
				token: function (token) {
					// 获取Token后,存储以便传给后端
					f.tokenId = token.id;
					f.email = token.email;
					// 回调函数触发Ajax请求通知后端
					f.callback(f);
				}
			});
		},
		pay: function (f) {
			this.payHandler(f).open();
		}
	};

	// 触发支付方式:金额需转换为分
	myStripe.pay({
		title: 'TEST Order',
		currency: 'USD',
		amount: <%=Convert.ToInt32(acoumt) %> * 100,
		callback: function (p) {
			$.ajax({
				type: 'POST',
				dataType: 'text',
				url: '/admin/ajax/PCBAOrdersData.ashx', 
				data: 'param=Pay&email=' + this.email + "&amount=" + this.amount + "&tokenId=" + this.tokenId,
				success: function (data) {
					if (data == "succeeded") {
						location.href = "success.html";
					} else {
						alert(data);
					}
				},
				error: function () {
					alert("网络请求失败");
				}
			})
		}
	});
</script>

运行页面并点击支付时,会弹出标准的Stripe支付界面。效果如图所示:

后端C#处理逻辑

前端成功后会通过Ajax请求后端接口。在后端的处理方法中,我们需要读取传递过来的参数,配置API Key并创建Charge实例来完成扣款。

public void Pay()
{
	string Msg = "Payment Failure";
	try
	{
		// 1. 解析前台传来的数据
		string tokenId = _Request.GetString("tokenId", "");
		string amount = _Request.GetString("amount", "0");
		string email = _Request.GetString("email", "");

		// 2. 设置Stripe Secret Key
		// 必须从系统配置中读取私钥,严禁硬编码
		Stripe.StripeConfiguration.SetApiKey(ConfigurationManager.AppSettings["pk_liveSecretKey"]);

		// 3. 构造支付选项
		var options = new Stripe.ChargeCreateOptions
		{
			Amount = Convert.ToInt64(amount),
			Currency = "usd",
			SourceId = tokenId,
			Description = "Stripe Order Payment",
			ReceiptEmail = email,
		};

		// 4. 发起API请求
		var service = new Stripe.ChargeService();
		Stripe.Charge charge = service.Create(options);
		
		// 根据返回结果判断是否成功
		Msg = charge.Status;
	}
	catch (Exception e)
	{
		// 记录异常日志... 
		Msg = e.Message;
		throw e;
	}
	finally
	{
		HttpContext.Current.Response.Clear();
		HttpContext.Current.Response.Write(Msg);
		HttpContext.Current.Response.End();
	}
}

关键注意点

  • 金额换算:在Stripe系统中,所有货币的最小单位是“分”或其他非主单位的整数倍(例如1美元代表数字100),因此前端传入的金额通常需要乘以100。
  • 安全隔离:公钥(pk_...)可放置在客户端使用,而私钥(sk_...)必须严格保存在服务器配置文件或环境变量中,绝不能泄露给前端。
  • 错误捕获:务必对API调用过程进行Try-Catch包裹,以便在银行拒绝或网络超时等情况下获取具体的错误信息。

总结

C#结合Stripe支付的成功关键在于:正确添加相关依赖库,合理处理公私钥的安全分配,并确保前端的Token能够顺利传递至后端的ChargeCreateOptions中完成交易闭环。

以上就是《C#实现Stripe支付的方法实践》的详细内容,更多关于C# Stripe支付的内容请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。