SpringBoot 알 리 페 이 결제 접속 방법 절차
12194 단어 SpringBoot알 리 페 이지불 하 다.
1.알 리 페 이 오픈 플랫폼 에서 다운로드 한 3 개의 인증 서 를 리 소스 아래 에 두 기
2.알 리 페 이 결제 프로필 작성
alipay.properties
alipay.appId= id
alipay.serverUrl=https://openapi.alipay.com/gateway.do
alipay.privateKey=
alipay.format=json
alipay.charset=UTF-8
alipay.signType=RSA2
alipay.appCertPath=/cert/appCertPublicKey_2021001164652941.crt
alipay.alipayCertPath=/cert/alipayCertPublicKey_RSA2.crt
alipay.alipayRootCertPath=/cert/alipayRootCert.crt
3.pom 의존 도입
<dependency>
<groupId>com.alipay.sdk</groupId>
<artifactId>alipay-sdk-java</artifactId>
<version>4.10.97.ALL</version>
</dependency>
4.설정 정 보 를 AliPayBean 에 주입
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;
@Component
@PropertySource("classpath:/production/alipay.properties")
@ConfigurationProperties(prefix = "alipay")
@Data
public class AliPayBean {
private String appId;
private String privateKey;
private String publicKey;
private String serverUrl;
private String domain;
private String format;
private String charset;
private String signType;
private String appCertPath;
private String alipayCertPath;
private String alipayRootCertPath;
}
5.설정 클래스 쓰기
import com.alipay.api.AlipayClient;
import com.alipay.api.CertAlipayRequest;
import com.alipay.api.DefaultAlipayClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.util.FileCopyUtils;
import java.io.InputStream;
@Configuration
public class AliConfig {
@Value("${custom.http.proxyHost}")
private String proxyHost;
@Value("${custom.http.proxyPort}")
private int proxyPort;
@Value("${spring.profiles.active}")
private String activeEnv;
@Autowired
private AliPayBean aliPayBean;
@Bean(name = {"alipayClient"})
public AlipayClient alipayClientService() throws Exception{
CertAlipayRequest certAlipayRequest = new CertAlipayRequest();
//
certAlipayRequest.setServerUrl(aliPayBean.getServerUrl());
// Id
certAlipayRequest.setAppId(aliPayBean.getAppId());
//
certAlipayRequest.setPrivateKey(aliPayBean.getPrivateKey());
// , json
certAlipayRequest.setFormat(aliPayBean.getFormat());
//
certAlipayRequest.setCharset(aliPayBean.getCharset());
//
certAlipayRequest.setSignType(aliPayBean.getSignType());
// ,
if ("prod".equals(activeEnv) || "stage".equals(activeEnv) || "test".equals(activeEnv)) {
//
certAlipayRequest.setCertContent(getCertContentByPath(aliPayBean.getAppCertPath()));
//
certAlipayRequest.setAlipayPublicCertContent(getCertContentByPath(aliPayBean.getAlipayCertPath()));
//
certAlipayRequest.setRootCertContent(getCertContentByPath(aliPayBean.getAlipayRootCertPath()));
certAlipayRequest.setProxyHost(proxyHost);
certAlipayRequest.setProxyPort(proxyPort);
}else {
//local
String serverPath = this.getClass().getResource("/").getPath();
//
certAlipayRequest.setCertPath(serverPath+aliPayBean.getAppCertPath());
//
certAlipayRequest.setAlipayPublicCertPath(serverPath+aliPayBean.getAlipayCertPath());
//
certAlipayRequest.setRootCertPath(serverPath+aliPayBean.getAlipayRootCertPath());
}
return new DefaultAlipayClient(certAlipayRequest);
}
public String getCertContentByPath(String name){
InputStream inputStream = null;
String content = null;
try{
inputStream = this.getClass().getClassLoader().getResourceAsStream(name);
content = new String(FileCopyUtils.copyToByteArray(inputStream));
}catch (Exception e){
e.printStackTrace();
}
return content;
}
}
6.결제 도구 류 작성
import com.alipay.api.AlipayApiException;
import com.alipay.api.AlipayClient;
import com.alipay.api.domain.AlipayTradeAppPayModel;
import com.alipay.api.domain.AlipayTradeQueryModel;
import com.alipay.api.request.AlipayTradeAppPayRequest;
import com.alipay.api.request.AlipayTradeQueryRequest;
import com.alipay.api.response.AlipayTradeAppPayResponse;
import com.alipay.api.response.AlipayTradeQueryResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;
/**
* @description:
* @Date:2020-08-26
*/
@Slf4j
@Service
public class AliPayUtils {
@Autowired
@Qualifier("alipayClient")
private AlipayClient alipayClient;
/**
*
* @param request
* @return
* @throws Exception
*/
public boolean isTradeQuery(AlipayTradeQueryModel model) throws AlipayApiException {
AlipayTradeQueryRequest request = new AlipayTradeQueryRequest();
request.setBizModel(model);
AlipayTradeQueryResponse alipayTradeQueryResponse = alipayClient.certificateExecute(request);
if(alipayTradeQueryResponse.isSuccess()){
return true;
} else {
return false;
}
}
/**
* app
* @param model
* @param notifyUrl
* @return
* @throws AlipayApiException
*/
public String startAppPay(AlipayTradeAppPayModel model, String notifyUrl) throws AlipayApiException {
AlipayTradeAppPayRequest aliPayRequest = new AlipayTradeAppPayRequest();
model.setProductCode("QUICK_MSECURITY_PAY");
aliPayRequest.setNotifyUrl(notifyUrl);
aliPayRequest.setBizModel(model);
// , sdkExecute
AlipayTradeAppPayResponse aliResponse = alipayClient.sdkExecute(aliPayRequest);
return aliResponse.getBody();
}
/**
*
*
* @param transferParams
* @return AlipayFundTransToaccountTransferResponse
*/
public AlipayFundTransUniTransferResponse doTransferNew(TransferParams transferParams) throws Exception {
String title = (StringUtils.isNotBlank(transferParams.getRemark()) ? transferParams
.getRemark() : " ");
//
AlipayFundTransUniTransferRequest request = new AlipayFundTransUniTransferRequest();
//
BizContentForUniTransfer bizContent = new BizContentForUniTransfer();
bizContent.setOut_biz_no(transferParams.getOutBizNo());
bizContent.setTrans_amount(MathUtil.changeF2Y(Math.abs(Integer.parseInt(transferParams.getAmount()))));
bizContent.setProduct_code("TRANS_ACCOUNT_NO_PWD");
bizContent.setBiz_scene("DIRECT_TRANSFER");
bizContent.setOrder_title(title);
Participant participant = new Participant();
participant.setIdentity(transferParams.getPayeeAccount());
participant.setIdentity_type(transferParams.getPayeeType());
participant.setName((StringUtils.isNotBlank(transferParams.getPayeeRealName()) ? transferParams
.getPayeeRealName() : StringUtils.EMPTY));
bizContent.setPayee_info(participant);
bizContent.setRemark(title);
request.setBizContent(JSON.toJSONString(bizContent));
//
AlipayFundTransUniTransferResponse response = null;
try {
response = alipayClient.certificateExecute(request);
} catch (Exception e) {
log.info("doTransfer exception, :{}", e.toString());
log.info("doTransfer exception, :{}", JSONObject.toJSONString(response));
}
log.info("doTransfer,AlipayFundTransUniTransferResponse:{}", JSONObject.toJSONString(response));
return response;
}
}
Tips:계좌 이체 에 사용 되 는 클래스
@Data
public class TransferParams {
/**
*
*/
private Long appId;
/**
* id
*/
private Long createdBy;
/**
*
*/
private String outBizNo;
/**
*
*/
private String payeeType;
/**
* , userId loginId
*/
private String payeeAccount;
/**
* ,
*/
private String amount;
/**
*
*/
private String payerShowName;
/**
*
*/
private String payeeRealName;
/**
*
*/
private String remark;
/**
*
*/
private String orderId;
}
import lombok.Data;
import java.math.BigDecimal;
/**
*
*/
@Data
public class BizContentForUniTransfer {
/**
*
*/
private String out_biz_no;
/**
* , , ,
*/
private BigDecimal trans_amount;
/**
* ,
* :TRANS_ACCOUNT_NO_PWD;
* :TRANS_BANKCARD_NO_PWD;
* :STD_RED_PACKET;
*/
private String product_code;
/**
* , :
* DIRECT_TRANSFER: / , B2C ;
* PERSONAL_COLLECTION:C2C -
*/
private String biz_scene;
/**
* ,
*/
private String order_title;
/**
* 。C2C - , ;
* B2C 、 / 。
*/
private String original_order_id;
/**
*
*/
private String remark;
/**
* , :
* 1、sub_biz_scene , , REDPACKET,C2C 、B2C ;
* 2、withdraw_timeliness , ( T1),
* T0 T+0 , T1 T+1 , , T0 T1 ;
*/
private String business_params;
/**
*
*/
private Participant payee_info;
}
@Data
public class Participant {
/**
*
*/
private String identity;
/**
* , :
* 1、ALIPAY_USER_ID ID
* 2、ALIPAY_LOGON_ID: ,
*/
private String identity_type;
/**
* , , 。
* identity_type=ALIPAY_LOGON_ID , 。
*/
private String name;
}
여기 서 SpringBoot 가 알 리 페 이 결제 에 접속 하 는 방법 과 절차 에 관 한 글 은 여기까지 소개 되 었 습 니 다.더 많은 SpringBoot 알 리 페 이 결제 내용 은 예전 의 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 저 희 를 많이 사랑 해 주세요!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
【Java・SpringBoot・Thymeleaf】 에러 메세지를 구현(SpringBoot 어플리케이션 실천편 3)로그인하여 사용자 목록을 표시하는 응용 프로그램을 만들고, Spring에서의 개발에 대해 공부하겠습니다 🌟 마지막 데이터 바인딩에 계속 바인딩 실패 시 오류 메시지를 구현합니다. 마지막 기사🌟 src/main/res...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.