日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

支付宝PC端二维码支付(沙箱环境)

發布時間:2024/3/26 编程问答 53 豆豆
生活随笔 收集整理的這篇文章主要介紹了 支付宝PC端二维码支付(沙箱环境) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一,準備工作

jar

獲取以下內容:

1,APPID
2,支付寶網關
3,公鑰
4,私鑰
5,支付寶錢包賬號密碼

支付寶開放平臺:

https://openhome.alipay.com/platform/developerIndex.htm

在這里根據規則設置私鑰和公鑰

下面有一個錢包下載二維碼,下載沙箱錢包后,查看賬號密碼并登錄買家賬號

二,配置文件

將以上信息填寫在下面配置

package com.ticket.config;import java.io.FileWriter; import java.io.IOException;/* **類名:AlipayConfig*功能:基礎配置類*詳細:設置帳戶有關信息及返回路徑*修改日期:2017-04-05*說明:*以下代碼只是為了方便商戶測試而提供的樣例代碼,商戶可以根據自己網站的需要,按照技術文檔編寫,并非一定要使用該代碼。*該代碼僅供學習和研究支付寶接口使用,只是提供一個參考。*/public class AlipayConfig {//↓↓↓↓↓↓↓↓↓↓請在這里配置您的基本信息↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓// 應用ID,您的APPID,收款賬號既是您的APPID對應支付寶賬號public static String app_id = "";// 商戶私鑰,您的PKCS8格式RSA2私鑰public static String merchant_private_key = "";// 支付寶公鑰,查看地址:https://openhome.alipay.com/platform/keyManage.htm 對應APPID下的支付寶公鑰。public static String alipay_public_key = "";// 服務器異步通知頁面路徑 需http://格式的完整路徑,不能加?id=123這類自定義參數,必須外網可以正常訪問//這里地址為,支付成功之后跳轉的地址,異步地址//public static String notify_url = "";// 頁面跳轉同步通知頁面路徑 需http://格式的完整路徑,不能加?id=123這類自定義參數,必須外網可以正常訪問//這里地址為,支付成功之后跳轉的地址,同步public static String return_url = "http://localhost:8080/ticketsystem/alipayReturnNoticebill";// 簽名方式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:\\";//↑↑↑↑↑↑↑↑↑↑請在這里配置您的基本信息↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑/** * 寫日志,方便測試(看網站需求,也可以改成把記錄存入數據庫)* @param sWord 要寫入日志里的文本內容*/public static void logResult(String sWord) {FileWriter writer = null;try {writer = new FileWriter(log_path + "alipay_log_" + System.currentTimeMillis()+".txt");writer.write(sWord);} catch (Exception e) {e.printStackTrace();} finally {if (writer != null) {try {writer.close();} catch (IOException e) {e.printStackTrace();}}}} }

三,提交訂單后,支付

前端提交ajax提交

@RequestMapping(value = "/applybill", produces = "text/html; charset=UTF-8",method=RequestMethod.POST)@ResponseBodypublic String goAlipay(Bill bill, HttpServletRequest request, HttpServletRequest response) throws Exception {HttpSession session = request.getSession();Admin user = (Admin) session.getAttribute("user");Gson gson = new Gson();//訂單保存//省略業務代碼//商戶訂單號,商戶網站訂單系統中唯一訂單號,必填String out_trade_no =CommonUtil.ordernum(); //獲得初始化的AlipayClientAlipayClient 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 total_amount = String.valueOf(bill.getTicketnum()*bill.getPrice());//訂單名稱,必填String subject ="用戶"+user.getAccount()+"影票訂單";//商品描述,可空String body = "用戶訂購商品個數:" + bill.getTicketnum();// 該筆訂單允許的最晚付款時間,逾期將關閉交易。取值范圍:1m~15d。m-分鐘,h-小時,d-天,1c-當天(1c-當天的情況下,無論交易何時創建,都在0點關閉)。 該參數數值不接受小數點, 如 1.5h,可轉換為 90m。String timeout_express = "5m";alipayRequest.setBizContent("{\"out_trade_no\":\""+ out_trade_no +"\","+ "\"total_amount\":\""+ total_amount +"\","+ "\"subject\":\""+ subject +"\","+ "\"body\":\""+ body +"\","+ "\"timeout_express\":\""+ timeout_express +"\","+ "\"product_code\":\"FAST_INSTANT_TRADE_PAY\"}");//請求String result = alipayClient.pageExecute(alipayRequest).getBody();return result;}

上面ajax請求之后,會返回result,我打印發現時一段html代碼,我不處理它不跳轉,不知道為啥,我的處理方式:

請求之后,會進入支付頁面

使用沙箱錢包付款,
付款成功后,會進入你配置的異步或者同步方法。

示例:異步方法

/**** @Title: AlipayController.java* @Package com.sihai.controller* @Description: 支付寶異步 通知頁面* Copyright: Copyright (c) 2017* Company:FURUIBOKE.SCIENCE.AND.TECHNOLOGY** @author sihai* @date 2018年11月23日 下午8:51:13* @version V1.0*//*@RequestMapping(value = "/alipayNotifyNotice")@ResponseBodypublic String alipayNotifyNotice(HttpServletRequest request, HttpServletRequest response) throws Exception {System.out.println("支付成功11111111111");//獲取支付寶POST過來反饋信息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驗證簽名//——請在這里編寫您的程序(以下代碼僅作參考)——實際驗證過程建議商戶務必添加以下校驗:1、需要驗證該通知數據中的out_trade_no是否為商戶系統中創建的訂單號,2、判斷total_amount是否確實為該訂單的實際金額(即商戶訂單創建時的金額),3、校驗通知中的seller_id(或者seller_email) 是否為out_trade_no這筆單據的對應的操作方(有的時候,一個商戶可能有多個seller_id/seller_email)4、驗證app_id是否為該商戶本身。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 trade_status = new String(request.getParameter("trade_status").getBytes("ISO-8859-1"),"UTF-8");//付款金額String total_amount = new String(request.getParameter("total_amount").getBytes("ISO-8859-1"),"UTF-8");if(trade_status.equals("TRADE_FINISHED")){//判斷該筆訂單是否在商戶網站中已經做過處理//如果沒有做過處理,根據訂單號(out_trade_no)在商戶網站的訂單系統中查到該筆訂單的詳細,并執行商戶的業務程序//如果有做過處理,不執行商戶的業務程序//注意: 尚自習的訂單沒有退款功能, 這個條件判斷是進不來的, 所以此處不必寫代碼//退款日期超過可退款期限后(如三個月可退款),支付寶系統發送該交易狀態通知}else if (trade_status.equals("TRADE_SUCCESS")){//判斷該筆訂單是否在商戶網站中已經做過處理//如果沒有做過處理,根據訂單號(out_trade_no)在商戶網站的訂單系統中查到該筆訂單的詳細,并執行商戶的業務程序//如果有做過處理,不執行商戶的業務程序//注意://付款完成后,支付寶系統發送該交易狀態通知// 修改叮當狀態,改為 支付成功,已付款; 同時新增支付流水}System.out.println("111支付成功");}else {//驗證失敗}return "success";}*/

總結

以上是生活随笔為你收集整理的支付宝PC端二维码支付(沙箱环境)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。