자바:알 리 페 이 대면 데모(공개 키 인증서 방식)-샌 드 박스 환경 테스트 버 전
com.alipay.sdk alipay-sdk-java 4.11.21.ALL
2.bcprov-jdk*.jar 패 키 지 를 가 져 옵 니 다.그렇지 않 으 면 오류 가 발생 합 니 다. java.lang.ClassNotFoundException: org.bouncycastle.jce.provider.BouncyCastleProvider
org.bouncycastle bcprov-jdk16 1.46
3.zfbinfo.properties 를 수정 합 니 다.(정식 환경 에서 이 세 인증 서 는 다른 폴 더 에 따로 저장 해 야 합 니 다.jar 에 포장 하지 마 십시오)
# 、partnerId appId
open_api_domain = https://openapi.alipaydev.com/gateway.do
mcloud_api_domain = http://mcloudmonitor.com/gateway.do
# UID
pid = 20***913
appid = 2***565
#
private_key = MII****SkAgE
#
certPath = E:/****/CSR/appCertPublicKey_2021000117600565.crt
#
rootCertPath = E:/****/CSR/alipayRootCert.crt
#SHA256withRsa
alipayPublicCertPath = E:/****/CSR/alipayCertPublicKey_RSA2.crt
# : RSA->SHA1withRsa,RSA2->SHA256withRsa
sign_type = RSA2
4.인 코딩
package com.alipay.demo.trade;
import com.alipay.api.*;
import com.alipay.api.domain.AlipayTradeAppPayModel;
import com.alipay.api.domain.TradeFundBill;
import com.alipay.api.request.AlipayTradePrecreateRequest;
import com.alipay.api.request.AlipayTradeQueryRequest;
import com.alipay.api.response.AlipayTradePrecreateResponse;
import com.alipay.api.response.AlipayTradeQueryResponse;
import com.alipay.api.response.MonitorHeartbeatSynResponse;
import com.alipay.demo.trade.config.Configs;
import com.alipay.demo.trade.model.ExtendParams;
import com.alipay.demo.trade.model.GoodsDetail;
import com.alipay.demo.trade.model.builder.*;
import com.alipay.demo.trade.model.hb.*;
import com.alipay.demo.trade.model.result.AlipayF2FPayResult;
import com.alipay.demo.trade.model.result.AlipayF2FPrecreateResult;
import com.alipay.demo.trade.model.result.AlipayF2FQueryResult;
import com.alipay.demo.trade.model.result.AlipayF2FRefundResult;
import com.alipay.demo.trade.service.AlipayMonitorService;
import com.alipay.demo.trade.service.AlipayTradeService;
import com.alipay.demo.trade.service.impl.AlipayMonitorServiceImpl;
import com.alipay.demo.trade.service.impl.AlipayTradeServiceImpl;
import com.alipay.demo.trade.service.impl.AlipayTradeWithHBServiceImpl;
import com.alipay.demo.trade.utils.Utils;
import com.alipay.demo.trade.utils.ZxingUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import java.util.*;
/**
* Created by liuyangkly on 15/8/9.
* main , api
* sdk demo :[email protected]
*/
public class Main {
private static Log log = LogFactory.getLog(Main.class);
// 2.0
private static AlipayTradeService tradeService;
// 2.0 ( )
private static AlipayTradeService tradeWithHBService;
// , api , readme.txt
private static AlipayMonitorService monitorService;
private static final String certPath;
private static final String rootCertPath;
private static final String alipayPublicCertPath;
static {
/** AlipayTradeService Configs.init()
* Configs classpath zfbinfo.properties , classpath
*/
Configs.init("zfbinfo.properties");
ResourceBundle rb = ResourceBundle.getBundle("zfbinfo"); // .properties
certPath = rb.getString("certPath");
rootCertPath = rb.getString("rootCertPath");
alipayPublicCertPath = rb.getString("alipayPublicCertPath");
}
//
private void dumpResponse(AlipayResponse response) {
if (response != null) {
log.info(String.format("code:%s, msg:%s", response.getCode(), response.getMsg()));
if (StringUtils.isNotEmpty(response.getSubCode())) {
log.info(String.format("subCode:%s, subMsg:%s", response.getSubCode(),
response.getSubMsg()));
}
log.info("body:" + response.getBody());
}
}
public static void main(String[] args) throws AlipayApiException {
Main main = new Main();
// 2.0
main.test_trade_precreate();
}
// 2.0
public void test_trade_precreate() throws AlipayApiException {
// ( ) ,64 , 、 、 ,
// , sequence ,
String outTradeNo = "tradeprecreate" + System.currentTimeMillis()
+ (long) (Math.random() * 10000000L);
// ( ) , 。 “xxx xxx ”
String subject = "xxx xxx ";
// ( ) , , 1
// 【 】,【 】,【 】 , :【 】=【 】+【 】
String totalAmount = "100";
// ( ) , , ,
// , 【 】,【 】, 【 】-【 】
String undiscountableAmount = "0";
// ID, ,( sellerId )
// , PID, appid PID
String sellerId = "208***913";
// , , " 2 15.00 "
String body = " 3 20.00 ";
// ,
String operatorId = "test_operator_id";
// ( ) , ,
String storeId = "test_store_id";
// , ( setSysServiceProviderId ),
ExtendParams extendParams = new ExtendParams();
extendParams.setSysServiceProviderId("208***3913");
// , 30
String timeoutExpress = "30m";
// , ,
List goodsDetailList = new ArrayList();
// , id( )、 、 ( )、 , , GoodsDetail
GoodsDetail goods1 = GoodsDetail.newInstance("goods_id001", "xxx ", 1000, 1);
//
goodsDetailList.add(goods1);
// , “ ”, 5.00 ,
GoodsDetail goods2 = GoodsDetail.newInstance("goods_id002", "xxx ", 500, 2);
goodsDetailList.add(goods2);
// builder,
AlipayTradePrecreateRequestBuilder builder = new AlipayTradePrecreateRequestBuilder()
.setSubject(subject).setTotalAmount(totalAmount).setOutTradeNo(outTradeNo)
.setUndiscountableAmount(undiscountableAmount).setSellerId(sellerId).setBody(body)
.setOperatorId(operatorId).setStoreId(storeId).setExtendParams(extendParams)
.setTimeoutExpress(timeoutExpress)
// .setNotifyUrl("http://www.baidu.com")// http ,
.setGoodsDetailList(goodsDetailList);
// AlipayF2FPrecreateResult result = tradeService.tradePrecreate(builder);
CertAlipayRequest certAlipayRequest = new CertAlipayRequest();
certAlipayRequest.setServerUrl(Configs.getOpenApiDomain());
certAlipayRequest.setAppId(Configs.getAppid());
certAlipayRequest.setPrivateKey(Configs.getPrivateKey());
certAlipayRequest.setFormat("json");
certAlipayRequest.setCharset("utf-8");
certAlipayRequest.setSignType(Configs.getSignType());
certAlipayRequest.setCertPath(certPath);
certAlipayRequest.setAlipayPublicCertPath(alipayPublicCertPath);
certAlipayRequest.setRootCertPath(rootCertPath);
AlipayClient alipayClient = new DefaultAlipayClient(certAlipayRequest);
// API
AlipayTradePrecreateRequest request = new AlipayTradePrecreateRequest();
// AlipayTradeAppPayModel model = new AlipayTradeAppPayModel();
System.out.println(builder.toJsonString());
System.out.println(builder.toString());
request.setBizContent(builder.toJsonString()+"product_code:FACE_TO_FACE_PAYMENT");
//
AlipayTradePrecreateResponse response = alipayClient.certificateExecute(request);
dumpResponse(response);
//
String filePath = String.format("C:/Users/***/Desktop/qr-%s.png",
response.getOutTradeNo());
log.info("filePath:" + filePath);
//
ZxingUtils.getQRCodeImge(response.getQrCode(), 256, filePath);
}
}
결제 방식 에 따라 API 요청 과 요청 을 구성 할 때 서로 다른 방법 을 사용 해 야 합 니 다.
직접 지불 하 다.
AlipayTradePayRequest & AlipayTradePayResponse
직접 지불 하 다.
AlipayTradePrecreateRequest&AlipayTradePrecreateResponse
직접 지불 하 다
AlipayTradeCreateRequest&AlipayTradeCreateResponse
앱 결제
AlipayTradeAppPayRequest & AlipayTradeAppPayResponse
모 바 일 홈 페이지 결제
AlipayTradeWapPayRequest& AlipayTradeWapPayResponse
컴퓨터 홈 페이지 결제
AlipayTradePagePayRequest& AlipayTradePagePayResponse
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.