Skip to content

Commit b242662

Browse files
OctopusDeploy release: 14.2.20
1 parent e4eba5e commit b242662

File tree

9 files changed

+331
-3
lines changed

9 files changed

+331
-3
lines changed

CHANGELOG.md

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
# Changelog
22

3-
## Latest Version - V14.2.19 (05/20/2025)
3+
## Latest Version - V14.2.20 (05/29/2025)
4+
### Enhancements
5+
- [GPApi] - Added Installment Object in Create Sale API (POST /transactions)
6+
- [GPApi] - Added Installment Object in Reporting API (GET /transactions & GET /transactions/{id})
7+
8+
## V14.2.19 (05/20/2025)
49
### Bug Fixes
510
- [NTS] - Reverted code to add back the EMV data into Retransmit transactions(Issue -10356).
611

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<modelVersion>4.0.0</modelVersion>
44
<groupId>com.heartlandpaymentsystems</groupId>
55
<artifactId>globalpayments-sdk</artifactId>
6-
<version>14.2.19</version>
6+
<version>14.2.20</version>
77
<packaging>jar</packaging>
88
<name>Heartland &amp; Global Payments SDK</name>
99
<description>API for processing payments through Global Payments</description>

src/main/java/com/global/api/builders/AuthorizationBuilder.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -203,6 +203,10 @@ public AuthorizationBuilder withNtsUtilityMessageRequest(NtsUtilityMessageReques
203203

204204
public boolean requestUniqueToken;
205205

206+
@Getter
207+
@Setter
208+
private InstallmentData installmentData;
209+
206210
public AuthorizationBuilder withNtsProductData(NtsProductData ntsProductData) {
207211
this.ntsProductData = ntsProductData;
208212
return this;
@@ -261,6 +265,11 @@ public AuthorizationBuilder withPurchaseRestrictionFlag(PurchaseRestrictionFlag
261265
return this;
262266
}
263267

268+
public AuthorizationBuilder withInstallmentData(InstallmentData installmentData) {
269+
this.installmentData = installmentData;
270+
return this;
271+
}
272+
264273
public String getAlias() {
265274
return alias;
266275
}

src/main/java/com/global/api/builders/requestbuilder/gpApi/GpApiAuthorizationRequestBuilder.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -690,6 +690,10 @@ else if (builderPaymentMethod instanceof ITrackData) {
690690
.set("reason", EnumUtils.getMapping(Target.GP_API, builder.getStoredCredential().getReason()))
691691
.set("sequence", EnumUtils.getMapping(Target.GP_API, builder.getStoredCredential().getSequence()));
692692
data.set("stored_credential", storedCredential);
693+
//set installment data
694+
if(builder.getInstallmentData() != null && builder.getStoredCredential().getType().equals(StoredCredentialType.Installment)) {
695+
data.set("installment", setInstallmentData(builder.getInstallmentData()));
696+
}
693697
}
694698

695699
return (GpApiRequest)
@@ -1104,4 +1108,14 @@ private static String getChipCondition(EmvChipCondition emvChipCondition) {
11041108
}
11051109
}
11061110

1111+
private static JsonDoc setInstallmentData(InstallmentData installmentData)
1112+
{
1113+
JsonDoc installment = new JsonDoc();
1114+
installment
1115+
.set("program", installmentData.getProgram())
1116+
.set("mode", installmentData.getMode())
1117+
.set("count", installmentData.getCount())
1118+
.set("grace_period_count", installmentData.getGracePeriodCount());
1119+
return installment;
1120+
}
11071121
}

