java實現支付寶接口---支付

java實現實現支付寶接口

螞蟻沙箱環境 (Beta) 是協助開發者進行接口功能開發及主要功能聯調的輔助環境。可以模擬實現支付寶的支付功能。
接下的實現技術是運用到springmvc註解方法實現的支付。

準備工作

  1. 去支付寶開放平臺,用你的支付登錄開通沙箱支付的服務。支付寶開放平臺

  2. 點擊右上角的立即入駐之後,確認加入。在這裏插入圖片描述

  3. 點擊導航欄的開發者中心,之後就進入到沙箱應用,再點擊右邊的設置。在這裏插入圖片描述

  4. 點擊研發服務在這裏插入圖片描述
    在這裏插入圖片描述

  5. 使用支付寶祕鑰生成器生成自己的私鑰和公鑰,公鑰填至框中,私鑰自己保管好。使用工具生成器生成好的密鑰會自動給你保存到你的電腦。 然後保存設置。在這裏插入圖片描述
    在這裏插入圖片描述

  6. 然後點擊查看,可以看到你的公鑰和支付寶的公鑰,說明你已經配置好了。

  7. 沙箱賬號就是買家和商家的賬號和密碼,還有金額,可以進行充值,手機下載沙箱錢包,用買家賬號密碼登錄即可,就可以掃碼付款了,付款的金額就到了商家的賬戶餘額裏。

java代碼實現支付

  1. 前臺發請求的代碼,需要獲取訂單號和訂單金額傳到後臺。
    注意:後臺返回的數據格式不能輸json類型
    因爲json類型的返回的數據
//支付的請求
function topay(price,that){
	//獲取訂單號
	var ono=$(that).attr("id");
	
		$.post("../../apli/pay",{ono:ono,price:price},function(data){
			$("#apli").html(data);
		},"text")
	}
  1. 支付寶接口的配置類 ApplicationConfig.java
    對應的地方修改成你自己的一些信息。
    特別注意一下異步和同步通知頁面路徑的處理
public class ApplicationConfig {
	    // 應用ID,您的APPID,收款賬號既是您的APPID對應支付寶賬號
		public static String app_id = "2016102400748299";
	 
		// 商戶私鑰,您的PKCS8格式RSA2私鑰
		public static String merchant_private_key = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDTcUPbyeVtd/a7mgtC/cs1QhvXDo8BJM6";
	 
		// 支付寶公鑰
	    public static String alipay_public_key = "SuFoWXQxhVJhPW0Gp7WKtBiPSkVovQoOwY/bFKfyDJSY92oS1mNWjoIzr7vS52fc374rm9fVbZPFau5xu5q6hNmOCekM/W9SEKPyxk4lAB+hQYcgiSjGANBo+v3y55OHQIzrylQIDAQAB";
	 
	    /*
	     * 服務器異步通知頁面路徑  需http://格式的完整路徑,不能加?id=123這類自定義參數
	     * 必須外網可以正常訪問
		 * 一般就是支付成功時,修改數據庫之類的操作
		 */
		public static String notify_url = "http://localhost:8080/project/apli/update";
		
		/*
		 * 頁面跳轉同步通知頁面路徑 需http://格式的完整路徑,不能加?id=123這類自定義參數
		 * 通知頁面一般用來,支付成功後,需要跳轉什麼頁面之類的處理
		 */
	    public static String return_url = "http://localhost:8080/project/apli/return";
	    
		// 簽名方式,注意這裏,如果步驟設置的是RSA則用RSA
		public static String sign_type = "RSA2";
	 
		// 字符編碼格式
		public static String charset = "utf-8";
	 
		// 支付寶網關
		public static String gatewayUrl = "https://openapi.alipaydev.com/gateway.do";
	 
		// 支付寶網關
		public static String log_path = "C:\\";
	}
  1. ApliConfigController.java類。 具體操作的實現
@RestController
@RequestMapping("/apli")
public class ApliConfigController {
	
	@RequestMapping("/pay")		//踩坑記錄->這裏不可直接return result; 必須要response.getWriter().print(result);或者以map鍵值對方法返回
	public String toPay(String ono,double price,HttpServletRequest request,HttpServletResponse resp,HttpSession session) throws AlipayApiException, IOException, ServletException {

		//獲得初始化的AlipayClient
		AlipayClient alipayClient = new DefaultAlipayClient(ApplicationConfig.gatewayUrl, ApplicationConfig.app_id, ApplicationConfig.merchant_private_key, "json", ApplicationConfig.charset, ApplicationConfig.alipay_public_key, ApplicationConfig.sign_type);

		//設置請求參數
		AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest();
		alipayRequest.setReturnUrl(ApplicationConfig.return_url);
		alipayRequest.setNotifyUrl(ApplicationConfig.notify_url);

		alipayRequest.setBizContent("{\"out_trade_no\":\""+ono +"\"," 
				+ "\"total_amount\":\""+ price +"\"," 
				+ "\"subject\":\""+ " Y呀網站支付 " +"\"," 
				+ "\"product_code\":\"FAST_INSTANT_TRADE_PAY\"}");
		String result = alipayClient.pageExecute(alipayRequest).getBody();
		resp.setContentType("text/html; charset=utf-8");
		resp.getWriter().print(result);
		return null;
	}

	@RequestMapping("/return")
    public void toIndex(HttpServletResponse resp,HttpSession session) throws IOException{
		//取session
		MemberInfo member=(MemberInfo) session.getAttribute("loginUser");
		
		//支付成功跳轉頁面
		PrintWriter out = resp.getWriter();
		out.print("<script>location.href='../front/page/order.html'</script>");
		
		//支付成功後跳轉頁面你的session會清空,如果還需要可以在存一次session
		session.setAttribute("loginUser", member);
    }
}

支付寶沙箱支付的官方文檔

  1. 沙箱支付文檔
    更加深入的學習。
  2. 如若有問題,留言,我們一起探討…
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章