在ASPNET MVC中实现支付宝沙箱并列举例
- 创建Alipay沙箱账号并获取沙箱密钥。
- 在ASP.NET MVC项目中添加Alipay SDK引用。
- 在Web.config中添加Alipay的配置信息,包括App ID、沙箱网关、RSA私钥等。
- 在Controller中编写Action,调用Alipay SDK提供的API进行支付操作。
- 编写视图文件,显示支付按钮和订单信息。
以下是一个实现支付宝沙箱的ASP.NET MVC示例:
- 创建Alipay沙箱账号并获取沙箱密钥。
在支付宝开发者平台创建沙箱账号,并获取App ID、沙箱网关、RSA私钥等信息。
- 在ASP.NET MVC项目中添加Alipay SDK引用。
在Visual Studio中打开ASP.NET MVC项目,右键选择“引用”,点击“管理NuGet程序包”,搜索“Alipay.AopSdk”,安装Alipay SDK。
- 在Web.config中添加Alipay的配置信息。
在Web.config中添加如下配置信息:
<configuration>
<appSettings>
<add key="AlipayAppId" value="沙箱App ID"/>
<add key="AlipayGateway" value="https://openapi.alipaydev.com/gateway.do"/>
<add key="AlipayPublicKey" value="沙箱支付宝公钥"/>
<add key="AlipayPrivateKey" value="沙箱商户私钥"/>
</appSettings>
</configuration>
- 在Controller中编写Action,调用Alipay SDK提供的API进行支付操作。
using Aop.Api;
using Aop.Api.Request;
using Aop.Api.Response;
public class PaymentController : Controller
{
[HttpPost]
public ActionResult Pay(string orderId, decimal amount)
{
// 获取配置信息
var appId = ConfigurationManager.AppSettings["AlipayAppId"];
var gateway = ConfigurationManager.AppSettings["AlipayGateway"];
var privateKey = ConfigurationManager.AppSettings["AlipayPrivateKey"];
var publicKey = ConfigurationManager.AppSettings["AlipayPublicKey"];
// 创建Alipay客户端
var client = new DefaultAopClient(gateway, appId, privateKey, "json", "1.0", "RSA2", publicKey, "utf-8", false);
// 创建支付请求
var request = new AlipayTradePagePayRequest();
request.SetReturnUrl("http://localhost:1234/Payment/ReturnUrl");
request.SetNotifyUrl("http://localhost:1234/Payment/NotifyUrl");
// 设置订单信息
request.SetBizContent(JsonConvert.SerializeObject(new
{
out_trade_no = orderId,
total_amount = amount.ToString("0.00"),
subject = "订单支付",
product_code = "FAST_INSTANT_TRADE_PAY"
}));
// 调用支付接口
var response = client.pageExecute(request);
// 返回支付页面
return Content(response.Body);
}
public ActionResult ReturnUrl()
{
// 处理支付结果
var request = HttpContext.Request;
var dict = new Dictionary<string, string>();
foreach (var key in request.Form.AllKeys)
{
dict.Add(key, request.Form[key]);
}
var client = new DefaultAopClient(ConfigurationManager.AppSettings["AlipayGateway"], ConfigurationManager.AppSettings["AlipayAppId"], ConfigurationManager.AppSettings["AlipayPrivateKey"], "json", "1.0", "RSA2", ConfigurationManager.AppSettings["AlipayPublicKey"], "utf-8", false);
var response = client.Execute(new AlipayTradePagePayResponse(), dict);
if (response.Code == "10000" && response.TradeStatus == "TRADE_SUCCESS")
{
// 支付成功,更新订单状态
return Content("支付成功");
}
else
{
// 支付失败,返回错误信息
return Content(response.SubMsg);
}
}
public ActionResult NotifyUrl()
{
// 处理支付结果
var request = HttpContext.Request;
var dict = new Dictionary<string, string>();
foreach (var key in request.Form.AllKeys)
{
dict.Add(key, request.Form[key]);
}
var client = new DefaultAopClient(ConfigurationManager.AppSettings["AlipayGateway"], ConfigurationManager.AppSettings["AlipayAppId"], ConfigurationManager.AppSettings["AlipayPrivateKey"], "json", "1.0", "RSA2", ConfigurationManager.AppSettings["AlipayPublicKey"], "utf-8", false);
var response = client.Execute(new AlipayTradePagePayResponse(), dict);
if (response.Code == "10000" && response.TradeStatus == "TRADE_SUCCESS")
{
// 支付成功,更新订单状态
return Content("success");
}
else
{
// 支付失败,返回错误信息
return Content("fail");
}
}
}
- 编写视图文件,显示支付按钮和订单信息。
@model OrderViewModel
<h2>订单详情</h2>
<p>订单号:@Model.OrderId</p>
<p>订单金额:@Model.Amount</p>
<form method="post" action="/Payment/Pay">
<input type="hidden" name="orderId" value="@Model.OrderId" />
<input type="hidden" name="amount" value="@Model.Amount" />
<button type="submit">立即支付</button>
</form>
以上示例实现了一个简单的支付宝沙箱支付功能,用户可以在订单详情页面点击“立即支付”按钮,跳转到支付宝支付页面进行支付操作。支付成功后,用户会被重定向回网站,并显示支付成功或失败的提示信息
原文地址: http://www.cveoy.top/t/topic/hv54 著作权归作者所有。请勿转载和采集!