根據支付寶開方平臺下載即時到帳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