要在 ASP.NET MVC 中实现支付宝沙箱,需要进行以下步骤:

  1. 在支付宝开放平台注册账号并创建应用,获取应用的 APPID、公钥和私钥。
  2. 下载支付宝 SDK 并添加到项目中。
  3. 创建一个控制器来处理支付宝接口,包括生成订单、发起支付、支付结果回调等。
  4. 在控制器中引入支付宝 SDK,配置应用信息和沙箱环境的 URL。
  5. 实现生成订单、发起支付和支付结果回调的方法,包括生成订单号、设置订单参数、调用支付宝 API 等。
  6. 在视图中添加支付按钮,并绑定发起支付的方法。

以下是 ASP.NET MVC 中实现支付宝沙箱的核心代码示例:

  1. 引入支付宝 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);
  1. 实现生成订单的方法:
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;
}
  1. 实现发起支付的方法:
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);
}
  1. 实现支付结果回调的方法:
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');
    }
}
  1. 在视图中添加支付按钮并绑定发起支付的方法:
<button type='button' onclick='location.href='@Url.Action('Pay', new { out_trade_no = Model.OrderNo })'>立即支付</button>
ASP.NET MVC 支付宝沙箱集成教程及核心代码示例

原文地址: https://www.cveoy.top/t/topic/oYs3 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录