支付寶手機支付接口

描述: 網站須要調用 支付寶支付功能------html

此次介紹 手機網站支付

2017.3月支付寶手機網站支付升級2.0(認真看)     官方文檔

升級後,能夠直接在網站中調起  移動端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

 

開發中須要注意的配置事項:編程

一、添加應用---簽約手機網站支付

https://doc.open.alipay.com/docs/doc.htm?spm=a219a.7629140.0.0.wTflnJ&treeId=60&articleId=104788&docType=1json

二、配置密鑰(認真看)

https://doc.open.alipay.com/docs/doc.htm?spm=a219a.7629140.0.0.hAazoO&treeId=60&articleId=104740&docType=1api

 

步驟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謝謝。

                                                                                                      點我送 阿里雲幸運娟1         阿里雲幸運娟  2     阿里雲幸運娟  3    

相關文章
相關標籤/搜索