目錄
使用須知:
1:maven:
2:編寫工具類 AlipayUtil
3:調用代碼:
使用須知:
支付寶的支付較為成熟,開發較為簡單,
需先在支付寶中開通支付寶H5支付,開通細節暫不描述。。
1:maven:
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1.1</version>
</dependency>
<dependency>
<groupId>com.alipay</groupId>
<artifactId>sdk-java</artifactId>
<version>20170615110434</version>
</dependency>
sdk-java的jar需先下載下傳本地後,再用maven的方式導入
手動将本地jar導入到maven庫:https://blog.csdn.net/best_luxi/article/details/82349768
jar 下載下傳位址:https://download.csdn.net/download/qq_41712834/11693619
2:編寫工具類 AlipayUtil
import com.alipay.api.AlipayClient;
import com.alipay.api.DefaultAlipayClient;
import com.alipay.api.domain.AlipayTradeFastpayRefundQueryModel;
import com.alipay.api.domain.AlipayTradeQueryModel;
import com.alipay.api.domain.AlipayTradeRefundModel;
import com.alipay.api.domain.AlipayTradeWapPayModel;
import com.alipay.api.request.AlipayTradeFastpayRefundQueryRequest;
import com.alipay.api.request.AlipayTradeQueryRequest;
import com.alipay.api.request.AlipayTradeRefundRequest;
import com.alipay.api.request.AlipayTradeWapPayRequest;
import com.alipay.api.response.AlipayTradeFastpayRefundQueryResponse;
import com.alipay.api.response.AlipayTradeQueryResponse;
import com.alipay.api.response.AlipayTradeRefundResponse;
import com.alipay.api.response.AlipayTradeWapPayResponse;
import java.util.Random;
public class AlipayUtil {
// 商戶appid
private static String APPID = "201903156355555";
// 私鑰 pkcs8格式的
private static String RSA_PRIVATE_KEY = "MIIEuwIBADANBgkqhkiG9w0BAQEFAASCBKUwggShAgEAAoIBAQDBPf7T9rypQoY9ce7CJmr5B4ATWNPXIySjSRp6WJAh6gr5ZhGj3Vu0FB3IbYMosL6bM7lMe/rHP9GYYU66kRRG6omT2ZjQFH66BAB9w0XqW5g0zL41JjsPup38I4kYoFJqADmVJplOx0InW6ex1D/rpQzycjxQDZYcNstnH1EVOn3OdO/vGMLox/Ta5Ge/TvybShot1xXSWeVbDlrXDaXnEIRaTDs+eBQzN4VnpIQ0Nz89zAqTSQ+aGK5V9YU8XmaIPqI51mv43p4jkPzdpG7L9fwgWw9SmrTuVDb1cPHuWzWCs/uK4PIwYJaIGdHCOe7rRMAkuuueXFIzWW8TWn8rAgMBAAECggEAFiWbygEyOBfWuL4RBhFPG0FfzVfV14dAkLI1JaZ2xlxDa7fl96jL9MSFcU4TxRsUjUcNSpW+9Qz8YYFte3ZbI5GHuPksSVS//WOuBrvVjHl45Tw95GuAQ1o49we/k6H0MA/ciZqF4YB2tXoMqxXPSZt9819iSC52cL9a6nOtYEhDqxmzZu2jcMcdId0wPTWHSNo6+orgwhOLBytmhEuiN9p4iKgU9KwdOrWLFnmFwezObEgqQOOTAEZsQfTrgrIeAeGoJXw3dH4bICGxqxk8pnc7raoeHke+LzIi0JP8s4ymLl3u6+C8+k0f8TrV78rrXuTNMm1AJNyBVUDLtWeG6QKBgQDy0+pyFFHEPr3+nkdAd54ZBGdiLH+Iwn0J2TDAsPexmUKYC8IDZihD1NkdTsgPWv4/8AxieAZaAvQnLrTXxm+vxQP3k/hH7ehiBGGWG+MPJxzJm/8Gn5H4acL7GFUE8yo9kdnQKK5QBYxRfzRoAlZCNOL4Z5n3tGTZv7c+5/u9VQKBgQDLuX9USRqN+HIfphdFQoSqhVlnGWAp8vvepxqn9oAShO2BUJkXeWMkfgo6SdoqOY6aT87FfAdxMLUxjp8SkKHmcfxlNx5bGOq6Sk6Gu+4q7VkBRSRQq3jsRUw29yfPr3I2leE/vN7/c7reiLdcXhM3IZovYOJJxByu0qdNTclKfwKBgQCLVJUdSBNyqx2RT3hKwVfxutknN6kl65KbaAfVSLWXLf1MCNMV6DQKV8MMUfvw86EXRsGUbpIWa8N0CBS0CqRjEoSoNjsr6pKAS0tDOlUaiLK36851GnJDO0wpj1iZMn12Po3gJrd+KvDMglSrqUudSYNCTQ/HVbbYSmz2p12G0QJ/CYyoa0sB86Wxs8oVTSnRDi0yA6Ms3sqFA+rRVQ448qVIfMdKZc9K1msSD6lmkJQiGxmil584uhWOaMRGsJgW/rZZHmV3Bs4kMpdJFwe4Ikr94RFcomtnP6v/5pOvSgzvTZ+470PrMA48tDG0ZqACRpNMpuvjr5GBxrAZJ4Z96QKBgC4S24/NT7t5hCiEhjBc5k9/GxowV0edhcFZ0bX77At409478+i9igqXXfCcNYF2hHt/u4IMTEq4mzK+PqRixT8xvUISih5viWd+za4x9wsQ9UZ3S0Oru5MA0wJHN5nuI6HeSro7vwFw5w2MQtOuTj2LHU1KohgJsNxnzzSJg3pf";
// 應用公鑰
public static String ALIPAY_PUBLIC_KEY = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwT3+0/a8qUKGPXHuwiZq+QeAE1jT1yMko0kaeliQIeoK+WYRo91btBQdyG2DKLC+mzO5THv6xz/RmGFOupEURuqJk9mY0BR+ugQAfcNF6luYNMy+NSY7D7qd/COJGKBSagA5lSaZTsdCJ1unsdQ/66UM8nI8UA2WHDbLZx9RFTp9znTv7xjC6Mf02uRnv078m0oaLdcV0lnlWw5a1w2l5xCEWkw7PngUMzeFZ6SENDc/PcwKk0kPmhiuVfWFPF5miD6iOdZr+N6eI5D83aRuy/X8IFsPUpq07lQ29XDx7ls1grP7iuDyMGCWiBnRwjnu60TAJLrrnlxSM1lvE1p/KwIDAQAB";
// 支付寶公鑰
public static String ALIPAY_KEY = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAlwRHYOJc8Oa55FfpgJmxmdfuuNrf0pnauJm6mG9AS2rujOlwciQqvSnsYrtXe0Mcq9zhAjRUTNzjKEQja457khUzPnhkXwTkbSX7jDvJMKpTzt2Ah8cR/YR9txD4QlG8OLZc9qLjTQLuw4Pfyuh7fx0GfVQWPfWMMQCmZjkLJITqmRyYeVpa3soFGP/+QEdRvItsgaOXLNKr6e3+cwECxu4xMB8VGBY2F7pFWynzGZRYkqdLrjikKv6CVtMvhIHA3VHhrS5+nm9hLg6inktsX0edps3hABkgH+S4in6Xi1i2M4BfM2VUpDWdrM+JSgmL6QhjhyzKyXjERe95Fcan1wIDAQAB";
// 簽名方式:RSA2
public static String SIGNTYPE = "RSA2";
// 請求網關位址
private static String URL = "https://openapi.alipay.com/gateway.do";
// 編碼
public static String CHARSET = "UTF-8";
// 傳回格式
private static String FORMAT = "json";
// 伺服器異步通知頁面路徑 需http://或者https://格式的完整路徑,不能加?id=123這類自定義參數,必須外網可以正常通路
// 注意:異步通知位址必須是外網能通路的
private static String notify_url = "http://cs:8088/cs/cs/OrderNotifyWeb.active";
// 頁面跳轉同步通知頁面路徑 需http://或者https://格式的完整路徑,不能加?id=123這類自定義參數, 商戶可以自定義同步跳轉位址
private static String return_url = "http://cs:8088/cs/cs/OrderReturnWeb.active";
// 公共請求參數,SDK 公共請求類,包含公共請求參數,以及封裝了簽名與驗簽,開發者無需關注簽名與驗簽
private static AlipayClient client = new DefaultAlipayClient(URL, APPID, RSA_PRIVATE_KEY, FORMAT, CHARSET,
ALIPAY_PUBLIC_KEY, SIGNTYPE);
/**
* alipay.trade.query(統一收單線下交易查詢)
* 詳見支付寶支付API:https://docs.open.alipay.com/api_1/alipay.trade.query
*
* @param out_trade_no 訂單号
* @return json字元串
*/
public static String OrderQuery(String out_trade_no) {
// 建立API對應的request類
AlipayTradeQueryRequest request = new AlipayTradeQueryRequest();
AlipayTradeQueryModel bizModel = new AlipayTradeQueryModel();
bizModel.setOutTradeNo(out_trade_no);
request.setBizModel(bizModel);
try {
// 通過alipayClient調用API,獲得對應的response類
AlipayTradeQueryResponse response = client.execute(request);
return response.getBody();
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
/**
* alipay.trade.refund(統一收單交易退款接口)
* 詳見支付寶支付API:https://docs.open.alipay.com/api_1/alipay.trade.refund
*
* @param out_trade_no 訂單号
* @param refund_amount 退款金額(小于等于訂單總金額)
* @return json字元串
*/
public static String OrderRefund(String out_trade_no, String refund_amount) {
// 建立API對應的request類
AlipayTradeRefundRequest request = new AlipayTradeRefundRequest();
AlipayTradeRefundModel bizModel = new AlipayTradeRefundModel();
bizModel.setOutTradeNo(out_trade_no);
bizModel.setRefundAmount(refund_amount);
request.setBizModel(bizModel);
try {
// 通過alipayClient調用API,獲得對應的response類
AlipayTradeRefundResponse response = client.execute(request);
return response.getBody();
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
/**
* alipay.trade.pay(統一收單交易支付接口)
* 詳見支付寶支付API:https://docs.open.alipay.com/api_1/alipay.trade.pay
*
* @param out_trade_no 商戶訂單号
* @param total_amount 支付總金額
* @param subject 商品名稱
* @param body 商品描述
* @return json字元串
*/
public static String OrderPay(String out_trade_no, String total_amount, String subject, String body) {
// 商品描述,可空,最大長度128
if (body.length() > 128) {
body = body.substring(0, 128);
}
// 建立API對應的request類
AlipayTradeWapPayRequest request = new AlipayTradeWapPayRequest();
// 封裝請求支付資訊
AlipayTradeWapPayModel model = new AlipayTradeWapPayModel();
// 商戶訂單号,商戶網站訂單系統中唯一訂單号,必填
model.setOutTradeNo(out_trade_no);
// 訂單名稱,必填
model.setSubject(subject);
// 付款金額,必填
model.setTotalAmount(total_amount);
// 對交易或商品的描述,最大長度128
model.setBody(body);
// 逾時時間 可空
model.setTimeoutExpress("2m");
// 銷售産品碼 必填
model.setProductCode("QUICK_WAP_PAY");
request.setBizModel(model);
// 設定異步通知位址
request.setNotifyUrl(notify_url);
// 設定同步位址
request.setReturnUrl(return_url);
try {
// 通過alipayClient調用API,獲得對應的response類
AlipayTradeWapPayResponse response = client.pageExecute(request);
return response.getBody();
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
/**
* alipay.trade.fastpay.refund.query(統一收單交易退款查詢)
* 詳見支付寶支付API:https://docs.open.alipay.com/api_1/alipay.trade.fastpay.refund.query
*
* @param out_trade_no 訂單号
* @return json字元串
*/
public static String RefundQuery(String out_trade_no) {
// 建立API對應的request類
AlipayTradeFastpayRefundQueryRequest request = new AlipayTradeFastpayRefundQueryRequest();
AlipayTradeFastpayRefundQueryModel bizModel = new AlipayTradeFastpayRefundQueryModel();
bizModel.setOutTradeNo(out_trade_no);
bizModel.setOutRequestNo(out_trade_no);
request.setBizModel(bizModel);
try {
// 通過alipayClient調用API,獲得對應的response類
AlipayTradeFastpayRefundQueryResponse response = client.execute(request);
return response.getBody();
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
/**
* alipay.fund.trans.toaccount.transfer(單筆轉賬到支付寶賬戶接口)
* 詳見支付寶支付API:https://docs.open.alipay.com/api_28/alipay.fund.trans.toaccount.transfer
*
* @param alipayAcco
* 收款方賬戶
* @param money
* 轉賬金額
* @return json字元串
*/
// public static String TransAccount(String alipayAcco, String money) {
// AlipayFundTransToaccountTransferRequest request = new AlipayFundTransToaccountTransferRequest();
// // 注意:除了用支付寶接口提供的模型以外還可以用json字元串的方式設定接口參數,以下就是使用的json字元串設定參數的方式
// // AlipayFundTransToaccountTransferModel bizModel=new
// // AlipayFundTransToaccountTransferModel();
// Map<String, Object> parMap = new HashMap<String, Object>();
// // 商戶轉賬唯一訂單号。發起轉賬來源方定義的轉賬單據ID,用于将轉賬回執通知給來源方。
// parMap.put("out_biz_no", OrderId());
// // 收款方賬戶類型。可取值:
// // 1、ALIPAY_USERID:支付寶賬号對應的支付寶唯一使用者号。以2088開頭的16位純數字組成。
// // 2、ALIPAY_LOGONID:支付寶登入号,支援郵箱和手機号格式。
// parMap.put("payee_type", "ALIPAY_LOGONID");
// // 收款方賬戶。與payee_type配合使用。付款方和收款方不能是同一個賬戶。
// parMap.put("payee_account", alipayAcco);
// // 轉賬金額,機關:元。 隻支援2位小數,小數點前最大支援13位,金額必須大于等于0.1元。
// parMap.put("amount", money);
// // 付款方姓名(最長支援100個英文/50個漢字)。顯示在收款方的賬單詳情頁。如果該字段不傳,則預設顯示付款方的支付寶認證姓名或機關名稱。
// // parMap.put("payer_show_name", "付款方姓名");
// // 收款方真實姓名(最長支援100個英文/50個漢字)。 如果本參數不為空,則會校驗該賬戶在支付寶登記的實名是否與收款方真實姓名一緻。
// // parMap.put("payee_real_name", "收款方真實姓名");
// // 轉賬備注(支援200個英文/100個漢字)。
// // 當付款方為企業賬戶,且轉賬金額達到(大于等于)50000元,remark不能為空。收款方可見,會展示在收款使用者的收支詳情中。
// // parMap.put("remark", "轉賬備注");
// // 将參數轉成JSON字元串設定到請求參數的集合中去
// request.setBizContent(JSON.toJSONString(parMap));
// try {
// // 執行方法
// AlipayFundTransToaccountTransferResponse response = client.execute(request);
// return response.getBody();
// } catch (Exception e) {
// e.printStackTrace();
// return null;
// }
// }
/**
* 生成訂單号(日期加6位随機數)
*
* @return
*/
public static String OrderId() {
Random rand = new Random();
return (System.currentTimeMillis()) + "" + (rand.nextInt(900000) + 100000);
}
}
已上代碼隻需要更換 :
商戶appid:申請支付寶h5支付成功後擷取
私鑰 :
應用公鑰
支付寶公鑰
異步通知位址:外網可以通路的連結
同步通知頁面:外網可以通路的連結
3:調用代碼:
package com.vrv.Govern.controller;
import com.alipay.api.internal.util.AlipaySignature;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.vrv.Govern.util.DateUtils;
import com.vrv.Govern.util.PrintWriterUtils;
import com.vrv.Govern.util.ResultEntitylayui;
import com.vrv.Govern.util.gj.AlipayUtil;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
/**
* @Description: ckx
* @Author: Mr.chenkexu
* @Date: 2019.5.27
*/
@Controller
@RequestMapping("/csail")
public class csailcontroller extends HttpServlet {
private static final long serialVersionUID = 1L;
@RequestMapping("/index")
public String index() {
return "cssail/index";
}
@RequestMapping("/pay_result")
public String pay_result() {
return "cs/pay_result";
}
@RequestMapping(value = "payment", produces = "application/json;charset=utf-8")
@ResponseBody
public void listBase_Dataitemdetail(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
Gson gson = new GsonBuilder().serializeNulls().setDateFormat(DateUtils.DateFormat4).create();
ResultEntitylayui mResultEntity = new ResultEntitylayui();
req.setCharacterEncoding(AlipayUtil.CHARSET);
String body = req.getParameter("body");
String subject = req.getParameter("subject");
String money = req.getParameter("money");
subject = new String(subject.getBytes("ISO-8859-1"), AlipayUtil.CHARSET);
String orderPay = AlipayUtil.OrderPay(AlipayUtil.OrderId(), money, subject, body);
//直接将支付寶傳回的完整的表單html輸出到頁面
resp.setContentType("text/html;charset=" + AlipayUtil.CHARSET);
mResultEntity.setData(orderPay);
PrintWriterUtils.printWriter(resp, gson.toJson(mResultEntity));
}
@RequestMapping(value = "OrderNotifyWeb", produces = "application/json;charset=utf-8")
@ResponseBody
public void OrderNotifyWeb(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("支付寶付款異步通知===================================");
PrintWriter pw = null;
try {
pw = resp.getWriter();
//擷取支付寶POST過來回報資訊
Map<String, String> params = new HashMap<String, String>();
Map<String, String[]> requestParams = req.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"), AlipayUtil.CHARSET);
params.put(name, valueStr);
}
//擷取支付寶的通知傳回參數,可參考技術文檔中頁面跳轉同步通知參數清單(以下僅供參考)
//交易狀态
String trade_status = new String(req.getParameter("trade_status").getBytes("ISO-8859-1"), AlipayUtil.CHARSET);
//擷取支付寶的通知傳回參數,可參考技術文檔中頁面跳轉同步通知參數清單(以上僅供參考)//
//計算得出通知驗證結果
//boolean AlipaySignature.rsaCheckV1(Map<String, String> params, String publicKey, String charset, String sign_type)
//支付驗證
boolean verify_result = AlipaySignature.rsaCheckV1(params, AlipayUtil.ALIPAY_KEY, AlipayUtil.CHARSET, AlipayUtil.SIGNTYPE);
if (verify_result) {//驗證成功
//請在這裡加上商戶的業務邏輯程式代碼
//——請根據您的業務邏輯來編寫程式(以下代碼僅作參考)——
if (trade_status.equals("TRADE_FINISHED")) {
//判斷該筆訂單是否在商戶網站中已經做過處理
//如果沒有做過處理,根據訂單号(out_trade_no)在商戶網站的訂單系統中查到該筆訂單的詳細,并執行商戶的業務程式
//請務必判斷請求時的total_fee、seller_id與通知時擷取的total_fee、seller_id為一緻的
//如果有做過處理,不執行商戶的業務程式
//注意:
//如果簽約的是可退款協定,退款日期超過可退款期限後(如三個月可退款),支付寶系統發送該交易狀态通知
//如果沒有簽約可退款協定,那麼付款完成後,支付寶系統發送該交易狀态通知。
} else if (trade_status.equals("TRADE_SUCCESS")) {
//判斷該筆訂單是否在商戶網站中已經做過處理
//如果沒有做過處理,根據訂單号(out_trade_no)在商戶網站的訂單系統中查到該筆訂單的詳細,并執行商戶的業務程式
//請務必判斷請求時的total_fee、seller_id與通知時擷取的total_fee、seller_id為一緻的
//如果有做過處理,不執行商戶的業務程式
//注意:
//如果簽約的是可退款協定,那麼付款完成後,支付寶系統發送該交易狀态通知。
}
//——請根據您的業務邏輯來編寫程式(以上代碼僅作參考)——
System.out.println("驗證成功!");
pw.flush();
pw.println("success");
} else {//驗證失敗
System.out.println("驗證失敗!");
pw.flush();
pw.println("fail");
}
} catch (Exception e) {
e.printStackTrace();
System.out.println("【pw=" + pw + "】驗證失敗,出現異常:" + e.getMessage());
try {
pw = resp.getWriter();
if (pw != null) {
pw.flush();
pw.println("fail");
}
} catch (IOException e1) {
e1.printStackTrace();
}
}
}
@RequestMapping(value = "OrderReturnWeb", produces = "application/json;charset=utf-8")
@ResponseBody
public void OrderReturnWeb(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("支付寶付款同步通知===================================");
try {
//擷取支付寶的通知傳回參數,可參考技術文檔中頁面跳轉同步通知參數清單(以下僅供參考)
//擷取支付寶GET過來回報資訊
Map<String, String> params = new HashMap<String, String>();
Map<String, String[]> requestParams = req.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] + ",";
}
//亂碼解決,這段代碼在出現亂碼時使用。如果mysign和sign不相等也可以使用這段代碼轉化
valueStr = new String(valueStr.getBytes("ISO-8859-1"), AlipayUtil.CHARSET);
params.put(name, valueStr);
}
//計算得出通知驗證結果
//boolean AlipaySignature.rsaCheckV1(Map<String, String> params, String publicKey, String charset, String sign_type)
boolean verify_result = AlipaySignature.rsaCheckV1(params, AlipayUtil.ALIPAY_KEY, AlipayUtil.CHARSET, AlipayUtil.SIGNTYPE);
//設定編碼格式
resp.setCharacterEncoding(AlipayUtil.CHARSET);
if (verify_result) {//驗證成功
//請在這裡加上商戶的業務邏輯程式代碼
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM");
String string = dateFormat.format(new Date());
//該頁面可做頁面美工編輯
resp.sendRedirect("../App_home/index.active#/freeRecode?result=1&ID_number="+params.get("out_trade_no")+"&Lunar_month="+string+"&Money="+params.get("total_amount")+"&CreateDate="+params.get("timestamp"));
//——請根據您的業務邏輯來編寫程式(以上代碼僅作參考)——
} else {
//該頁面可做頁面美工編輯
resp.sendRedirect("../App_home/index.active#/freeRecode?result=0");
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
特别說明:
這兩個工具類是調用及傳回json資料的工具類,在使用時可換為自己使用的方式調用
此工具類為實體類,用于封裝資料,使用時也可換為自己使用的方式,内容示例,
其他的jar包找不到,評論,提供maven(額.主要是懶得的一個一個的找了....)
到這支付寶的java代碼完結;
編寫一個頁面,
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" href="../common/js/layui/css/layui.css" target="_blank" rel="external nofollow" >
</head>
<body>
<div class="formbox">
<div class="layui-form">
<div class="layui-formzi-item ">
<label class="layui-form-label">
商品名稱<span class="start">*</span>
</label>
<div class="layui-input-block">
<input type="text" name="subject" lay-verify="required" autocomplete="off" class="layui-input"
value="cs">
</div>
</div>
<div class="layui-formzi-item ">
<label class="layui-form-label">
商品說明<span class="start">*</span>
</label>
<div class="layui-input-block">
<input type="text" name="body" lay-verify="required" autocomplete="off" class="layui-input" value="cs">
</div>
</div>
<div class="layui-formzi-item ">
<label class="layui-form-label">
支付金額<span class="start">*</span>
</label>
<div class="layui-input-block">
<input type="number" name="money" lay-verify="required" autocomplete="off" class="layui-input"
value="0.01">
</div>
</div>
<div class="btns">
<button class="layui-btn layui-btn-primary" onclick="addandupd()">立即送出</button>
</div>
</div>
</div>
<div id="ail">
</div>
</body>
<script src="../common/js/jquery-3.3.1.min.js"></script>
<script src="../common/js/layui/layui.all.js"></script>
<script>
function addandupd() {
var subject = $("input[name='subject']").val()
var body = $("input[name='body']").val()
var money = $("input[name='money']").val()
$.ajax({
url: '../csail/payment.active',
data: {subject: subject, body: body, money: money},
dataType: 'json',
type: 'post',
success: function (data) {
console.log(data.data);
$("#ail").html(data.data)
}
})
}
</script>
</html>
這個用layui寫jsp頁面,隻是一個form表單的送出,使用自行替換
通路這個頁面:
點選立即送出:
點選繼續支付,或等待繼續跳轉,
然後一步一步 ,手機号 >> 輸密碼等等
最後會有支付成功頁面 ,過幾秒會跳轉到之前綁定的支付成功的跳轉頁面
ps:不清楚的可私聊哦,