H5頁面調用支付寶支付功能


H5頁面調用支付寶支付功能

粘貼核心代碼

 

使用SpringMVC  將 返回的htm代碼 輸出到頁面 

本文中測 AppId  APP_PRIVATE_KEY  ALIPAY_PUBLIC_KEY 替換成自己的 信息

    

 

 

/**
 * 
 */
package cn.superjava.alipay;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import com.alipay.api.AlipayApiException;
import com.alipay.api.AlipayClient;
import com.alipay.api.DefaultAlipayClient;
import com.alipay.api.request.AlipayOpenPublicTemplateMessageIndustryModifyRequest;
import com.alipay.api.request.AlipayTradeWapPayRequest;
import com.alipay.api.response.AlipayOpenPublicTemplateMessageIndustryModifyResponse;

/**
 * @description: H5 支付寶支付
 * @author SuperJava
 * @createTime 2017年3月20日
 * @version 1.0
 */

@Controller
public class AliPayController {
	
	/**
	 * 支付寶開發文檔
	 * https://b.alipay.com/signing/productDetail.htm?productId=I1011000290000001001
	 * {---如果使用的老接口--}
	 * {---https://doc.open.alipay.com/doc2/detail?treeId=60&articleId=103564&docType=1--}
	 * 
	 * 支付寶 服務端SDK下載 (支持java .net php)
	 * https://doc.open.alipay.com/doc2/detail?treeId=54&articleId=103419&docType=1
	 * 
	 * 支付寶H5開發  SDK集成
	 * https://doc.open.alipay.com/docs/doc.htm?treeId=203&articleId=105285&docType=1
	 * 
	 * 創建APPID 生成 公鑰 私鑰
	 * 
	 */

	/**
	 * 以下靜態常量 除了(URL) 修改為自己的商戶信息
	 */
	// 支付寶網關(固定)
	public static final String URL = "https://openapi.alipay.com/gateway.do";
	// APPID即創建應用后生成
	public static final String APP_ID = "2016032401238";
	// 開發者應用私鑰,由開發者自己生成
	public static final String APP_PRIVATE_KEY = "MIIEvgIBADANBgkqhkiG9w0BeMWy5FZHMcGysEK5mqWavCqs9qOvKDs/2CxB2o9q8INsih6yldNwsWjC2Y9akfOa3CcJGJ5TLcELEb4rb3tbwayAXM9yx9uRbAbcr2TSNPO2deU6ttvNeMrGZpXItCnihoxTDlu/QUCYQu9eCRiw4OBDUQ87LEIR3bwKIdfWLMsgcDvlSiwdUinG1ZckoBbT1MJ64KfuchOrWLc98QUXpKYJ+udyvDUykEzMU1RG5JbsjwFbYpMH2aHP1tqeALejLWYjxZ0ceff0wBYJ9nvPOVkLkyA74SRfUmlESMaQkymrU6F/DlwSPH05HFRQKDJx1wYigFAgMBAAECggEBAKyo/UKFHzqOxlL0ESbZvfRLCQAzhiqeOuj4x1xl/5XoxMG8BHgAa36glwG3Czyp1aYmGOBqQNfvbTxbMU8dBRX+7Y9ZdON2W20xclDTHgL24YT2MVYZ7EzDedjCtVRDH7Dj4jkoM1vmN6Ly1WTJ+jhqk/Tu4JVPRCef/xIwgnnmUYX6Dx2UjSYNAiEPltiOVKCyShk1Bu0fuuphq+gKnw7Tm1VT2srcjpLcc89Y1ikJvw+6ybH7aA7T4lCaGUgBnkmdSgwqunKBNlSNHW3cCdgJL6no2kWN6OxGhGfj7taC+OcbGtfdrrAWBV92z1dMlvko3ZEl2SWTgLrK3nDLz2ECgYEA+tk1fvy3vPDoHqM15pVWR0GWwoHveTF0/hN+kb9o7X+xkQwbkhZ+2HKLKQyjQzB7b3FRsG33blGjUWXVMdeQa4enBAhHm9uzTmgMmLBcoWJ9AiuHuXQIaPR4+N15ZSK58qHBycT7kc53/2mo3BZj3C8NwU2WvKwYZQpWYVC0Nx0CgYEAs/OBwR/D3exgQb+Qds4iji3mMBL1Sy0nIaCYUocO8mrm06Ot9b/inCFnG6eihhieIuCQo2sYXba7HzmMyxQvTokXwGuaDRHUtIFNdxA/M+yj0Z6mTrKqvmLVC2V6ImVsl0nF4k+VQ+kVBOVuVR2sCZ3eVWu1DeQgh9NEuncvmAkCgYEA70cWImWKFm5t3BuvJJ46yIml9y/ecGpewKVzzC8bNcDibgtwmS9gG7NXTvbBHSw38hvT4kljBhZVhSVv8bVAC3JAPDZxqBgvt5DEwzkngsHhoJpJQvuNsh/Q7QLF81Tmrqzhn0eI+JJMIJR3AElTRAqWQldye9JlCqyLrRRAc3kCgYAUttsg1/879JG//8UpZ+EibLYqooQJ+1Cd1layaUmXLicUBatotoXnYxDzZgCXXw4VBbSgmxta7kXr+jvyxIgNikppo/k/t+W8QYYhRoV//KV+47xRIs/0ynurrCq6+uHdKGjW/EI6ZwI8ZgylT50WHk4RlyxoRPJZsEAhFscrwQKBgHpZLw5pYg8AeG/P5gqZraMoEb75ULiSuolT3DLX+pzJf2bne40SAHTaxhAVG0pBz9b45sOXJz9+eLi6UzyDHWZCL+cCMSC7TA3Q4AxHy+1LNzh6abLk1QjC3yLLZFyUAqEvTHpnizikD+5viC7LdGT96jVCI4H0ywvk2USd46Mw";
	// 支付寶公鑰,由支付寶生成
	public static final String ALIPAY_PUBLIC_KEY = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQuRWRzHBsrBCuZqlmrwqrPajryg7P9gsQdqPavCDbIoespXTcLFowtmPWpHzmtwnCRieUy3BCxG+K297W8GsgFzPcsfbkWwG3K9k0jTztnXlOrbbzXjKxmaVyLQp4oaMUw5bv0FAmELvXgkYsODgQ1EPOyxCEd28CiHX1izLIHA75UosHVIpxtWXJKAW09TCeuCn7nITq1i3PfEFF6SmCfrncrw1MpBMzFNURuSW7I8BW2KTB9mhz9bangC3oy1mI8WdHHn39MAWCfZ7zzlZC5MgO+EkX1JpREjGkJMpq1Ohfw5cEjx9ORxUUCgycdcGIoBQIDAQAB";
	
