ASP.NET MVC 支付宝沙箱集成教程及完整示例
要在 ASP.NET MVC 中实现支付宝沙箱,可以按照以下步骤进行操作:
-
首先,需要在支付宝开发平台注册一个账号并创建一个应用,获取应用的 AppId、商户私钥、支付宝公钥等信息。在创建应用时,需要选择沙箱环境。
-
确保应用的回调地址在应用设置中已经设置好。
-
在 ASP.NET MVC 项目中添加 Alipay.AopSdk.Core 和 Alipay.AopSdk.F2FPayments 库的引用。
-
在控制器中添加以下代码,进行支付宝的初始化:
//支付宝初始化
IAopClient client = new DefaultAopClient('https://openapi.alipaydev.com/gateway.do', appId, merchantPrivateKey, 'json', '1.0', 'RSA2', alipayPublicKey, 'utf-8', false);
//设置请求参数
AlipayTradePrecreateRequest request = new AlipayTradePrecreateRequest();
request.BizContent = '{' +
'out_trade_no':'' + out_trade_no + '',' +
'total_amount':'' + total_amount + '',' +
'subject':'' + subject + '',' +
'store_id':'' + store_id + '',' +
'timeout_express':'' + timeout_express + ''' +
'}';
request.SetNotifyUrl(notify_url);
//发起支付宝预下单请求
AlipayTradePrecreateResponse response = client.Execute(request);
其中,appId、merchantPrivateKey、alipayPublicKey 等参数需要替换为在支付宝开发平台获取的信息。out_trade_no、total_amount、subject、store_id、timeout_express 等参数则是发起支付请求时需要提供的订单信息。
- 在视图中添加以下代码,生成支付二维码:
<img src='data:image/png;base64,@(Convert.ToBase64String(response.QrCode))' />
其中,response.QrCode 是支付宝返回的二维码图片数据。
完整示例
以下是一个完整的 ASP.NET MVC 支付宝沙箱集成示例:
-
首先,在支付宝开发平台上创建一个应用,选择沙箱环境。在应用设置中设置回调地址为
http://localhost:5000/Home/Notify。 -
在 Visual Studio 中创建一个 ASP.NET MVC 项目。
-
在项目中添加 Alipay.AopSdk.Core 和 Alipay.AopSdk.F2FPayments 库的引用。
-
在 HomeController 中添加以下代码:
using Alipay.AopSdk.Core;
using Alipay.AopSdk.Core.Domain;
using Alipay.AopSdk.Core.Request;
using Alipay.AopSdk.Core.Response;
using Microsoft.AspNetCore.Mvc;
using System;
namespace AlipaySandbox.Controllers
{
public class HomeController : Controller
{
private const string appId = '应用的 AppId';
private const string merchantPrivateKey = '商户私钥';
private const string alipayPublicKey = '支付宝公钥';
private const string notify_url = 'http://localhost:5000/Home/Notify';
public IActionResult Index()
{
return View();
}
public IActionResult Pay()
{
try
{
//支付宝初始化
IAopClient client = new DefaultAopClient('https://openapi.alipaydev.com/gateway.do', appId, merchantPrivateKey, 'json', '1.0', 'RSA2', alipayPublicKey, 'utf-8', false);
//设置请求参数
string out_trade_no = DateTime.Now.ToString('yyyyMMddHHmmssfff');
string total_amount = '0.01';
string subject = '测试支付';
string store_id = 'test_store_id';
string timeout_express = '30m';
AlipayTradePrecreateRequest request = new AlipayTradePrecreateRequest();
request.BizContent = '{' +
'out_trade_no':'' + out_trade_no + '',' +
'total_amount':'' + total_amount + '',' +
'subject':'' + subject + '',' +
'store_id':'' + store_id + '',' +
'timeout_express':'' + timeout_express + ''' +
'}';
request.SetNotifyUrl(notify_url);
//发起支付宝预下单请求
AlipayTradePrecreateResponse response = client.Execute(request);
//生成支付二维码
ViewBag.QrCode = Convert.ToBase64String(response.QrCode);
return View();
}
catch (Exception ex)
{
return Content(ex.Message);
}
}
public IActionResult Notify()
{
try
{
//获取支付宝POST过来的异步通知参数
string notifyJson = Request.Form['notify_data'];
//验签
IAopClient client = new DefaultAopClient('https://openapi.alipaydev.com/gateway.do', appId, merchantPrivateKey, 'json', '1.0', 'RSA2', alipayPublicKey, 'utf-8', false);
bool verifyResult = AlipaySignature.RSACheckContent(notifyJson, Request.Form['sign'], alipayPublicKey, 'utf-8', 'RSA2', false);
if (verifyResult)
{
//处理支付结果
AlipayTradeStatusNotifyResponse response = new AlipayTradeStatusNotifyResponse();
response.Code = '10000';
response.Msg = 'Success';
return Content(response.ToJson());
}
else
{
return Content('验签失败');
}
}
catch (Exception ex)
{
return Content(ex.Message);
}
}
}
}
- 在 Views/Home 文件夹下创建 Pay.cshtml 视图文件,并添加以下代码:
@{
ViewData['Title'] = 'Pay';
}
<h1>支付页面</h1>
<img src='data:image/png;base64,@ViewBag.QrCode' />
- 启动项目,在浏览器中访问
http://localhost:5000/Home/Pay,即可看到支付二维码。使用支付宝扫描二维码进行支付,支付完成后会跳转到回调地址http://localhost:5000/Home/Notify,处理支付结果。
以上就是一个简单的 ASP.NET MVC 中实现支付宝沙箱的例子。
注意:
- 将代码中的
应用的 AppId、商户私钥和支付宝公钥替换为你在支付宝开发平台获取的实际信息。 - 确保你的项目已正确引用 Alipay.AopSdk.Core 和 Alipay.AopSdk.F2FPayments 库。
- 详细的支付宝开发文档请参考支付宝官方网站。
原文地址: https://www.cveoy.top/t/topic/oZDw 著作权归作者所有。请勿转载和采集!