aspnet 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中实现支付宝沙箱的例子
原文地址: https://www.cveoy.top/t/topic/hwPW 著作权归作者所有。请勿转载和采集!