	// 請求編碼
	public static final String CHARSET = "UTF-8";


	/**
	 * @description: 調用支付寶接口 使用SDK快速接入
	 * @author SuperJava
	 * @createTime 2017年3月20日
	 * @version 1.0
	 * @return
	 */
	@RequestMapping("AliPay")
	public String AliPay(HttpServletRequest req) throws Exception{
		/**
		 * 實例化客戶端 在使用SDK調用具體API前,進行初始化
		 */
		AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", APP_ID,
				APP_PRIVATE_KEY, "json", CHARSET, ALIPAY_PUBLIC_KEY, "RSA2");
		/**
		 * 實例化具體API對應的request類,類名稱和接口名稱對應,當前調用接口名稱:
		 * alipay.open.public.template.message.industry.modify
		 * alipayClient只需要初始化一次,后續調用不同的API都可以使用同一個alipayClient對象。
		 */
		AlipayTradeWapPayRequest alipayRequest = new AlipayTradeWapPayRequest();
		
		//在公共參數中設置回跳和通知地址
		alipayRequest.setReturnUrl("http://www.baidu.com.com");
	    alipayRequest.setNotifyUrl("http://www.baidu.com.com/notify");
		
		/**
		 * SDK已經封裝掉了公共參數,這里只需要傳入業務參數
		 * 此次只是參數展示,未進行字符串轉義,實際情況下請轉義  (此處模擬請求參數,生產環境需要自己嵌套訂單信息)
		 */
	    alipayRequest.setBizContent("  {" +
				"    \"primary_industry_name\":\"購買理財服務\"," +
				"    \"primary_industry_code\":\"10001/20102\"," +
				"    \"secondary_industry_code\":\"10001/20102\"," +
				"    \"secondary_industry_name\":\"IT科技/IT軟件與服務\"" +
				" }");
		
		/**
		 * 手機網站支付alipay.trade.wap.pay:
		 * 對於頁面跳轉類API,SDK不會也無法像系統調用類API一樣自動請求支付寶並獲得結果,
		 * 而是在接受request請求對象后,為開發者生成前台頁面請求需要的完整form表單的html(包含自動提交腳本),
		 * 商戶直接將這個表單的String打印到頁面即可  
		 */
	     String form = alipayClient.pageExecute(alipayRequest).getBody(); //調用SDK生成表單
	     req.setAttribute("aliPayForm", form);
		 return "itemShow";
	}

}

 

  代碼中的 ReturnUrl 和 NotifyUrl

   ReturnUrl 

  支付寶支付成功頁面的跳轉

 NotifyUrl

  支付寶支付成功 通知的商戶接口

    注意事項:

  我看到有的開發人員 將處理業務功能放在 ReturnUrl 做同步處理  那樣 NotifyUrl 不需要傳 也是可以的

    

  簡單的Demo 記錄一下

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM