描述: 網站須要調用 支付寶支付功能------html
升級後,能夠直接在網站中調起 移動端APP支付,這纔是爲何升級的主要緣由-----必備!java
最新SDK---AopSdk.dll 下載 後,在你須要的項目中引用dll,服務端寫的很簡單,express
//調用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 表單,
若是你須要獲得一個 連接地址的話,須要對SDK修改,以下打開sdk源代碼找到這個方法。
Response.Write(form);
#region IAopClient Members
public T pageExecute<T>(IAopRequest<T> request) where T : AopResponse
{
return pageExecute<T>(request, null, "POST"); ------改爲 GET,獲取的就是 支付url,從新編譯引用。 } #endregion
開發中須要注意的配置事項:編程
步驟1:RSA公私鑰生成(保存好,後期開發用到 這個「應用公鑰」)編程語言
用工具生成 2048(選非java的) 上傳到 【應用公鑰】,對應的私鑰 放到代碼中【商戶的私鑰】,同時獲得 【支付寶公鑰】放到代碼中ide
這個搞不對的話,那會一直報錯 說什麼 祕鑰不正確工具
生成方式一(推薦):使用支付寶提供的一鍵生成工具(內附使用說明)網站
步驟2:上傳公鑰&獲取支付寶公鑰(重要)
內含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謝謝。