天天看點

支付寶沙箱環境調用

不少同學在寫商城想項目的時候,有遇到支付環節。今天我這裡分享一下,JAVA項目,如何調用支付寶的沙箱環境。

首先第一步:百度搜尋支付寶開放平台

支付寶沙箱環境調用

第二步:登入進入首頁,點選進入管理中心

支付寶沙箱環境調用
支付寶沙箱環境調用
支付寶沙箱環境調用
支付寶沙箱環境調用

特别注意:到這裡下載下傳生成這個碼的一個軟體,這是支付寶為我們提供的。這裡也有詳細的說明,我就不再說了。

https://docs.open.alipay.com/291/105971

此外,我們還需要下載下傳支付寶給的一個 demo

https://docs.open.alipay.com/270/106291/

如何修改,具體如下:

1.複制

1.需要将這目錄下\src\com\alipay\config 的AlipayConfig.java放到你的項目中。

2.\WebContent 下的所有jsp複制到項目中

3.\WebContent\WEB-INF\lib 所有.jar複制到項目中。

支付寶沙箱環境調用
到此我們複制工作已經完成,接下來我們來修改這個demo

2.修改

支付寶沙箱環境調用

修改完成我們的支付沙箱環境也已經算是搭建好了。但是,大家在做項目的時候一定會有這樣的一個邏輯,就是讓支付成功之後才可以生成訂單,或者修改訂單狀态。目前我所使用的方法就是在return_url.jsp 這個裡寫一個js,自動送出form表單。雖然有個bug,但對于初學者,這是一個不錯的解決方案。下面附上jsp代碼。

這是支付寶,傳回訂單生成頁的jsp,如果提前關掉該頁面,則自動送出表單失效。

<%@ page language="java" contentType="text/html; charset=utf-8"	pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>電腦網站支付return_url</title>
</head>
<%@ page import="java.util.*"%>
<%@ page import="java.util.Map"%>
<%@ page import="com.movie.utils.*"%>
<%@ page import="com.alipay.api.*"%>
<%@ page import="com.alipay.api.internal.util.*"%>
<%
/* *
 * 功能:支付寶伺服器同步通知頁面
 * 日期:2017-03-30
 * 說明:
 * 以下代碼隻是為了友善商戶測試而提供的樣例代碼,商戶可以根據自己網站的需要,按照技術文檔編寫,并非一定要使用該代碼。
 * 該代碼僅供學習和研究支付寶接口使用,隻是提供一個參考。


 *************************頁面功能說明*************************
 * 該頁面僅做頁面展示,業務邏輯處理請勿在該頁面執行
 */
 
	//擷取支付寶GET過來回報資訊
	Map<String,String> params = new HashMap<String,String>();
	Map<String,String[]> requestParams = request.getParameterMap();
	for (Iterator<String> 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] + ",";
		}
		//亂碼解決,這段代碼在出現亂碼時使用
		valueStr = new String(valueStr.getBytes("ISO-8859-1"), "utf-8");
		params.put(name, valueStr);
	}
	
	boolean signVerified = AlipaySignature.rsaCheckV1(params, AlipayConfig.alipay_public_key, AlipayConfig.charset, AlipayConfig.sign_type); //調用SDK驗證簽名

	//——請在這裡編寫您的程式(以下代碼僅作參考)——
	if(signVerified) {
		//商戶訂單号
		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 total_amount = new String(request.getParameter("total_amount").getBytes("ISO-8859-1"),"UTF-8");
		
		out.println("trade_no:"+trade_no+"<br/>out_trade_no:"+out_trade_no+"<br/>total_amount:"+total_amount);
	}else {
		out.println("驗簽失敗");
	}
	//——請在這裡編寫您的程式(以上代碼僅作參考)——
%>
<body>
<script type="text/javascript">
  function dtime(){
  setInterval(sub(), 30000);
  }
  function sub(){
      document.getElementById("frm").submit();
  }
  </script>
  <body onload="dtime();">
  <form action="getOrder" method="post" id="frm">
  <input type="hidden" name="order_where" value="${order.order_where}">
  <input type="hidden" name="order_id" value="${order.order_id}">
  <input type="hidden" name="order_seq" value="${order.order_seq}">
  <input type="submit" >
  </form>
         
</body>
</html>