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的功能一致能够直接使用web

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

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 "";
            }
        } 
    }
相关文章
相关标签/搜索