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 "";
            }
        } 
    }
相關文章
相關標籤/搜索