SpringBoot下如何實(shí)現(xiàn)支付寶接口的使用
這篇文章主要介紹了SpringBoot下如何實(shí)現(xiàn)支付寶接口的使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
前期準(zhǔn)備:
參考之前寫過的 支付寶接口引入servlet版本
Jar包引入:
<!-- 支付寶 -->
<dependency>
<groupId>net.guerlab</groupId>
<artifactId>sdk-alipay-starter</artifactId>
<version>${alipay.version}</version>
</dependency>
參考版本:1.0.3
關(guān)于application的配置:
sdk: alipay: dev: true //true沙箱 //false正式 sign-type: RSA2 //驗(yàn)簽方式 app-id: //APPID private-key: //私鑰 alipay-public-key: //支付寶公鑰
Controller的處理
支付請求的處理
@RequestMapping(value="/alipay/{orderId}/{money}/{subject}",method=RequestMethod.GET)
public void pay(@PathVariable String orderId,@PathVariable String money,@PathVariable int subject,HttpServletResponse response) throws AlipayApiException, IOException{
JSONObject data=new JSONObject();
//訂單號,必填
data.put("out_trade_no", orderId);
//PC支付 FAST_INSTANT_TRADE_PAY, APP支付 QUICK_MSECURITY_PAY, 移動(dòng)H5支付 QUICK_WAP_PAY
data.put("product_code","FAST_INSTANT_TRADE_PAY");
//付款金額,必填
data.put("total_amount", money);
//訂單描述,必填
if(subject==0)
data.put("subject","充值業(yè)務(wù)");
//該筆訂單允許的最晚付款時(shí)間,逾期將關(guān)閉交易
//data.put("timeout_express","");
//公共校驗(yàn)參數(shù)
//data.put("passback_params","");
//PC支付
AlipayTradePagePayRequest request = new AlipayTradePagePayRequest();
//APP支付
//AlipayTradeAppPayRequest request = new AlipayTradeAppPayRequest();
//移動(dòng)H5支付
//AlipayTradeWapPayRequest request = new AlipayTradeWapPayRequest();
//異步通知地址
request.setNotifyUrl("http://localhost:8765/pay/alipay/notify");
//同步通知地址
request.setReturnUrl("http://localhost:8765/pay/alipay/returnHandler");
//業(yè)務(wù)參數(shù)
request.setBizContent(data.toJSONString());
AlipayTradePagePayResponse alipayResponse=client.pageExecute(request);
response.setContentType("text/html;charset=UTF-8");
response.getWriter().write(alipayResponse.getBody());
}
這里我傳了三個(gè)參數(shù)作為示范,可以視情況自行修改,切記,如果支付方式有所變換,client.?Execute要 @RequestMapping(value="alipay/notify",method=RequestMethod.POST)
@ResponseBody
public JSONObject notify(HttpServletRequest request) throws AlipayApiException, UnsupportedEncodingException {
//獲取支付寶POST過來反饋信息
Map<String, String> maps = 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] + ",";
}
// 亂碼解決,這段代碼在出現(xiàn)亂碼時(shí)使用。
//valueStr = new String(valueStr.getBytes("ISO-8859-1"),"utf-8");
maps.put(name, valueStr);
}
//調(diào)用SDK驗(yàn)證簽名
boolean signVerified = AlipaySignature.rsaCheckV1(maps, "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAr4eu1yGt0mASOzTjIPCaRRkh+3LSr6hJGHN4ZSg00i96DD0zuo8FzL1md7ZET5dKTHgfcAg+ojNYWB30uU1fnDy9Xj1CW9GC/Ym0vbC1IfsWHN4WqobcyOdLtqU3c+SzCkLHkwV+5RP7mYnyiCpM00cZUv8NFRv/+L3epXnBRTvJhDYYtdaQf4hlQEGkbUKlXnfZxasRswuheNKjEkVziD4Bsk510qG1gefGosYspxDbSSHB8D/8Kdv/fi+0QoG3+uqqoIH8DosdoRjUrWwafd+0m8p+PMwQR4c1CHvvrEsmBADQAedb1W1peoZMk0hfTd4MoKRYsscSd7xkye57RwIDAQAB", "UTF-8", "RSA2");
if (signVerified) {
// TODO 驗(yàn)簽成功后
//處理結(jié)束之后,返回success,支付寶系統(tǒng)將不再發(fā)送異步回調(diào)請求
return ActionHelper.responseOk();
}
return ActionHelper.responseFailed("支付驗(yàn)簽失敗");
}
@RequestMapping(value="alipay/returnHandler",method=RequestMethod.GET)
@ResponseBody
public JSONObject returnHandler(HttpServletRequest request) {
System.out.println("接收到支付寶的同步通知請求");
Map<String, String[]> maps = request.getParameterMap();
// for (Entry<String, String[]> map : maps.entrySet()) {
// System.out.println(map.getKey()+"下的值------------");
// String[] value = map.getValue();
// for (String string : value) {
// System.out.println(string);
// }
// }
String orderId = maps.get("out_trade_no")[0];//獲取訂單號
//進(jìn)行相應(yīng)的業(yè)務(wù)處理return ActionHelper.responseOk();
}
異步回調(diào)為post,同步回調(diào)為get,這里因?yàn)楫惒交卣{(diào)地址必須是公網(wǎng)可以訪問的,所以使用同步接口先行進(jìn)行判斷處理,正常業(yè)務(wù)下以異步回調(diào)為準(zhǔn)來判斷。
取消同步回調(diào)中的注解可以清楚的在控制臺(tái)看到所有的參數(shù)!

支付賬號和密碼自行在沙箱賬號中查詢即可。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- springboot對接支付寶支付接口(詳細(xì)開發(fā)步驟總結(jié))
- springboot+vue+對接支付寶接口+二維碼掃描支付功能(沙箱環(huán)境)
- SpringBoot集成支付寶沙箱支付(支付、退款)
- springboot調(diào)用支付寶第三方接口(沙箱環(huán)境)
- SpringBoot集成支付寶沙箱支付的實(shí)現(xiàn)示例
- SpringBoot接入支付寶支付的方法步驟
- SpringBoot實(shí)現(xiàn)支付寶沙箱支付的完整步驟
- SpringBoot集成支付寶支付的實(shí)現(xiàn)示例
- SpringBoot+MyBatis集成支付寶支付流程
相關(guān)文章
SpringBoot+JavaMailSender實(shí)現(xiàn)騰訊企業(yè)郵箱配置
這篇文章主要介紹了SpringBoot+JavaMailSender實(shí)現(xiàn)騰訊企業(yè)郵箱配置,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04
解決java.lang.IllegalArgumentException異常問題
這篇文章主要介紹了解決java.lang.IllegalArgumentException異常問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-04-04
java調(diào)用webservice接口,并解析返回參數(shù)問題
這篇文章主要介紹了java調(diào)用webservice接口,并解析返回參數(shù)問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-07-07
新手小白看過來學(xué)JAVA必過IO流File字節(jié)流字符流
這篇文章主要介紹了新手小白學(xué)JAVA到IO流File字節(jié)流字符流的重點(diǎn),對流不清楚的新手同學(xué)快進(jìn)來學(xué)習(xí)吧,大佬也可以進(jìn)來溫故一下2021-08-08
Java實(shí)現(xiàn)視頻格式轉(zhuǎn)化的操作代碼
在當(dāng)今數(shù)字化時(shí)代,視頻已成為我們?nèi)粘I詈凸ぷ髦胁豢苫蛉钡囊徊糠?不同的設(shè)備和平臺(tái)可能支持不同的視頻格式,因此,視頻格式轉(zhuǎn)換的需求也日益增長,本文將介紹如何使用Java實(shí)現(xiàn)視頻格式轉(zhuǎn)換,需要的朋友可以參考下2025-01-01

