SpringBoot 에서 알 리 페 이 인터페이스 사용 을 어떻게 실현 합 니까?
초기 준비:
전에 쓴 것 을 참고 하 세 요알 리 페 이 인터페이스 servlet 버 전 도입
Jar 가방 도입:
<!-- -->
<dependency>
<groupId>net.guerlab</groupId>
<artifactId>sdk-alipay-starter</artifactId>
<version>${alipay.version}</version>
</dependency>
참고 버 전:1.0.3응용 프로그램 설정:
sdk:
alipay:
dev: true //true //false
sign-type: RSA2 //
app-id: //APPID
private-key: //
alipay-public-key: //
컨트롤 러 의 처리지불 요청 처리
@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, H5 QUICK_WAP_PAY
data.put("product_code","FAST_INSTANT_TRADE_PAY");
// ,
data.put("total_amount", money);
// ,
if(subject==0)
data.put("subject"," ");
// ,
//data.put("timeout_express","");
//
//data.put("passback_params","");
//PC
AlipayTradePagePayRequest request = new AlipayTradePagePayRequest();
//APP
//AlipayTradeAppPayRequest request = new AlipayTradeAppPayRequest();
// H5
//AlipayTradeWapPayRequest request = new AlipayTradeWapPayRequest();
//
request.setNotifyUrl("http://localhost:8765/pay/alipay/notify");
//
request.setReturnUrl("http://localhost:8765/pay/alipay/returnHandler");
//
request.setBizContent(data.toJSONString());
AlipayTradePagePayResponse alipayResponse=client.pageExecute(request);
response.setContentType("text/html;charset=UTF-8");
response.getWriter().write(alipayResponse.getBody());
}
여기 서 저 는 세 개의 매개 변 수 를 시범 으로 전 달 했 습 니 다.상황 에 따라 스스로 수정 할 수 있 습 니 다.만약 에 지불 방식 이 바 뀌 면 client.?실행 하려 면@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] + ",";
}
// , 。
//valueStr = new String(valueStr.getBytes("ISO-8859-1"),"utf-8");
maps.put(name, valueStr);
}
// SDK
boolean signVerified = AlipaySignature.rsaCheckV1(maps, "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAr4eu1yGt0mASOzTjIPCaRRkh+3LSr6hJGHN4ZSg00i96DD0zuo8FzL1md7ZET5dKTHgfcAg+ojNYWB30uU1fnDy9Xj1CW9GC/Ym0vbC1IfsWHN4WqobcyOdLtqU3c+SzCkLHkwV+5RP7mYnyiCpM00cZUv8NFRv/+L3epXnBRTvJhDYYtdaQf4hlQEGkbUKlXnfZxasRswuheNKjEkVziD4Bsk510qG1gefGosYspxDbSSHB8D/8Kdv/fi+0QoG3+uqqoIH8DosdoRjUrWwafd+0m8p+PMwQR4c1CHvvrEsmBADQAedb1W1peoZMk0hfTd4MoKRYsscSd7xkye57RwIDAQAB", "UTF-8", "RSA2");
if (signVerified) {
// TODO
// , success,
return ActionHelper.responseOk();
}
return ActionHelper.responseFailed(" ");
}
@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];//
// return ActionHelper.responseOk();
}
비동기 리 셋 은 post 이 고 동기 리 셋 은 get 입 니 다.여기 서 비동기 리 셋 주 소 는 반드시 네트워크 가 접근 할 수 있어 야 하기 때문에 동기 인터페이스 로 먼저 판단 처 리 를 하고 정상 적 인 업무 에서 비동기 리 셋 을 기준 으로 판단 합 니 다.동기 반전 의 주 해 를 취소 하면 콘 솔 에서 모든 인 자 를 볼 수 있 습 니 다!
결제 계 정과 비밀 번 호 는 샌 드 박스 계 정 에서 스스로 조회 하면 된다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
thymeleaf로 HTML 페이지를 동적으로 만듭니다 (spring + gradle)지난번에는 에서 화면에 HTML을 표시했습니다. 이번에는 화면을 동적으로 움직여보고 싶기 때문에 입력한 문자를 화면에 표시시키고 싶습니다. 초보자의 비망록이므로 이상한 점 등 있으면 지적 받을 수 있으면 기쁩니다! ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.