ASP.NET MVC 支付宝沙箱集成教程及核心代码示例
要在 ASP.NET MVC 中实现支付宝沙箱,需要进行以下步骤:
- 在支付宝开放平台注册账号并创建应用,获取应用的 APPID、公钥和私钥。
- 下载支付宝 SDK 并添加到项目中。
- 创建一个控制器来处理支付宝接口,包括生成订单、发起支付、支付结果回调等。
- 在控制器中引入支付宝 SDK,配置应用信息和沙箱环境的 URL。
- 实现生成订单、发起支付和支付结果回调的方法,包括生成订单号、设置订单参数、调用支付宝 API 等。
- 在视图中添加支付按钮,并绑定发起支付的方法。
以下是 ASP.NET MVC 中实现支付宝沙箱的核心代码示例:
- 引入支付宝 SDK 和配置应用信息和沙箱环境的 URL:
using Aop.Api;
using Aop.Api.Request;
using Aop.Api.Response;
private static readonly string APP_ID = '{APP_ID}';
private static readonly string PRIVATE_KEY = '{PRIVATE_KEY}';
private static readonly string ALIPAY_PUBLIC_KEY = '{ALIPAY_PUBLIC_KEY}';
private static readonly string GATEWAY_URL = 'https://openapi.alipaydev.com/gateway.do';
private static readonly string NOTIFY_URL = '{NOTIFY_URL}';
private IAopClient client = new DefaultAopClient(GATEWAY_URL, APP_ID, PRIVATE_KEY, 'json', '1.0', 'RSA2', ALIPAY_PUBLIC_KEY, 'utf-8', false);
- 实现生成订单的方法:
public string GenerateOrder()
{
string out_trade_no = DateTime.Now.ToString('yyyyMMddHHmmssfff') + new Random().Next(1000, 9999);
decimal total_amount = 0.01m;
string subject = '商品名称';
string body = '商品描述';
string product_code = 'FAST_INSTANT_TRADE_PAY';
AlipayTradePagePayRequest request = new AlipayTradePagePayRequest();
request.SetReturnUrl('{RETURN_URL}');
request.SetNotifyUrl(NOTIFY_URL);
request.SetBizContent('{'out_trade_no':'' + out_trade_no + '',' + ''total_amount':'' + total_amount + '',' + ''subject':'' + subject + '',' + ''body':'' + body + '',' + ''product_code':'' + product_code + ''}');
AlipayTradePagePayResponse response = client.pageExecute(request);
return response.Body;
}
- 实现发起支付的方法:
public ActionResult Pay(string out_trade_no)
{
AlipayTradePagePayModel model = new AlipayTradePagePayModel();
model.OutTradeNo = out_trade_no;
model.TotalAmount = '0.01';
model.Subject = '商品名称';
model.Body = '商品描述';
model.ProductCode = 'FAST_INSTANT_TRADE_PAY';
AlipayTradePagePayRequest request = new AlipayTradePagePayRequest();
request.SetReturnUrl('{RETURN_URL}');
request.SetNotifyUrl(NOTIFY_URL);
request.SetBizModel(model);
AlipayTradePagePayResponse response = client.pageExecute(request);
return Content(response.Body);
}
- 实现支付结果回调的方法:
public ActionResult Notify()
{
Dictionary<string, string> parameters = new Dictionary<string, string>();
foreach (string key in Request.Form.AllKeys)
{
parameters.Add(key, Request.Form[key]);
}
bool verifyResult = AlipaySignature.RSACheckV1(parameters, ALIPAY_PUBLIC_KEY, 'utf-8', 'RSA2', false);
if (verifyResult)
{
string trade_status = Request.Form['trade_status'];
if (trade_status == 'TRADE_SUCCESS' || trade_status == 'TRADE_FINISHED')
{
// 支付成功处理
}
return Content('success');
}
else
{
return Content('fail');
}
}
- 在视图中添加支付按钮并绑定发起支付的方法:
<button type='button' onclick='location.href='@Url.Action('Pay', new { out_trade_no = Model.OrderNo })'>立即支付</button>
原文地址: https://www.cveoy.top/t/topic/oYs3 著作权归作者所有。请勿转载和采集!