码迷,mamicode.com
首页 > Web开发 > 详细

asp.net core 支付宝 电脑2.0支付

时间:2018-06-21 18:25:19      阅读:426      评论:0      收藏:0      [点我收藏+]

标签:out   tps   model   orm   private   als   openapi   隐藏   spl   

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

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

技术分享图片

  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 "";
            }
        } 
    }

 

asp.net core 支付宝 电脑2.0支付

标签:out   tps   model   orm   private   als   openapi   隐藏   spl   

原文地址:https://www.cnblogs.com/jomzhang/p/9210337.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!