Skip to content

Commit 6fb537b

Browse files
committed
add sandbox mode, automatic modify request url
1 parent 4ba681c commit 6fb537b

File tree

7 files changed

+91
-59
lines changed

7 files changed

+91
-59
lines changed

src/main/java/com/alipay/global/api/BaseAlipayClient.java

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,10 @@ public abstract class BaseAlipayClient implements AlipayClient {
3333
* client id
3434
*/
3535
private String clientId;
36+
/**
37+
* is sandbox mode
38+
*/
39+
private boolean isSandboxMode = false;
3640

3741
public BaseAlipayClient() {
3842
}
@@ -50,12 +54,24 @@ public BaseAlipayClient(String gatewayUrl, String merchantPrivateKey, String ali
5054
this.clientId = clientId;
5155
}
5256

57+
public BaseAlipayClient(String gatewayUrl, String merchantPrivateKey, String alipayPublicKey, String clientId, boolean isSandboxMode) {
58+
this.gatewayUrl = gatewayUrl;
59+
this.merchantPrivateKey = merchantPrivateKey;
60+
this.alipayPublicKey = alipayPublicKey;
61+
this.clientId = clientId;
62+
this.isSandboxMode = isSandboxMode;
63+
}
64+
5365
public <T extends AlipayResponse> T execute(AlipayRequest<T> alipayRequest) throws AlipayApiException {
5466

5567
// compatible with old version which clientId does not exist in BaseAlipayClient
5668
alipayRequest.setClientId(alipayRequest.getClientId() == null ? this.clientId : alipayRequest.getClientId());
5769

58-
checkRequestParam(alipayRequest);
70+
// replace with sandbox url if needed
71+
adjustSandboxUrl(alipayRequest);
72+
73+
// check request params
74+
checkRequestParams(alipayRequest);
5975

6076
String clientId = alipayRequest.getClientId();
6177
String httpMethod = alipayRequest.getHttpMethod();
@@ -135,7 +151,7 @@ private boolean checkRspSign(String httpMethod, String path, String clientId, St
135151
}
136152
}
137153

138-
private void checkRequestParam(AlipayRequest alipayRequest) throws AlipayApiException {
154+
private void checkRequestParams(AlipayRequest alipayRequest) throws AlipayApiException {
139155
if (alipayRequest == null) {
140156
throw new AlipayApiException("alipayRequest can't null");
141157
}
@@ -178,6 +194,18 @@ private String genRequestUrl(String path) {
178194

179195
}
180196

197+
/**
198+
* If is sandbox mode, modify the path
199+
*
200+
* @param alipayRequest
201+
*/
202+
private void adjustSandboxUrl(AlipayRequest alipayRequest) {
203+
if (isSandboxMode) {
204+
String originPath = alipayRequest.getPath();
205+
alipayRequest.setPath(originPath.replaceFirst("/ams/api", "/ams/sandbox/api"));
206+
}
207+
}
208+
181209
/**
182210
* Generate required headers
183211
*

src/main/java/com/alipay/global/api/DefaultAlipayClient.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,10 @@ public DefaultAlipayClient(String gatewayUrl, String merchantPrivateKey, String
1616
super(gatewayUrl, merchantPrivateKey, alipayPublicKey, clientId);
1717
}
1818

19+
public DefaultAlipayClient(String gatewayUrl, String merchantPrivateKey, String alipayPublicKey, String clientId, boolean isSandboxMode) {
20+
super(gatewayUrl, merchantPrivateKey, alipayPublicKey, clientId, isSandboxMode);
21+
}
22+
1923
@Override
2024
public Map<String, String> buildCustomHeader() {
2125
return null;

src/main/java/com/alipay/global/api/example/excutable/CashierExecutableDemoCode.java

Lines changed: 9 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,9 @@
33
import com.alipay.global.api.AlipayClient;
44
import com.alipay.global.api.DefaultAlipayClient;
55
import com.alipay.global.api.exception.AlipayApiException;
6-
import com.alipay.global.api.model.ams.Amount;
7-
import com.alipay.global.api.model.ams.Buyer;
8-
import com.alipay.global.api.model.ams.Env;
9-
import com.alipay.global.api.model.ams.Order;
10-
import com.alipay.global.api.model.ams.PaymentFactor;
11-
import com.alipay.global.api.model.ams.PaymentMethod;
12-
import com.alipay.global.api.model.ams.ProductCodeType;
13-
import com.alipay.global.api.model.ams.SettlementStrategy;
14-
import com.alipay.global.api.model.ams.TerminalType;
6+
import com.alipay.global.api.model.ams.*;
7+
import com.alipay.global.api.model.constants.AntomPathConstants;
158
import com.alipay.global.api.model.constants.EndPointConstants;
16-
import com.alipay.global.api.model.constants.PathConstants;
179
import com.alipay.global.api.request.ams.pay.AlipayPayQueryRequest;
1810
import com.alipay.global.api.request.ams.pay.AlipayPayRequest;
1911
import com.alipay.global.api.response.ams.pay.AlipayPayQueryResponse;
@@ -25,30 +17,27 @@
2517
public class CashierExecutableDemoCode {
2618

2719

28-
private static final String merchantPrivateKey = "";
20+
private static final String merchantPrivateKey = "";
2921

30-
private static final String alipayPublicKey = "";
22+
private static final String alipayPublicKey = "";
3123

32-
private static final String CLIENT_ID = "";
24+
private static final String CLIENT_ID = "";
3325

3426

35-
36-
37-
public static void main(String[] args){
27+
public static void main(String[] args) {
3828

3929
}
4030

4131

42-
43-
private static void cashierPay(){
32+
private static void cashierPay() {
4433

4534
// Select your gateway address according to the recommendations of the developer center.
4635
AlipayClient defaultAlipayClient = new DefaultAlipayClient(EndPointConstants.SG,
4736
merchantPrivateKey, alipayPublicKey);
4837

4938
AlipayPayRequest alipayPayRequest = new AlipayPayRequest();
5039
alipayPayRequest.setClientId(CLIENT_ID);
51-
alipayPayRequest.setPath(PathConstants.PAY_PROD_PATH);
40+
alipayPayRequest.setPath(AntomPathConstants.PAYMENT_PATH);
5241
alipayPayRequest.setProductCode(ProductCodeType.CASHIER_PAYMENT);
5342

5443
// replace to your paymentRequestId
@@ -116,8 +105,7 @@ private static void cashierPay(){
116105
}
117106

118107

119-
120-
private static void cashierInquiryPayment(){
108+
private static void cashierInquiryPayment() {
121109

122110
AlipayClient defaultAlipayClient = new DefaultAlipayClient(EndPointConstants.SG,
123111
merchantPrivateKey, alipayPublicKey);
@@ -136,8 +124,4 @@ private static void cashierInquiryPayment(){
136124
}
137125

138126

139-
140-
141-
142-
143127
}

src/main/java/com/alipay/global/api/example/excutable/EasyPayExecutableDemoCode.java

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,9 @@
33
import com.alipay.global.api.AlipayClient;
44
import com.alipay.global.api.DefaultAlipayClient;
55
import com.alipay.global.api.exception.AlipayApiException;
6-
import com.alipay.global.api.model.ams.Amount;
7-
import com.alipay.global.api.model.ams.Order;
8-
import com.alipay.global.api.model.ams.PaymentMethod;
9-
import com.alipay.global.api.model.ams.ProductCodeType;
10-
import com.alipay.global.api.model.ams.SettlementStrategy;
6+
import com.alipay.global.api.model.ams.*;
7+
import com.alipay.global.api.model.constants.AntomPathConstants;
118
import com.alipay.global.api.model.constants.EndPointConstants;
12-
import com.alipay.global.api.model.constants.PathConstants;
139
import com.alipay.global.api.model.constants.ProductSceneConstants;
1410
import com.alipay.global.api.request.ams.pay.AlipayPaymentSessionRequest;
1511
import com.alipay.global.api.response.ams.pay.AlipayPaymentSessionResponse;
@@ -19,25 +15,25 @@
1915
public class EasyPayExecutableDemoCode {
2016

2117

22-
private static final String merchantPrivateKey = "";
18+
private static final String merchantPrivateKey = "";
2319

24-
private static final String alipayPublicKey = "";
20+
private static final String alipayPublicKey = "";
2521

26-
private static final String CLIENT_ID = "";
22+
private static final String CLIENT_ID = "";
2723

28-
public static void main(String[] args){
24+
public static void main(String[] args) {
2925

3026

3127
}
3228

3329

34-
public static void easyPaySession(){
30+
public static void easyPaySession() {
3531

3632
AlipayClient defaultAlipayClient = new DefaultAlipayClient(EndPointConstants.SG,
3733
merchantPrivateKey, alipayPublicKey);
3834

3935
AlipayPaymentSessionRequest alipayPaymentSessionRequest = new AlipayPaymentSessionRequest();
40-
alipayPaymentSessionRequest.setPath(PathConstants.CREATE_SESSION_PROD_PATH);
36+
alipayPaymentSessionRequest.setPath(AntomPathConstants.CREATE_SESSION_PATH);
4137
alipayPaymentSessionRequest.setClientId(CLIENT_ID);
4238

4339
alipayPaymentSessionRequest.setProductScene(ProductSceneConstants.EASY_PAY);
@@ -73,7 +69,7 @@ public static void easyPaySession(){
7369
order.setOrderDescription("antom test order");
7470
order.setOrderAmount(amount);
7571

76-
AlipayPaymentSessionResponse alipayPaymentSessionResponse = null;
72+
AlipayPaymentSessionResponse alipayPaymentSessionResponse = null;
7773

7874
try {
7975
alipayPaymentSessionResponse = defaultAlipayClient.execute(alipayPaymentSessionRequest);

src/main/java/com/alipay/global/api/example/excutable/SubscriptionExecutableDemoCode.java

Lines changed: 10 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,9 @@
44
import com.alipay.global.api.AlipayClient;
55
import com.alipay.global.api.DefaultAlipayClient;
66
import com.alipay.global.api.exception.AlipayApiException;
7-
import com.alipay.global.api.model.ams.Amount;
8-
import com.alipay.global.api.model.ams.Env;
9-
import com.alipay.global.api.model.ams.OrderInfo;
10-
import com.alipay.global.api.model.ams.OsType;
11-
import com.alipay.global.api.model.ams.PaymentMethod;
12-
import com.alipay.global.api.model.ams.PeriodRule;
13-
import com.alipay.global.api.model.ams.SettlementStrategy;
14-
import com.alipay.global.api.model.ams.TerminalType;
7+
import com.alipay.global.api.model.ams.*;
8+
import com.alipay.global.api.model.constants.AntomPathConstants;
159
import com.alipay.global.api.model.constants.EndPointConstants;
16-
import com.alipay.global.api.model.constants.PathConstants;
1710
import com.alipay.global.api.request.ams.subscription.AlipaySubscriptionCreateRequest;
1811
import com.alipay.global.api.response.ams.subscription.AlipaySubscriptionCreateResponse;
1912

@@ -22,25 +15,25 @@
2215
public class SubscriptionExecutableDemoCode {
2316

2417

25-
private static final String merchantPrivateKey = "";
18+
private static final String merchantPrivateKey = "";
2619

27-
private static final String alipayPublicKey = "";
20+
private static final String alipayPublicKey = "";
2821

29-
private static final String CLIENT_ID = "";
22+
private static final String CLIENT_ID = "";
3023

31-
public static void main(String[] args){
24+
public static void main(String[] args) {
3225

3326
createSubScription();
3427

3528
}
3629

37-
public static void createSubScription(){
30+
public static void createSubScription() {
3831

3932
AlipayClient defaultAlipayClient = new DefaultAlipayClient(EndPointConstants.SG,
4033
merchantPrivateKey, alipayPublicKey);
4134

4235
AlipaySubscriptionCreateRequest alipaySubscriptionCreateRequest = new AlipaySubscriptionCreateRequest();
43-
alipaySubscriptionCreateRequest.setPath(PathConstants.SUBSCRIPTION_CREATE_PROD_PATH);
36+
alipaySubscriptionCreateRequest.setPath(AntomPathConstants.SUBSCRIPTION_CREATE_PATH);
4437
alipaySubscriptionCreateRequest.setClientId(CLIENT_ID);
4538

4639
String subscriptionRequestId = UUID.randomUUID().toString();
@@ -55,7 +48,7 @@ public static void createSubScription(){
5548
periodRule.setPeriodCount(1);
5649
alipaySubscriptionCreateRequest.setPeriodRule(periodRule);
5750

58-
PaymentMethod paymentMethod =new PaymentMethod();
51+
PaymentMethod paymentMethod = new PaymentMethod();
5952
paymentMethod.setPaymentMethodType("GCASH");
6053
alipaySubscriptionCreateRequest.setPaymentMethod(paymentMethod);
6154

@@ -82,7 +75,7 @@ public static void createSubScription(){
8275
env.setOsType(OsType.ANDROID);
8376
alipaySubscriptionCreateRequest.setEnv(env);
8477

85-
AlipaySubscriptionCreateResponse alipaySubscriptionCreateResponse =null;
78+
AlipaySubscriptionCreateResponse alipaySubscriptionCreateResponse = null;
8679

8780
System.out.println(JSON.toJSON(alipaySubscriptionCreateRequest));
8881

@@ -99,6 +92,4 @@ public static void createSubScription(){
9992
}
10093

10194

102-
103-
10495
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
/*
2+
* Ant Group
3+
* Copyright (c) 2004-2024 All Rights Reserved.
4+
*/
5+
package com.alipay.global.api.model.constants;
6+
7+
/**
8+
* @author zhangtianren
9+
* @version AntomPathConstants.java, v 0.1 2024年06月13日 下午4:20 zhangtianren
10+
*/
11+
public class AntomPathConstants {
12+
13+
public static final String PAYMENT_PATH = "/ams/api/v1/payments/pay";
14+
public static final String REFUND_PATH = "/ams/api/v1/payments/refund";
15+
public static final String INQUIRY_PATH = "/ams/api/v1/payments/inquiryPayment";
16+
public static final String CAPTURE_PATH = "/ams/api/v1/payments/capture";
17+
public static final String CREATE_SESSION_PATH = "/ams/api/v1/payments/createPaymentSession";
18+
public static final String CANCEL_PATH = "/ams/api/v1/payments/cancel";
19+
public static final String CONSULT_PATH = "/ams/api/v1/payments/consult";
20+
public static final String AUTH_CONSULT_PATH = "/ams/api/v1/authorizations/consult";
21+
public static final String AUTH_APPLY_TOKEN_PATH = "/ams/api/v1/authorizations/applyToken";
22+
public static final String VAULTING_SESSION_PATH = "/ams/api/v1/vaults/createVaultingSession";
23+
public static final String VAULT_PAYMENTMETHOD_PATH = "/ams/api/v1/vaults/createVaultingSession";
24+
public static final String SUBSCRIPTION_CREATE_PATH = "/ams/api/v1/subscriptions/create";
25+
public static final String SUBSCRIPTION_CANCEL_PATH = "/ams/api/v1/subscriptions/cancel";
26+
public static final String SUBSCRIPTION_CHANGE_PATH = "/ams/api/v1/subscriptions/change";
27+
28+
}

src/main/java/com/alipay/global/api/model/constants/PathConstants.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.alipay.global.api.model.constants;
22

3+
@Deprecated
34
public class PathConstants {
45

56
public static final String PAY_PROD_PATH = "/ams/api/v1/payments/pay";

0 commit comments

Comments
 (0)