描述: 網站需要調用 支付寶支付功能------
這次介紹 手機網站支付
2017.3月支付寶手機網站支付升級2.0(認真看) 官方文檔
升級后,可以直接在網站中調起 移動端APP支付,這才是為什么升級的主要原因-----必備!
最新SDK---AopSdk.dll 下載 后,在你需要的項目中引用dll,服務端寫的很簡單,

//調用Ali封裝好的接口獲取支付鏈接 IAopClient client = new DefaultAopClient("https://openapi.alipay.com/gateway.do", Config.partner2, Config.private_key2, "json", "1.0", "RSA2", "alipay_public_key", "utf-8", false); AlipayTradeWapPayRequest request = new AlipayTradeWapPayRequest(); request.SetNotifyUrl(notifyUrl); request.SetReturnUrl(showUrl); request.BizContent = "{" + " \'body\':\'"+ body +"\'," + " \'subject\':\'"+ subject +"\'," + " \'out_trade_no\':\'" + outTradeNo + "\'," + " \'timeout_express\':\'30m\'," + " \'total_amount\':" + totalFee + "," + " \'product_code\':\'QUICK_WAP_PAY\'" + " }"; AlipayTradeWapPayResponse response = client.pageExecute(request); string form = response.Body; Response.Write(form);
form就是你需要的內容。 這里強調一下:官方SDK運行的結果 form 是一個FORM 表單Response.Write(form);
,
如果你需要得到一個 鏈接地址的話,需要對SDK修改,如下打開sdk源代碼找到這個方法。
#region IAopClient Members
public T pageExecute<T>(IAopRequest<T> request) where T : AopResponse
{
return pageExecute<T>(request, null, "POST"); ------改成 GET,獲取的就是 支付url,重新編譯引用。 } #endregion
開發中需要注意的配置事項:
1、添加應用---簽約手機網站支付
2、配置密鑰(認真看)
步驟1:RSA公私鑰生成(保存好,后期開發用到 這個“應用公鑰”)
用工具生成 2048(選非java的) 上傳到 【應用公鑰】,對應的私鑰 放到代碼中【商戶的私鑰】,同時得到 【支付寶公鑰】放到代碼中
這個搞不對的話,那會一直報錯 說什么 秘鑰不正確
生成方式一(推薦):使用支付寶提供的一鍵生成工具(內附使用說明)
步驟2:上傳公鑰&獲取支付寶公鑰(重要)
3、快速接入
內含JAVA、PHP、CSHARP(C#)三種編程語言。 下載各自DOME里面有介紹怎么使用,基本上都可以運行成功。
代碼中這些配置相當重要,配置不對就會導致 未將對象引用到實例這樣的錯誤。
支付回調:

if (verifyResult)//驗證成功 { bool isRefund = false; string batch_no = string.Empty; if(sPara.ContainsKey("out_biz_no")) { isRefund = true; batch_no = sPara["out_biz_no"]; } //商戶訂單號 string out_trade_no = Request.Form["out_trade_no"]; //支付寶交易號 string trade_no = Request.Form["trade_no"]; //交易狀態 string trade_status = Request.Form["trade_status"]; string buyer_id = Request.Form["buyer_id"]; string buyer_emial = Request.Form["buyer_logon_id"]; if (string.IsNullOrEmpty(out_trade_no)) { throw new Exception("商戶訂單號不能為空"); } out_trade_no, trade_no, trade_status)); if (trade_status == "TRADE_FINISHED") { //判斷該筆訂單是否在商戶網站中已經做過處理 //如果沒有做過處理,根據訂單號(out_trade_no)在商戶網站的訂單系統中查到該筆訂單的詳細,並執行商戶的業務程序 //請務必判斷請求時的total_fee、seller_id與通知時獲取的total_fee、seller_id為一致的 //如果有做過處理,不執行商戶的業務程序 //處理業務邏輯 //注意: //退款日期超過可退款期限后(如三個月可退款),支付寶系統發送該交易狀態通知 } else if (trade_status == "TRADE_SUCCESS") { //判斷該筆訂單是否在商戶網站中已經做過處理 //如果沒有做過處理,根據訂單號(out_trade_no)在商戶網站的訂單系統中查到該筆訂單的詳細,並執行商戶的業務程序 //請務必判斷請求時的total_fee、seller_id與通知時獲取的total_fee、seller_id為一致的 //如果有做過處理,不執行商戶的業務程序 if (isRefund) { //處理退款業務---退款成功 } else { //處理訂單業務---付款成功 } //注意: //付款完成后,支付寶系統發送該交易狀態通知 } else if (trade_status == "TRADE_CLOSED")//未付款交易超時關閉,或支付完成后全額退款 { if (isRefund) { //處理退款業務--退款成功 } } Response.Write("success"); //必須輸出success } else//驗證失敗 { Response.Write("failure"); }
不懂的可以在下面留言~ 希望大家可以順利開發完成。
哥們 如果覺得對你有幫助了,不妨點個贊哈! O(∩_∩)O謝謝。