技術交流QQ群:422167709 想學習的朋友可以進入,各路IT大牛幫忙解決問題
1.我們需要在支付寶商戶平台配置好,取到四個參數如下(這是支付寶官方配置地址):https://www.cnblogs.com/fuzongle/p/10217144.html
- 合作身份者ID:12345564544
- 支付寶賬號:123@qq.com
- 商戶的私鑰 :CSqGSIb3DQEBAQUAA4GNADCBiQKBgQCzzICE
- 支付寶的公鑰:MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCzzICE
2.我們在項目中配置工具類上面四個號碼,寫到工具類中
1 package cn.com.hanyu365.com.expand.alipay.config; 2 3 /* * 4 *類名:AlipayConfig 5 *功能:基礎配置類 6 *詳細:設置帳戶有關信息及返回路徑 7 *版本:3.3 8 *日期:2012-08-10 9 *說明: 10 *以下代碼只是為了方便商戶測試而提供的樣例代碼,商戶可以根據自己網站的需要,按照技術文檔編寫,並非一定要使用該代碼。 11 *該代碼僅供學習和研究支付寶接口使用,只是提供一個參考。 12 13 *提示:如何獲取安全校驗碼和合作身份者ID 14 *1.用您的簽約支付寶賬號登錄支付寶網站(www.alipay.com) 15 *2.點擊“商家服務”(https://b.alipay.com/order/myOrder.htm) 16 *3.點擊“查詢合作者身份(PID)”、“查詢安全校驗碼(Key)” 17 18 *安全校驗碼查看時,輸入支付密碼后,頁面呈灰色的現象,怎么辦? 19 *解決方法: 20 *1、檢查瀏覽器配置,不讓瀏覽器做彈框屏蔽設置 21 *2、更換瀏覽器或電腦,重新登錄查詢。 22 */ 23 24 public class AlipayConfig2 { 25 //↓↓↓↓↓↓↓↓↓↓請在這里配置您的基本信息↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 26 // 合作身份者ID,以2088開頭由16位純數字組成的字符串 27 public static String partner = ""; 28 //支付寶賬號 29 public static String seller_id = ""; 30 // 商戶的私鑰 存在本地 不需要配置 rsa_private_key_pkcs8.pem 31 public static String private_key = ""; 32 // 支付寶的公鑰,無需修改該值 查看支付寶公鑰 33 public static String ali_public_key = ""; 34 //↑↑↑↑↑↑↑↑↑↑請在這里配置您的基本信息↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ 35 // 調試用,創建TXT日志文件夾路徑 36 public static String log_path = "D:\\"; 37 // 字符編碼格式 目前支持 gbk 或 utf-8 38 public static String input_charset = "utf-8"; 39 // 簽名方式 不需修改 40 public static String sign_type = "RSA"; 41 42 }
3.配置文件寫好了,就直接可以在項目中調用支付寶了工具類地址下載:www.fuzongle.com 下載完成后直接導入配置上面的四個參數即可使用。
4.下面是直接使用項目代碼調用支付寶代碼 (這個就是可以調用支付了非常容易了 關鍵工具類 我已經把工具類寫好了 你們直接調用即可)
1 /** 2 *開通vip----支付寶支付 3 * @return 4 * @throws Exception 5 */ 6 @RequestMapping("/openVipPay") 7 public Object balanceWechat(@RequestParam(value= "Cn", required=true, defaultValue="0" )String Cn,Integer userId,HttpServletRequest request, HttpServletResponse response) throws Exception { 8 Map<String, Object> hashMap = new HashMap<String, Object>(); 9 //1.傳入支付的金額 10 Double money=0.01; 11 //2.隨機生成一個訂單號 12 String ORDER_NO = "JYJY"+new SimpleDateFormat("yy").format(new Date()) + String.valueOf(System.currentTimeMillis()/1000).substring(7,10)+String.valueOf((int) ((Math.random() * 9 + 1) * 10000)); 13 //獲取絕對路徑 14 String path = request.getContextPath(); 15 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; //String.valueOf(findByid.getTotal_price()) 16 //重點就這個調用了 工具類:傳入金額 名字 訂單號 回調地址 17 String sign = orderPay.payInfo("名字", "描述","金額", “訂單號”,basePath+"app/appOpenVip/returnUrl.do"); 18 hashMap.put("data",sign); 19 return new BaseJsonRep<Object>(hashMap); 20 21 22 } 23 24 /** 25 * 支付寶回掉數據 26 * @throws IOException 27 */ 28 @RequestMapping(value = "/returnUrl" ) 29 public BaseJsonRep<Object> returnUrl(@RequestParam(value= "Cn", required=true, defaultValue="0" )String Cn,String callback, HttpServletRequest request,HttpServletResponse response) throws IOException{ 30 Double money=0.1; 31 Map<String, String> param = new HashMap<String, String>(); 32 Map<String, Object> hashMap = new HashMap<String, Object>(); 33 Map<String,String[]> requestParams = request.getParameterMap(); 34 param = new AlipayUtil().getParam(requestParams); 35 //商戶訂單號 36 String ORDER_NO = new String(request.getParameter("out_trade_no").getBytes("ISO-8859-1"),"UTF-8"); 37 //支付寶交易號 流水號 38 String TRADENUM = new String(request.getParameter("trade_no").getBytes("ISO-8859-1"),"UTF-8"); 39 //交易狀態 40 String trade_status = new String(request.getParameter("trade_status").getBytes("ISO-8859-1"),"UTF-8"); 41 //支付寶實際交易金額 42 String PAYAMOUNT = new String(request.getParameter("total_fee").getBytes("ISO-8859-1"),"UTF-8"); 43 boolean verify_result = AlipayNotify.verify(param); 44 if(verify_result){ 45 if(trade_status.equals("TRADE_FINISHED") || trade_status.equals("TRADE_SUCCESS")){ 46 // 我們直接查詢訂單號 47 //ORDER_NO 支付成功了 可以回顯訂單號,去查詢數據庫修改支付成功,上面的代碼固定即可。 48 } 49 } 50 return null; 51 } 52