您好,登錄后才能下訂單哦!
這篇文章主要介紹了Java如何實現支付寶電腦支付基于servlet版本,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
前期準備:
螞蟻金融開放平臺進行登錄操作
進入我的開放平臺
在上方找到沙箱,進入沙箱(網絡編程虛擬執行環境)。
這里的RSA2密鑰設置下,我已經設置好了,所以便有了支付寶公鑰(公鑰是對外公開的,私鑰是自己保留的具體的不多做解釋)
至于RSA2密鑰的生成,可參考如下操作:
生成后在工具文件夾如下路徑可以查看自己生成的公鑰和私鑰一對
私鑰保留,公鑰設置到開發者平臺RSA2上便可以了。
官方DEMO因為我們需要一些jar包和可參考類,所以拿個DEMO方便很多
所需要的jar包路徑如下
實例編寫:
工具我這里用的是eclipse,這個影響不大~
新建web項目
項目所需要的類如下
AlipayConfig.java
package cn.taosir.demo; public class AlipayConfig { // 頁面跳轉同步通知頁面路徑 需http://格式的完整路徑,不能加?id=123這類自定義參數 public static String return_url = "http://localhost:8080/success.jsp"; // 服務器異步通知頁面路徑 需http://格式的完整路徑,不能加?id=123這類自定義參數,必須外網可以正常訪問 public static String notify_url = "http://localhost:8080/notify"; // 應用ID,您的APPID,收款賬號既是您的APPID對應支付寶賬號 public static String app_id = ""; // 支付寶公鑰,查看地址:https://openhome.alipay.com/platform/keyManage.htm 對應APPID下的支付寶公鑰。 public static String alipay_public_key = ""; // 商戶私鑰,您的PKCS8格式RSA2私鑰 public static String merchant_private_key = ""; // 簽名方式 public static String sign_type = "RSA2"; // 字符編碼格式 public static String charset = "utf-8"; // 支付寶網關 public static String gatewayUrl = "https://openapi.alipaydev.com/gateway.do"; }
APPID(在查看支付寶公鑰位置上方)、支付寶公鑰、自己的私鑰,記得配上
NoitfyServlet.java
package cn.taosir.demo; import java.io.IOException; import java.util.Map; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet("/notify") public class NotifyServlet extends HttpServlet{ @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("接收到支付寶的異步通知請求——"); Map<String,String[]> parameterMap=request.getParameterMap(); System.out.println(parameterMap); //成功處理后返回success response.getWriter().write("success"); } }
OrderServlet.java
package cn.taosir.demo; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Calendar; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.alipay.api.AlipayApiException; import com.alipay.api.AlipayClient; import com.alipay.api.DefaultAlipayClient; import com.alipay.api.request.AlipayTradePagePayRequest; import com.alipay.api.response.AlipayTradePagePayResponse; @WebServlet("/order/confirm") public class OrderServlet extends HttpServlet{ @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("開始處理OrderServlet的服務"); String title = "濤先森"; String total = "666666"; String message = "如有什么建議歡迎留言評論"; //生成訂單號 SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddHHmmss"); String orderSn = simpleDateFormat.format(Calendar.getInstance().getTime()); //向支付寶發送請求 //獲得初始化的AlipayClient AlipayClient alipayClient = new DefaultAlipayClient(AlipayConfig.gatewayUrl, AlipayConfig.app_id, AlipayConfig.merchant_private_key, "json", AlipayConfig.charset, AlipayConfig.alipay_public_key, AlipayConfig.sign_type); //設置請求參數 AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest(); alipayRequest.setReturnUrl(AlipayConfig.return_url); alipayRequest.setNotifyUrl(AlipayConfig.notify_url); //商戶訂單號,商戶網站訂單系統中唯一訂單號,必填 String out_trade_no = orderSn; //付款金額,必填 String total_amount = total; //訂單名稱,必填 String subject = title; //商品描述,可空 String body = message; alipayRequest.setBizContent("{\"out_trade_no\":\"" + out_trade_no + "\"," + "\"total_amount\":\"" + total_amount + "\"," + "\"subject\":\"" + subject + "\"," + "\"body\":\"" + body + "\"," + "\"product_code\":\"FAST_INSTANT_TRADE_PAY\"}"); //若想給BizContent增加其他可選請求參數,以增加自定義超時時間參數timeout_express來舉例說明 //alipayRequest.setBizContent("{\"out_trade_no\":\""+ out_trade_no +"\"," // + "\"total_amount\":\""+ total_amount +"\"," // + "\"subject\":\""+ subject +"\"," // + "\"body\":\""+ body +"\"," // + "\"timeout_express\":\"10m\"," // + "\"product_code\":\"FAST_INSTANT_TRADE_PAY\"}"); //請求參數可查閱【電腦網站支付的API文檔-alipay.trade.page.pay-請求參數】章節 AlipayTradePagePayResponse alipayResponse = null; try { alipayResponse=alipayClient.pageExecute(alipayRequest); System.out.println(alipayResponse.getBody()); System.out.println(alipayResponse.getMsg()); } catch (AlipayApiException e) { e.printStackTrace(); } response.setContentType("text/html;charset=UTF-8"); response.getWriter().write(alipayResponse.getBody()); } }
至此,大功告成
下面開始測試
將項目部署到tomcat上run起來
http://localhost:8080/alipay-demo/order/confirm 可以看到頁面通過該請求跳轉到了支付寶的接口
下載沙箱環境的支付寶APP可以掃碼測試喔
這里我們點擊右邊登錄賬戶付款
賬號和密碼可在沙箱平臺查看個人賬號
之后登錄就支付了,正常就跳轉到了支付成功頁面。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。