src/main/java/com/global/api/entities/Transaction.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import com.global.api.network.enums.nts.PendingRequestIndicator;
2121
import com.global.api.paymentMethods.GiftCard;
2222
import com.global.api.paymentMethods.IPaymentMethod;
23+
import com.global.api.paymentMethods.InstallmentData;
2324
import com.global.api.paymentMethods.TransactionReference;
2425
import lombok.Getter;
2526
import lombok.Setter;
@@ -120,6 +121,8 @@ public class Transaction {
120121
private Address address;
121122
private Customer customerData;
122123
private TokenData tokenData;
124+
@Getter @Setter
125+
private InstallmentData installmentData;
123126

124127
public Customer getCustomerData() {
125128
return customerData;

src/main/java/com/global/api/entities/TransactionSummary.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import com.global.api.entities.billing.Bill;
55
import com.global.api.entities.reporting.AltPaymentData;
66
import com.global.api.entities.reporting.CheckData;
7+
import com.global.api.paymentMethods.InstallmentData;
78
import lombok.Getter;
89
import lombok.Setter;
910
import org.joda.time.DateTime;
@@ -154,5 +155,5 @@ public class TransactionSummary {
154155
private String cardAcquisition;
155156
private String transactionTime;
156157
private Card cardDetails;
157-
158+
private InstallmentData installmentData;
158159
}

src/main/java/com/global/api/mapping/GpApiMapping.java

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import com.global.api.entities.payFac.UserReference;
1313
import com.global.api.entities.reporting.*;
1414
import com.global.api.paymentMethods.CreditCardData;
15+
import com.global.api.paymentMethods.InstallmentData;
1516
import com.global.api.paymentMethods.RecurringPaymentMethod;
1617
import com.global.api.paymentMethods.eCheck;
1718
import com.global.api.utils.EnumUtils;
@@ -157,6 +158,9 @@ public static Transaction mapResponse(String rawResponse) throws GatewayExceptio
157158
var cardDetails = new Card();
158159
cardDetails.setMaskedNumberLast4(paymentMethodObj.getString("masked_number_last4"));
159160
cardDetails.setBrand(paymentMethodObj.getString("brand"));
161+
cardDetails.setIssuer(paymentMethodObj.getString("issuer"));
162+
cardDetails.setFunding(paymentMethodObj.getString("funding"));
163+
cardDetails.setBinCountry(paymentMethodObj.getString("country"));
160164
transaction.setCardDetails(cardDetails);
161165

162166
transaction.setCardType(paymentMethodObj.getString("brand"));
@@ -252,6 +256,11 @@ public static Transaction mapResponse(String rawResponse) throws GatewayExceptio
252256

253257
transaction.setCardDetails(cardDetail);
254258
}
259+
260+
if (json.has("installment")) {
261+
JsonDoc installment = json.get("installment");
262+
transaction.setInstallmentData(setInstallmentData(installment));
263+
}
255264
}
256265

257266
return transaction;
@@ -510,6 +519,10 @@ public static TransactionSummary mapTransactionSummary(JsonDoc doc) throws Gatew
510519
summary.setPaymentType(EnumUtils.getMapping(Target.GP_API, PaymentMethodName.BNPL));
511520
}
512521
}
522+
if(doc.has("installment")){
523+
JsonDoc installment = doc.get("installment");
524+
summary.setInstallmentData(setInstallmentData(installment));
525+
}
513526

514527
summary.setFraudManagementResponse(doc.has("risk_assessment") ? mapFraudManagementReport(doc.get("risk_assessment")) : null);
515528

@@ -1672,6 +1685,7 @@ private static ThreeDSecure map3DSInfo(JsonDoc response) {
16721685
threeDSecure.setCavv(threeDSNode.getString("cavv_result"));
16731686
threeDSecure.setMessageVersion(threeDSNode.getString("message_version"));
16741687
threeDSecure.setEci(threeDSNode.getString("eci"));
1688+
threeDSecure.setStatus(threeDSNode.getString("status"));
16751689
}
16761690

16771691
return threeDSecure;
@@ -1683,7 +1697,18 @@ private static Card mapCardDetails(JsonDoc cardInfo) {
16831697
cardDetails.setFunding(cardInfo.getString("funding"));
16841698
cardDetails.setBrand(cardInfo.getString("brand"));
16851699
cardDetails.setIssuer(cardInfo.getString("issuer"));
1700+
cardDetails.setBinCountry(cardInfo.getString("country"));
16861701

16871702
return cardDetails;
16881703
}
1704+
1705+
private static InstallmentData setInstallmentData(JsonDoc installment)
1706+
{
1707+
var installmentData = new InstallmentData();
1708+
installmentData.setProgram(installment.getString("program"));
1709+
installmentData.setMode(installment.getString("mode"));
1710+
installmentData.setCount(installment.getString("count"));
1711+
installmentData.setGracePeriodCount(installment.getString("grace_period_count"));
1712+
return installmentData;
1713+
}
16891714
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package com.global.api.paymentMethods;
2+
3+
import lombok.Getter;
4+
import lombok.Setter;
5+
6+
public class InstallmentData {
7+
//Indicates the installment payment plan program.
8+
@Getter @Setter private String program;
9+
//Indicates the mode of the Installment plan choosen
10+
@Getter @Setter private String mode;
11+
//Indicates the total number of payments to be made over the course of the installment payment plan.
12+
@Getter @Setter private String count;
13+
//Indicates the grace period before the first payment.
14+
@Getter @Setter private String gracePeriodCount;
15+
16+
}

0 commit comments

Comments
 (0)