자바 에서 Spring Boot 알 리 페 이 스 스 캔 결제 및 결제 리 셋 실현 코드
10054 단어 SpringBoot알 리 페 이스 캔 페 이 먼 트지불 반전
공식 문서:https://opendocs.alipay.com/apis
알 리 페 이 모래 상자 주소:https://openhome.alipay.com/platform/appDaily.htm?tab=info
알 리 페 이 결제 절차:
준비 작업:알 리 페 이 샌 드 박스 데이터 획득(APPID,알 리 페 이 게 이 트 웨 이,RSA 2 비밀,샌 드 박스 결제 계 정 등)
SpringBoot 통합,자바 코드 로 결제 요청
알 리 페 이 는 결제 요청 을 받 은 후 HTML 코드 세 션 을 되 돌려 전단 에 QR 코드 를 보 여 줍 니 다.
스 캔 결제 성공 후 알 리 페 이 발송 동기 화,비동기 알림 요청,동기 화,비동기 알림 경 로 는 설정 파일 에서 설정 할 수 있 습 니 다.
비동기 알림 결 과 를 받 은 후에 검 사 를 하고 검 사 를 통과 하 며 성공 정 보 를 되 돌려 알 리 는 알 리 페 이 가 비동기 알림 을 하지 않 습 니 다.
이때 알 리 페 이 결제 절차 가 완료 되 고 알 리 페 이 조회 인 터 페 이 스 를 호출 하여 결제 성공 을 확인 합 니 다.
1.알 리 페 이 샌 드 박스 데이터 획득
상기 샌 드 박스 주 소 를 열 고 샌 드 박스 설정 을 가 져 와 다음 그림 정 보 를 보십시오.
2.SpringBoot 를 통합 하여 자바 코드 를 사용 하여 지불 요청 을 합 니 다.
1.pom.xml 파일 에 알 리 페 이 의존 추가
<!-- -->
<dependency>
<groupId>com.alipay.sdk</groupId>
<artifactId>alipay-sdk-java</artifactId>
<version>3.7.26.ALL</version>
</dependency>
2.프로젝트 에 알 리 페 이 도구 류 를 새로 만 듭 니 다.
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://localhost:8080/alipay.trade.page.pay-JAVA-UTF-8/notify_url.jsp";
// http:// , ?id=123 ,
// TODO ,
public static String return_url = "http://localhost:8080/alipay.trade.page.pay-JAVA-UTF-8/return_url.jsp";
//
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();
}
}
}
}
}
3.서비스 정의
public interface AlipayService {
/**
*
* @param outTradeNo ( )
* @param totalAmount
* @param subject
*/
String goPay(String outTradeNo,BigDecimal totalAmount,String subject) throws Exception;
/**
*
* @param outTradeNo ( )
*/
String query(String outTradeNo) throws AlipayApiException;
/**
*
* @param outTradeNo ( )
*/
String close(String outTradeNo) throws AlipayApiException;
}
4.ServiceImpl 실현,지급 청구,거래 조회 등
public class AlipayServiceImpl implements AlipayService {
@Autowired
private RechargeDetailService rechargeDetailService;
@Override
public String goPay(String outTradeNo, BigDecimal totalAmount, String subject) throws Exception {
AlipayClient 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);
alipayRequest.setBizContent("{\"out_trade_no\":\"" + outTradeNo + "\"," + "\"total_amount\":\"" + totalAmount
+ "\"," + "\"subject\":\"" + subject + "\"," + "\"body\":\" \"," + "\"timeout_express\":\"15m\","
+ "\"product_code\":\"FAST_INSTANT_TRADE_PAY\"}");
/** */
String form = "";
form = alipayClient.pageExecute(alipayRequest).getBody();
return form;
}
@Override
public String query(String outTradeNo) throws AlipayApiException {
AlipayClient alipayClient = new DefaultAlipayClient(AlipayConfig.gatewayUrl, AlipayConfig.app_id,
AlipayConfig.merchant_private_key, "json", AlipayConfig.charset, AlipayConfig.alipay_public_key,
AlipayConfig.sign_type);
AlipayTradeQueryRequest alipayRequest = new AlipayTradeQueryRequest();
/** */
alipayRequest.setBizContent("{\"out_trade_no\":\"" + outTradeNo + "\"," + "\"trade_no\":\"" + "" + "\"}");
/** */
String result = alipayClient.execute(alipayRequest).getBody();
return result;
}
@Override
public String close(String outTradeNo) throws AlipayApiException {
AlipayTradeCloseRequest alipayRequest = new AlipayTradeCloseRequest();
AlipayClient alipayClient = new DefaultAlipayClient(AlipayConfig.gatewayUrl, AlipayConfig.app_id,
AlipayConfig.merchant_private_key, "json", AlipayConfig.charset, AlipayConfig.alipay_public_key,
AlipayConfig.sign_type);
alipayRequest.setBizContent("{\"out_trade_no\":\"" + outTradeNo + "\"," + "\"trade_no\":\"" + "" + "\"}");
String result = alipayClient.execute(alipayRequest).getBody();
return result;
}
}
5、알 리 페 이 컨트롤 러 생 성
public class AlipayController {
@Autowired
private AlipayService alipayService;
/**
*
*/
@GetMapping("goPay")
public Map<Object, Object> goPay() throws Exception{
/** , */
String outTradeNo = "202101010001";
BigDecimaltotalAmount = new BigDecimal(10000);
String subject = " 12";
String pay = alipayService.goPay(outTradeNo, totalAmount, subject);
Map<Object, Object> pays = new HashMap<>();
pays.put("pay", pay);
return pays;
}
/**
*
*/
@PostMapping("aipayQuery")
public Result<Object> alipayQuery() throws Exception{
/** */
String outTradeNo = "13123";
String query = alipayService.query(outTradeNo);
Object json = JSONObject.toJSON(query);
/*JSONObject jObject = new JSONObject();
jObject.get(query);*/
return Result.success(json);
}
/**
*
* @throws AlipayApiException
*/
@PostMapping("alipayclose")
public Result<Object> alipaycolse() throws AlipayApiException{
/** */
String outTradeNo = "13123";
String close = alipayService.close(outTradeNo);
return Result.success(close);
}
/**
*
*
* @param request
* @return String
* @throws AlipayApiException
* @throws ParseException
*/
@PostMapping("/callBack")
public String alipayNotify(HttpServletRequest request) throws Exception {
//
Map<String, String> map = new HashMap<>();
Map<String, String[]> requestParams = request.getParameterMap();
if(requestParams.isEmpty()) {
return "failure";
}
// Map<String,String[]> Map<String,String>
for (Iterator<String> iter = requestParams.keySet().iterator(); iter.hasNext();) {
String name = iter.next();
String[] values = requestParams.get(name);
String valueStr = "";
for (int i = 0; i < values.length; i++) {
valueStr = (i == values.length - 1) ? valueStr + values[i] : valueStr + values[i] + ",";
}
map.put(name, valueStr);
}
//
boolean signVerified = AlipaySignature.rsaCheckV1(map, AlipayConfig.alipay_public_key, AlipayConfig.charset,
AlipayConfig.sign_type);
//
if (signVerified) {
//
}
return "failure";
}
}
이로써 SpringBoot 통합 알 리 페 이 결제 가 완료 되 었 습 니 다.자바 에서 Spring Boot 알 리 페 이 결제 및 결제 리 셋 실현 코드 에 관 한 글 은 여기까지 소개 되 었 습 니 다.더 많은 Spring Boot 알 리 페 이 결제 내용 은 저희 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 저 희 를 많이 응원 해 주세요!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[MeU] Hashtag 기능 개발➡️ 기존 Tag 테이블에 존재하지 않는 해시태그라면 Tag , tagPostMapping 테이블에 모두 추가 ➡️ 기존에 존재하는 해시태그라면, tagPostMapping 테이블에만 추가 이후에 개발할 태그 기반 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.