支付寶即時到帳接口

根據支付寶開方平臺下載即時到帳demo,下載完成以下圖所示java

1.支付接口的「合做身份者ID」和「密匙」就要本身申請  申請連接:https://doc.open.alipay.com/docs/doc.htm?spm=a219a.7629140.0.0.h6y2hf&treeId=62&articleId=104739&docType=1api

2.而後到 AlipayConfig 中填寫申請到的合做者ID和 密匙!
數組

這裏寫圖片描述

3.在下載的支付寶demo文檔中,能夠看到 alipayapi.jsp 和 notify_url.jsp
這裏寫圖片描述
將這兩個頁面中的代碼 轉化成 JAVA形式 寫入 AlipayAction.java服務器

    /**
     * 支付寶服務器異步通知頁面
     * @param req
     * @param res
     */
    @RequestMapping(value="/alipayNotify")
    public void alipayNotify(HttpServletRequest req,HttpServletResponse res){
        //獲取支付寶POST過來反饋信息
        Map<String,String> params = new HashMap<String,String>();
        Map requestParams = request.getParameterMap();
        for (Iterator iter = requestParams.keySet().iterator(); iter.hasNext();) {
            String name = (String) iter.next();
            String[] values = (String[]) requestParams.get(name);
            String valueStr = "";
            for (int i = 0; i < values.length; i++) {
                valueStr = (i == values.length - 1) ? valueStr + values[i]
                        : valueStr + values[i] + ",";
            }
            //亂碼解決,這段代碼在出現亂碼時使用。若是mysign和sign不相等也能夠使用這段代碼轉化
            //valueStr = new String(valueStr.getBytes("ISO-8859-1"), "gbk");
            params.put(name, valueStr);
        }

        //獲取支付寶的通知返回參數,可參考技術文檔中頁面跳轉同步通知參數列表(如下僅供參考)//

        /**商戶訂單號*/
        //String out_trade_no = new String(request.getParameter("out_trade_no").getBytes("ISO-8859-1"),"UTF-8");

        /**支付寶交易號*/
        //String trade_no = new String(request.getParameter("trade_no").getBytes("ISO-8859-1"),"UTF-8");

        /**交易狀態*/
        String trade_status = "";
        try {
            trade_status = new String(request.getParameter("trade_status").getBytes("ISO-8859-1"),"UTF-8");
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }

        //獲取支付寶的通知返回參數,可參考技術文檔中頁面跳轉同步通知參數列表(以上僅供參考)//

        if(AlipayNotify.verify(params)){//驗證成功
            ////////↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓////////
            //請在這裏加上商戶的業務邏輯程序代碼

            //——請根據您的業務邏輯來編寫程序(如下代碼僅做參考)——
            /**
             *  TRADE_FINISHED(表示交易已經成功結束,並不能再對該交易作後續操做);
                TRADE_SUCCESS(表示交易已經成功結束,能夠對該交易作後續操做,如:分潤、退款等);
             */
            if(trade_status.equals("TRADE_FINISHED")){
                //判斷該筆訂單是否在商戶網站中已經作過處理
                    //若是沒有作過處理,根據訂單號(out_trade_no)在商戶網站的訂單系統中查到該筆訂單的詳細,並執行商戶的業務程序
                    //請務必判斷請求時的total_fee、seller_id與通知時獲取的total_fee、seller_id爲一致的
                    //若是有作過處理,不執行商戶的業務程序

                //注意:
                //退款日期超過可退款期限後(如三個月可退款),支付寶系統發送該交易狀態通知
            } else if (trade_status.equals("TRADE_SUCCESS")){
                //判斷該筆訂單是否在商戶網站中已經作過處理
                    //若是沒有作過處理,根據訂單號(out_trade_no)在商戶網站的訂單系統中查到該筆訂單的詳細,並執行商戶的業務程序
                    //請務必判斷請求時的total_fee、seller_id與通知時獲取的total_fee、seller_id爲一致的
                    //若是有作過處理,不執行商戶的業務程序

                //注意:
                //付款完成後,支付寶系統發送該交易狀態通知
            }

            //——請根據您的業務邏輯來編寫程序(以上代碼僅做參考)——

            out("success",res); //請不要修改或刪除

            /////↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑/////
        }else{//驗證失敗
            out("fail",res);
        }
    }

    /**
     * 向支付寶發送請求
     * @param req
     * @param res
     * @param alipayConfig
     */
    @RequestMapping(value="/alipayApi")
    public void alipayApi(HttpServletRequest req,HttpServletResponse res,AlipayConfig alipayConfig){

        /**商戶訂單號,商戶網站訂單系統中惟一訂單號,必填*/
        String out_trade_no = "";

        /**訂單名稱,必填*/
        String subject = "";

        /**付款金額,必填*/
        String total_fee = "";

        /**商品描述,可空*/
        String body = "";
        try {
            out_trade_no = new String(request.getParameter("WIDout_trade_no").getBytes("ISO-8859-1"),"UTF-8");
            subject = new String(request.getParameter("WIDsubject").getBytes("ISO-8859-1"),"UTF-8");
            total_fee = new String(request.getParameter("WIDtotal_fee").getBytes("ISO-8859-1"),"UTF-8");
            body = new String(request.getParameter("WIDbody").getBytes("ISO-8859-1"),"UTF-8");
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }

        //////////////////////////////////////////////////////////////////////////////////

        /**把請求參數打包成數組*/
        Map<String, String> sParaTemp = new HashMap<String, String>();
        sParaTemp.put("service", AlipayConfig.service);//
        sParaTemp.put("partner", AlipayConfig.partner);
        sParaTemp.put("seller_id", AlipayConfig.seller_id);
        sParaTemp.put("_input_charset", AlipayConfig.input_charset);//
        sParaTemp.put("payment_type", AlipayConfig.payment_type);//
        sParaTemp.put("notify_url", AlipayConfig.notify_url);
        sParaTemp.put("return_url", AlipayConfig.return_url);
        sParaTemp.put("anti_phishing_key", AlipayConfig.anti_phishing_key);//
        sParaTemp.put("exter_invoke_ip", AlipayConfig.exter_invoke_ip);//
        sParaTemp.put("out_trade_no", out_trade_no);
        sParaTemp.put("subject", subject);
        sParaTemp.put("total_fee", total_fee);
        sParaTemp.put("body", body);
        //其餘業務參數根據在線開發文檔,添加參數.文檔地址:https://doc.open.alipay.com/doc2/detail.htm?spm=a219a.7629140.0.0.O9yorI&treeId=62&articleId=103740&docType=1
        //如sParaTemp.put("參數名","參數值");

        /**創建請求*/
        String sHtmlText = AlipaySubmit.buildRequest(sParaTemp,"get","確認");
        out(sHtmlText,res);
    }

 以後在 alipayNotify 方法內編寫本身的業務邏輯便可。。。。app

相關文章
相關標籤/搜索