支付寶電腦支付實測在手機瀏覽器也能夠喚醒手機支付寶進行支付,所以也能夠做爲支付寶手機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 ""; } } }