Skip to content

Commit d0f3fd6

Browse files
author
Wout Schoovaerts
committed
Added Terminals API
1 parent b7ce9d4 commit d0f3fd6

File tree

11 files changed

+212
-4
lines changed

11 files changed

+212
-4
lines changed

CHANGELOG.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
1-
## 4.2.2
1+
## 4.3.0
2+
- Added Terminals API
23
- Added parameters "description" and "countriesOfActivity" to ProfileRequest
34
- Added parameters "description" and "countriesOfActivity" to UpdateProfileRequest
5+
- Use DELETE instead of POST for revoking tokens
46

57
## 4.2.1
68
- Added extra fields to AddressRequest

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ This library requires Java 11+.
2020
<dependency>
2121
<groupId>be.woutschoovaerts</groupId>
2222
<artifactId>mollie</artifactId>
23-
<version>4.2.1</version>
23+
<version>4.3.0</version>
2424
</dependency>
2525
```
2626

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
<groupId>be.woutschoovaerts</groupId>
88
<artifactId>mollie</artifactId>
9-
<version>4.2.1</version>
9+
<version>4.3.0</version>
1010

1111
<name>Mollie with Java</name>
1212
<description>Java framework to consume the Mollie API</description>

src/main/java/be/woutschoovaerts/mollie/Client.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -276,6 +276,15 @@ public ClientHandler clients() {
276276
return new ClientHandler(restService);
277277
}
278278

279+
/**
280+
* Handles terminal actions
281+
*
282+
* @return TerminalHandler object
283+
*/
284+
public TerminalHandler terminals() {
285+
return new TerminalHandler(restService);
286+
}
287+
279288
private void initUniRest(ClientProxy proxy) {
280289
Unirest.config()
281290
.setObjectMapper(new JacksonObjectMapper());

src/main/java/be/woutschoovaerts/mollie/data/payment/PaymentMethod.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,8 @@ public enum PaymentMethod {
2828
PRZELEWY24("przelewy24"),
2929
SOFORT("sofort"),
3030
TWINT("twint"),
31-
VOUCHER("voucher");
31+
VOUCHER("voucher"),
32+
POINT_OFF_SALE("pointofsale");
3233

3334
private final String value;
3435

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package be.woutschoovaerts.mollie.data.payment;
2+
3+
import be.woutschoovaerts.mollie.data.common.Link;
4+
import lombok.AllArgsConstructor;
5+
import lombok.Builder;
6+
import lombok.Data;
7+
import lombok.NoArgsConstructor;
8+
9+
@Data
10+
@AllArgsConstructor
11+
@NoArgsConstructor
12+
@Builder
13+
public class TerminalLinks {
14+
15+
private Link self;
16+
17+
private Link documentation;
18+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package be.woutschoovaerts.mollie.data.payment;
2+
3+
import lombok.AllArgsConstructor;
4+
import lombok.Builder;
5+
import lombok.Data;
6+
import lombok.NoArgsConstructor;
7+
8+
import java.util.List;
9+
10+
@Data
11+
@AllArgsConstructor
12+
@NoArgsConstructor
13+
@Builder
14+
public class TerminalListResponse {
15+
16+
private List<TerminalResponse> terminals;
17+
}
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package be.woutschoovaerts.mollie.data.payment;
2+
3+
import com.fasterxml.jackson.annotation.JsonProperty;
4+
import lombok.AllArgsConstructor;
5+
import lombok.Builder;
6+
import lombok.Data;
7+
import lombok.NoArgsConstructor;
8+
9+
import java.time.OffsetDateTime;
10+
11+
@Data
12+
@AllArgsConstructor
13+
@NoArgsConstructor
14+
@Builder
15+
public class TerminalResponse {
16+
17+
private String id;
18+
19+
private String profileId;
20+
21+
private String description;
22+
23+
private TerminalStatus status;
24+
25+
private String brand;
26+
27+
private String model;
28+
29+
private String serialNumber;
30+
31+
private String currency;
32+
33+
private OffsetDateTime createdAt;
34+
35+
private OffsetDateTime updatedAt;
36+
37+
@JsonProperty("_links")
38+
private TerminalLinks links;
39+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package be.woutschoovaerts.mollie.data.payment;
2+
3+
import com.fasterxml.jackson.annotation.JsonValue;
4+
5+
public enum TerminalStatus {
6+
PENDING,
7+
ACTIVE,
8+
INACTIVE;
9+
10+
@JsonValue
11+
public String getJsonValue() {
12+
return name().toLowerCase().replace('_', '-');
13+
}
14+
}
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
package be.woutschoovaerts.mollie.handler.payments;
2+
3+
import be.woutschoovaerts.mollie.data.common.Pagination;
4+
import be.woutschoovaerts.mollie.data.payment.TerminalListResponse;
5+
import be.woutschoovaerts.mollie.data.payment.TerminalResponse;
6+
import be.woutschoovaerts.mollie.exception.MollieException;
7+
import be.woutschoovaerts.mollie.util.RestService;
8+
import com.fasterxml.jackson.core.type.TypeReference;
9+
import kong.unirest.UnirestException;
10+
import lombok.RequiredArgsConstructor;
11+
import org.slf4j.Logger;
12+
import org.slf4j.LoggerFactory;
13+
14+
import java.io.IOException;
15+
16+
/**
17+
* Handles the Terminal API <a href="https://docs.mollie.com/reference/v2/terminals-api/overview">Mollie docs</a>
18+
*
19+
* @author Wout Schoovaerts
20+
*/
21+
// TODO: Integration test once it's out of BETA
22+
@RequiredArgsConstructor
23+
public class TerminalHandler {
24+
private static final Logger log = LoggerFactory.getLogger(TerminalHandler.class);
25+
26+
private static final TypeReference<Pagination<TerminalListResponse>> TERMINALS_LIST_RESPONSE_TYPE = new TypeReference<>() {
27+
};
28+
29+
private static final TypeReference<TerminalResponse> TERMINAL_RESPONSE_TYPE = new TypeReference<>() {
30+
};
31+
32+
private final RestService restService;
33+
34+
/**
35+
* With this endpoint you can retrieve a list of terminals symbolizing the physical devices that you have received from us. In the list you can find all the terminals linked to your organization or profile, ordered from newest to oldest.
36+
*
37+
* @return List response of TerminalListResponse objects
38+
* @throws MollieException when something went wrong
39+
*/
40+
public Pagination<TerminalListResponse> listTerminals() throws MollieException {
41+
try {
42+
String uri = "/terminals";
43+
return restService.get(uri, TERMINALS_LIST_RESPONSE_TYPE);
44+
} catch (UnirestException | IOException ex) {
45+
log.error("An unexpected exception occurred", ex);
46+
throw new MollieException(ex);
47+
}
48+
}
49+
50+
51+
/**
52+
* With this endpoint you can retrieve a single terminal object by its terminal ID. This terminal object symbolizes the physical device that you have received from us. This endpoint is not publicly available yet — please reach out to your account manager to sign up for early access.
53+
*
54+
* @param id The terminal id
55+
* @throws MollieException when something went wrong
56+
*/
57+
public TerminalResponse getTerminal(String id) throws MollieException {
58+
try {
59+
String uri = "/terminals/" + id;
60+
return restService.get(uri, TERMINAL_RESPONSE_TYPE);
61+
} catch (UnirestException | IOException ex) {
62+
log.error("An unexpected exception occurred", ex);
63+
throw new MollieException(ex);
64+
}
65+
}
66+
}

0 commit comments

Comments
 (0)