zoukankan      html  css  js  c++  java
  • asp.net core 支付宝支付( 电脑2.0)

      支付宝电脑支付实测在手机浏览器也可以唤醒手机支付宝进行支付,因此也可以作为支付宝手机web支付方式。支付宝电脑支付流程为使用支付宝官方sdk通过获取的支付宝参数构造DefaultAopClient实例,操作实例设置SetBizModel,设置SetNotifyUrl最后执行SdkExecute方法得到AlipayTradeAppPayResponse实例的Body属性,前端只需要获取该Body值写入到document中(相当于写入一个自动提交的表单)即可跳转到支付宝支付。

      1.asp.net core平台没有支付宝官方sdk,但可以在nuget中搜索Alipay.AopSdk.Core(第三方库)并安装,该sdk功能和官方 framework版本的sdk的功能一致可以直接使用

      2.定义支付宝配置类,配置类可以填写默认参数使用默认值,也可以从数据库/配置中读取配置赋值到该类,定义如下

    public class AlipayConfig
        {
            // 应用ID,您的APPID
            public string app_id = "";
    
            // 支付宝网关
            public string gatewayUrl = "https://openapi.alipay.com/gateway.do";
    
            // 商户私钥,您的原始格式RSA私钥
            public string private_key = "";
    
            // 支付宝公钥,查看地址:https://openhome.alipay.com/platform/keyManage.htm 对应APPID下的支付宝公钥,注意不是应用公钥,不是应用公钥,不是应用公钥。
            public string alipay_public_key = "";
    
            // 签名方式
            public string sign_type = "RSA2";
    
            // 编码格式
            public string charset = "UTF-8";
    
            // 同步回调地址
            public string return_url = ";
    
            // 异步回调地址
            public string notify_url = "";
        }

      3.支付宝电脑2.0支付业务类,控制器中直接调用该业务方法,返回的一串表单字符串ajax传给前端直接追加写入到body中即可跳转支付宝支付

    public class AlipayService
        {
            #region 字段
            AlipayConfig alipayConfig = new AlipayConfig();
    
            #endregion
    
            #region 构造方法
            public AlipayService()
            {
    
            }
            public AlipayService(AlipayConfig alipayConfig)
            {
                this.alipayConfig = alipayConfig;
            } 
            #endregion
    
            /// <summary>
            /// 支付宝电脑网站2.0支付,成功返回表单信息直接写入Response,失败返回空
            /// </summary>
            /// <param name="out_trade_no">订单号</param>
            /// <param name="subject">订单名称</param>
            /// <param name="total_amout">付款金额</param>
            /// <param name="body">商品描述</param>
            /// <returns></returns>
            public string GetAliPayTradePayRes(string out_trade_no, string subject, string total_amout, string body)
            {
                DefaultAopClient client = new DefaultAopClient(alipayConfig.gatewayUrl, alipayConfig.app_id, alipayConfig.private_key, "json", "1.0", alipayConfig.sign_type, alipayConfig.alipay_public_key, alipayConfig.charset, false);
    
                // 组装业务参数model
                AlipayTradePagePayModel model = new AlipayTradePagePayModel();
                model.Body = body;
                model.Subject = subject;
                model.TotalAmount = total_amout;
                model.OutTradeNo = out_trade_no;
                model.ProductCode = "FAST_INSTANT_TRADE_PAY";
    
                AlipayTradePagePayRequest request = new AlipayTradePagePayRequest();
                // 设置同步回调地址
                request.SetReturnUrl(alipayConfig.return_url);
                // 设置异步通知接收地址
                request.SetNotifyUrl(alipayConfig.notify_url);
                // 将业务model载入到request
                request.SetBizModel(model);
    
                AlipayTradePagePayResponse response = null;
                try
                {
                    response = client.pageExecute(request, null, "post");
                    //返回正常生成的表单信息,自动提交到支付宝页面,原生成信息可见改为隐藏
                    return response.Body.Replace("<form", "<form style='display:none'");
                }
                catch (Exception exp)
                {
                    return "";
                }
            } 
        }
  • 相关阅读:
    正则表达式系统教程 [转,主要是自己备忘] 碧血黄沙
    vim打开txt文件看到^@字符
    使用PuTTY软件远程登录root被拒:access denied
    Using CustomProperties of CodeSmith
    ASP:Literal控件用法
    ASP.NET2.0中配置文件的加密与解密
    Enterprise Library 2.0 Data Access Application Block (补充)
    Infragistics中WebGrid的MultiColumn Headers设计
    世界杯揭幕战比分预测
    Enterprise Library1.0 DataAccess Application Block
  • 原文地址:https://www.cnblogs.com/jomzhang/p/9210337.html
Copyright © 2011-2022 走看看