Skip to content

Commit 8e5e182

Browse files
committedSep 23, 2021
OctopusDeploy release: 1.7.43
1 parent 045e86c commit 8e5e182

File tree

15 files changed

+180
-36
lines changed

15 files changed

+180
-36
lines changed
 

‎CHANGELOG.md

+16
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,22 @@
22

33
## Latest
44

5+
#### Bug Fixes:
6+
7+
- Fix issue in v1.7.31 and up for eCheck auths on Portico/Heartland
8+
9+
---
10+
11+
## v1.7.42 (09/09/2021)
12+
13+
#### Enhancements
14+
15+
- Add Entry Mode to GpApi
16+
17+
---
18+
19+
## v1.7.42 (09/09/2021)
20+
521
#### Enhancements
622

723
- Add Dynamic Headers to GpApi

‎examples/webforms/end-to-end/Properties/AssemblyInfo.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -31,5 +31,5 @@
3131
//
3232
// You can specify all the values or you can default the Revision and Build Numbers
3333
// by using the '*' as shown below:
34-
[assembly: AssemblyVersion("1.8.2")]
35-
[assembly: AssemblyFileVersion("1.8.2")]
34+
[assembly: AssemblyVersion("1.8.4")]
35+
[assembly: AssemblyFileVersion("1.8.4")]

‎src/GlobalPayments.Api/Entities/Enums.cs

+22-1
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,28 @@ public enum EntryMethod {
168168
/// <summary>
169169
/// Indicates proximity/contactless entry.
170170
/// </summary>
171-
Proximity
171+
Proximity,
172+
}
173+
174+
/// <summary>
175+
/// Indicates how the payment method data was obtained.
176+
/// </summary>
177+
public enum ManualEntryMethod
178+
{
179+
/// <summary>
180+
/// Indicates manual entry.
181+
/// </summary>
182+
Moto,
183+
184+
/// <summary>
185+
/// Indicates swipe entry.
186+
/// </summary>
187+
Mail,
188+
189+
/// <summary>
190+
/// Indicates proximity/contactless entry.
191+
/// </summary>
192+
Phone
172193
}
173194

174195
/// <summary>

‎src/GlobalPayments.Api/Entities/GpApi/GpApiAuthorizationRequestBuilder.cs

+53-23
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ namespace GlobalPayments.Api.Entities {
99
internal class GpApiAuthorizationRequestBuilder {
1010
internal static GpApiRequest BuildRequest(AuthorizationBuilder builder, GpApiConnector gateway) {
1111
var paymentMethod = new JsonDoc()
12-
.Set("entry_mode", GetEntryMode(builder)); // [MOTO, ECOM, IN_APP, CHIP, SWIPE, MANUAL, CONTACTLESS_CHIP, CONTACTLESS_SWIPE]
12+
.Set("entry_mode", GetEntryMode(builder, gateway.Channel)); // [MOTO, ECOM, IN_APP, CHIP, SWIPE, MANUAL, CONTACTLESS_CHIP, CONTACTLESS_SWIPE]
1313
if (builder.PaymentMethod is CreditCardData && (builder.TransactionModifier == TransactionModifier.EncryptedMobile || builder.TransactionModifier == TransactionModifier.DecryptedMobile))
1414
{
1515
var digitalWallet = new JsonDoc();
@@ -100,7 +100,7 @@ internal static GpApiRequest BuildRequest(AuthorizationBuilder builder, GpApiCon
100100
if (builder.PaymentMethod is ITokenizable && !string.IsNullOrEmpty((builder.PaymentMethod as ITokenizable).Token)) {
101101
verificationData.Remove("payment_method");
102102
verificationData.Set("payment_method", new JsonDoc()
103-
.Set("entry_mode", GetEntryMode(builder))
103+
.Set("entry_mode", GetEntryMode(builder, gateway.Channel))
104104
.Set("id", (builder.PaymentMethod as ITokenizable).Token)
105105
);
106106
}
@@ -273,6 +273,57 @@ internal static GpApiRequest BuildRequest(AuthorizationBuilder builder, GpApiCon
273273
};
274274
}
275275

276+
private static string GetEntryMode(AuthorizationBuilder builder,Channel channel)
277+
{
278+
if (channel == Channel.CardPresent)
279+
{
280+
if (builder.PaymentMethod is ITrackData) {
281+
var paymentMethod = (ITrackData)builder.PaymentMethod;
282+
if (builder.TagData != null)
283+
{
284+
if (paymentMethod.EntryMethod == EntryMethod.Proximity)
285+
{
286+
return "CONTACTLESS_CHIP";
287+
}
288+
return "CHIP";
289+
}
290+
if (paymentMethod.EntryMethod == EntryMethod.Swipe)
291+
{
292+
return "SWIPE";
293+
}
294+
}
295+
if (builder.PaymentMethod is ICardData && ((ICardData)builder.PaymentMethod).CardPresent)
296+
{
297+
return "MANUAL";
298+
}
299+
return "SWIPE";
300+
} else
301+
{
302+
if (builder.PaymentMethod is ICardData)
303+
{
304+
var paymentMethod = (ICardData)builder.PaymentMethod;
305+
if (paymentMethod.ReaderPresent)
306+
{
307+
return "ECOM";
308+
}
309+
else
310+
{
311+
switch (paymentMethod?.EntryMethod) {
312+
case ManualEntryMethod.Phone:
313+
return "PHONE";
314+
case ManualEntryMethod.Moto:
315+
return "MOTO";
316+
case ManualEntryMethod.Mail:
317+
return "MAIL";
318+
default:
319+
break;
320+
}
321+
}
322+
}
323+
return "ECOM";
324+
}
325+
}
326+
276327
private static string GetEci(CreditCardData creditCardData)
277328
{
278329

@@ -300,27 +351,6 @@ private static string GetEci(CreditCardData creditCardData)
300351

301352
}
302353

303-
private static string GetEntryMode(AuthorizationBuilder builder) {
304-
if (builder.PaymentMethod is ICardData card) {
305-
if (card.ReaderPresent) {
306-
return card.CardPresent ? "MANUAL" : "IN_APP";
307-
}
308-
else {
309-
return card.CardPresent ? "MANUAL" : "ECOM";
310-
}
311-
}
312-
else if (builder.PaymentMethod is ITrackData track) {
313-
if (builder.TagData != null) {
314-
return track.EntryMethod.Equals(EntryMethod.Swipe) ? "CHIP" : "CONTACTLESS_CHIP";
315-
}
316-
else if (builder.HasEmvFallbackData) {
317-
return "CONTACTLESS_SWIPE";
318-
}
319-
return "SWIPE";
320-
}
321-
return "ECOM";
322-
}
323-
324354
private static string GetCaptureMode(AuthorizationBuilder builder) {
325355
if (builder.MultiCapture) {
326356
return "MULTIPLE";

‎src/GlobalPayments.Api/Gateways/PorticoConnector.cs

+2-1
Original file line numberDiff line numberDiff line change
@@ -294,7 +294,8 @@ public Transaction ProcessAuthorization(AuthorizationBuilder builder) {
294294
}
295295

296296
// set token flag
297-
if (builder.PaymentMethod is ITokenizable) {
297+
// eCheck cannot be tokenized w/Portico Gateway
298+
if (builder.PaymentMethod is ITokenizable && !(builder.PaymentMethod is eCheck)) {
298299
et.SubElement(cardData, "TokenRequest").Text(builder.RequestMultiUseToken ? "Y" : "N");
299300
}
300301

‎src/GlobalPayments.Api/PaymentMethods/CreditCardData.cs

+2
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,8 @@ public string Number {
6969
}
7070
}
7171

72+
public ManualEntryMethod? EntryMethod { get; set; }
73+
7274
/// <summary>
7375
/// The card's expiration month.
7476
/// </summary>

‎src/GlobalPayments.Api/PaymentMethods/EBTCardData.cs

+1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ public class EBTCardData : EBT, ICardData {
1515
public string Number { get; set; }
1616
public bool ReaderPresent { get; set; }
1717
public string SerialNumber { get; set; }
18+
public ManualEntryMethod? EntryMethod { get; set; }
1819
public string ShortExpiry {
1920
get {
2021
var month = (ExpMonth.HasValue) ? ExpMonth.ToString().PadLeft(2, '0') : string.Empty;

‎src/GlobalPayments.Api/PaymentMethods/EwicCardData.cs

+1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ public class EwicCardData : Ewic, ICardData
1515
public int? ExpMonth { get; set ; }
1616
public int? ExpYear { get; set; }
1717
public bool ReaderPresent { get; set; }
18+
public ManualEntryMethod? EntryMethod { get; set; }
1819

1920
public string ShortExpiry => throw new NotImplementedException();
2021
}

‎src/GlobalPayments.Api/PaymentMethods/PaymentInterfaces/ICardData.cs

+1
Original file line numberDiff line numberDiff line change
@@ -11,5 +11,6 @@ public interface ICardData {
1111
int? ExpYear { get; set; }
1212
bool ReaderPresent { get; set; }
1313
string ShortExpiry { get; }
14+
ManualEntryMethod? EntryMethod { get; set; }
1415
}
1516
}

‎src/GlobalPayments.Api/Properties/AssemblyInfo.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -32,5 +32,5 @@
3232
// You can specify all the values or you can default the Build and Revision Numbers
3333
// by using the '*' as shown below:
3434
// [assembly: AssemblyVersion("1.0.*")]
35-
[assembly: AssemblyVersion("1.8.2")]
36-
[assembly: AssemblyFileVersion("1.8.2")]
35+
[assembly: AssemblyVersion("1.8.4")]
36+
[assembly: AssemblyFileVersion("1.8.4")]

‎tests/GlobalPayments.Api.Tests/GpApi/GpApiBatchTests.cs

+2
Original file line numberDiff line numberDiff line change
@@ -236,6 +236,7 @@ public void CloseBatch_WithCardNumberDetails() {
236236
ExpMonth = 05,
237237
ExpYear = 2025,
238238
Cvn = "123",
239+
CardPresent = true
239240
};
240241

241242
var chargeTransaction = card.Charge(1.99m)
@@ -257,6 +258,7 @@ public void CloseBatch_WithCardNumberDetails_DeclinedTransaction() {
257258
ExpMonth = 05,
258259
ExpYear = 2025,
259260
Cvn = "852",
261+
CardPresent = true
260262
};
261263

262264
var chargeTransaction = card.Charge(1.99m)

‎tests/GlobalPayments.Api.Tests/GpApi/GpApiCreditTests.cs

+68-1
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ public void TestInitialize() {
3535
ExpMonth = 05,
3636
ExpYear = 2025,
3737
Cvn = "852",
38+
CardPresent = true
3839
};
3940
}
4041

@@ -647,13 +648,79 @@ public void CreditVerify_CP() {
647648
}
648649

649650
[TestMethod]
651+
public void CreditSaleWithManualEntryMethod()
652+
{
653+
foreach (Channel channel in Enum.GetValues(typeof(Channel)))
654+
{
655+
foreach (ManualEntryMethod entryMethod in Enum.GetValues(typeof(ManualEntryMethod)))
656+
{
657+
ServicesContainer.ConfigureService(new GpApiConfig
658+
{
659+
Environment = Entities.Environment.TEST,
660+
AppId = "JF2GQpeCrOivkBGsTRiqkpkdKp67Gxi0",
661+
AppKey = "y7vALnUtFulORlTV",
662+
SecondsToExpire = 60,
663+
Channel = channel,
664+
RequestLogger = new RequestConsoleLogger()
665+
});
666+
card.Cvn = "123";
667+
card.EntryMethod = entryMethod;
668+
669+
var response = card.Charge(11m)
670+
.WithCurrency("USD")
671+
.Execute();
672+
673+
Assert.IsNotNull(response);
674+
Assert.AreEqual(SUCCESS, response?.ResponseCode);
675+
Assert.AreEqual("CAPTURED", response?.ResponseMessage);
676+
677+
}
678+
}
679+
}
680+
681+
[TestMethod]
682+
public void CreditSaleWithEntryMethod()
683+
{
684+
foreach (EntryMethod entryMethod in Enum.GetValues(typeof(EntryMethod)))
685+
{
686+
ServicesContainer.ConfigureService(new GpApiConfig
687+
{
688+
Environment = Entities.Environment.TEST,
689+
AppId = "JF2GQpeCrOivkBGsTRiqkpkdKp67Gxi0",
690+
AppKey = "y7vALnUtFulORlTV",
691+
SecondsToExpire = 60,
692+
Channel = Channel.CardPresent,
693+
RequestLogger = new RequestConsoleLogger()
694+
});
695+
696+
var creditTrackData = new CreditTrackData
697+
{
698+
TrackData =
699+
"%B4012002000060016^VI TEST CREDIT^251210118039000000000396?;4012002000060016=25121011803939600000?",
700+
EntryMethod = entryMethod
701+
};
702+
703+
var response = creditTrackData.Charge(11m)
704+
.WithCurrency("USD")
705+
.Execute();
706+
707+
Assert.IsNotNull(response);
708+
Assert.AreEqual(SUCCESS, response?.ResponseCode);
709+
Assert.AreEqual("CAPTURED", response?.ResponseMessage);
710+
711+
}
712+
}
713+
714+
[TestMethod, Ignore]
715+
//To be removed
650716
public void CreditVerify_CP_CVNNotMatched() {
651717
ServicesContainer.ConfigureService(new GpApiConfig {
652718
Environment = Entities.Environment.TEST,
653719
AppId = "JF2GQpeCrOivkBGsTRiqkpkdKp67Gxi0",
654720
AppKey = "y7vALnUtFulORlTV",
655721
SecondsToExpire = 60,
656-
Channel = Channel.CardPresent
722+
Channel = Channel.CardPresent,
723+
RequestLogger = new RequestConsoleLogger(),
657724
});
658725
var response = card.Verify()
659726
.WithCurrency("USD")

‎tests/GlobalPayments.Api.Tests/GpApi/GpApiDebitTests.cs

+2-1
Original file line numberDiff line numberDiff line change
@@ -387,7 +387,8 @@ private static CreditCardData InitializeCreditCardData() {
387387
ExpMonth = DateTime.Now.Month,
388388
ExpYear = DateTime.Now.Year + 1,
389389
Cvn = "123",
390-
CardHolderName = "John Smith"
390+
CardHolderName = "John Smith",
391+
CardPresent = true
391392
};
392393

393394
return card;

‎tests/GlobalPayments.Api.Tests/GpApi/GpApiDigitalWalletTests.cs

+4-4
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ public void PayWithDecryptedFlow()
8484
[TestMethod]
8585
public void PayWithGooglePayEncrypted()
8686
{
87-
card.Token = "{\"signature\": \"MEUCIBIVOWdzNCngMnVzt3puh3538CpA66lRPqfEsPMEwVn2AiEAtT3NsjFMcvseKCgtTKZLoVlMYsnlgwgvbZLm9Sm0WK8=\",\"protocolVersion\": \"ECv1\",\"signedMessage\": \"{\\\"encryptedMessage\\\":\\\"jUzgICpwU5OtRSS+nDh9kEGZViqylerkdzIRbmOidf/IQXpKzFeMdCO6QoBAVCX4PLreJ+s8h/l2Czm4VxbiSWHdTOwW03iCnkxohKx00KePanypfI0zg8XO/EOauK3LNHvFFwOnCj9GbL35p21R/lEImXWiiMtXMGwlW2fNJQcB/fiOwkwX4dAVOQspQoYvBwLci/PBIGl91MJfYicTG27MhXHCjNjpwivuzhdPGDps23gLojzhKNBjfsEFwnzreAIhZcBaKsI7lGBBzBJHgR5dkB4fh6odb6Dr4AxUndqg9QgPoKy9m51FWWnycppPPmNPao2rAKndWXWvQ82YEdlyGJUG1bstsWeGmipGowXjiDIhaOdJEzXS1FtA0tSkrPB4Bt9da6ehS0HLOT0129c1Otj8bYsMMMuYczV6Co2QPK3B0+6kkqdoXaxOIc4bxZKh\\\",\\\"ephemeralPublicKey\\\":\\\"BPNqktib5dgo1tX4YWoUVqp/I/wEN5O+1exJjbSRj556mtVR3fkxQjvdIOmlm1+Vmj/cRNkuS2i3246cMTfjWuI\\\\u003d\\\",\\\"tag\\\":\\\"JDMNgNq8BGryVrt5bRMYHXjX+CVcuFYS3w3nmfkIHEA\\\\u003d\\\"}\"}";
87+
card.Token = "{\"signature\": \"MEUCIA2qsciCz8TbEip0DQj+MlepsY4c+lPviHZKDGiXjXA7AiEAqT4VMRuBaCbUBg+3VKNsT8wMk4JMH0grQfs+FvUfh7g=\",\"protocolVersion\":\"ECv1\",\"signedMessage\":\"{\\\"encryptedMessage\\\":\\\"W95GDp6cr6EdVF/636k7WwGDE7OnckY8BvDSREcuBknWklR2OQ18m0ep56XvnZ5WE+Fxeux5bYbJ2so0uhg2v831eyZ+JAMPTdtZnYBKaYa6Sb5/yMPXxqgxyxJTDzGf4jK6MCS2ZNd3ixNjAJEJlO2h0IstbMTkosaqLwpBu8ccXiCiX7aKOJlJvocNz6ZdMEvutg6D/NeCTbXPp+rg6CFCdM5WT83QBudKCys9cczVky+UKe482o+BBVcPFkkTXeobp1pfN+6C2W/afLwRev7KMaio5cu1xxnoWZp+NhXqGCGK0CP93cP/KwIx8WcPl9JgwVLbxhRvBuwuMn3HRiJOQtPTMvK7qhlb2D8fjRqucrtbkANUJ5oSvq93KYLeZCVL+q0lEmeTkQT6ijnecw0uZJux3FEWNPr9z7t3CFRPZxKDaBU94J6MCaiA4Ab6LyD8\\\",\\\"ephemeralPublicKey\\\":\\\"BGCfvboHSFYyWBHQGmAe9HU3os4yESDytXEBLDqocF6EFx6P2tqMve+wIgg31dNAv4PMg1S0ccv8JLPQMxsIeLE\\\\u003d\\\",\\\"tag\\\":\\\"lglkIFne4g8KFQep85vO6wSzzw+olmJ3aUTqy98k7HE\\\\u003d\\\"}\"}";
8888
card.MobileType = EncyptedMobileType.GOOGLE_PAY;
8989

9090
var transaction = card.Charge(10m)
@@ -101,7 +101,7 @@ public void PayWithGooglePayEncrypted()
101101
[TestMethod]
102102
public void GooglePayEncrypted_LinkedRefund()
103103
{
104-
card.Token = "{\"signature\": \"MEUCIBIVOWdzNCngMnVzt3puh3538CpA66lRPqfEsPMEwVn2AiEAtT3NsjFMcvseKCgtTKZLoVlMYsnlgwgvbZLm9Sm0WK8=\",\"protocolVersion\": \"ECv1\",\"signedMessage\": \"{\\\"encryptedMessage\\\":\\\"jUzgICpwU5OtRSS+nDh9kEGZViqylerkdzIRbmOidf/IQXpKzFeMdCO6QoBAVCX4PLreJ+s8h/l2Czm4VxbiSWHdTOwW03iCnkxohKx00KePanypfI0zg8XO/EOauK3LNHvFFwOnCj9GbL35p21R/lEImXWiiMtXMGwlW2fNJQcB/fiOwkwX4dAVOQspQoYvBwLci/PBIGl91MJfYicTG27MhXHCjNjpwivuzhdPGDps23gLojzhKNBjfsEFwnzreAIhZcBaKsI7lGBBzBJHgR5dkB4fh6odb6Dr4AxUndqg9QgPoKy9m51FWWnycppPPmNPao2rAKndWXWvQ82YEdlyGJUG1bstsWeGmipGowXjiDIhaOdJEzXS1FtA0tSkrPB4Bt9da6ehS0HLOT0129c1Otj8bYsMMMuYczV6Co2QPK3B0+6kkqdoXaxOIc4bxZKh\\\",\\\"ephemeralPublicKey\\\":\\\"BPNqktib5dgo1tX4YWoUVqp/I/wEN5O+1exJjbSRj556mtVR3fkxQjvdIOmlm1+Vmj/cRNkuS2i3246cMTfjWuI\\\\u003d\\\",\\\"tag\\\":\\\"JDMNgNq8BGryVrt5bRMYHXjX+CVcuFYS3w3nmfkIHEA\\\\u003d\\\"}\"}";
104+
card.Token = "{\"signature\": \"MEUCIA2qsciCz8TbEip0DQj+MlepsY4c+lPviHZKDGiXjXA7AiEAqT4VMRuBaCbUBg+3VKNsT8wMk4JMH0grQfs+FvUfh7g=\",\"protocolVersion\":\"ECv1\",\"signedMessage\":\"{\\\"encryptedMessage\\\":\\\"W95GDp6cr6EdVF/636k7WwGDE7OnckY8BvDSREcuBknWklR2OQ18m0ep56XvnZ5WE+Fxeux5bYbJ2so0uhg2v831eyZ+JAMPTdtZnYBKaYa6Sb5/yMPXxqgxyxJTDzGf4jK6MCS2ZNd3ixNjAJEJlO2h0IstbMTkosaqLwpBu8ccXiCiX7aKOJlJvocNz6ZdMEvutg6D/NeCTbXPp+rg6CFCdM5WT83QBudKCys9cczVky+UKe482o+BBVcPFkkTXeobp1pfN+6C2W/afLwRev7KMaio5cu1xxnoWZp+NhXqGCGK0CP93cP/KwIx8WcPl9JgwVLbxhRvBuwuMn3HRiJOQtPTMvK7qhlb2D8fjRqucrtbkANUJ5oSvq93KYLeZCVL+q0lEmeTkQT6ijnecw0uZJux3FEWNPr9z7t3CFRPZxKDaBU94J6MCaiA4Ab6LyD8\\\",\\\"ephemeralPublicKey\\\":\\\"BGCfvboHSFYyWBHQGmAe9HU3os4yESDytXEBLDqocF6EFx6P2tqMve+wIgg31dNAv4PMg1S0ccv8JLPQMxsIeLE\\\\u003d\\\",\\\"tag\\\":\\\"lglkIFne4g8KFQep85vO6wSzzw+olmJ3aUTqy98k7HE\\\\u003d\\\"}\"}";
105105
card.MobileType = EncyptedMobileType.GOOGLE_PAY;
106106

107107
var transaction = card.Charge(10m)
@@ -124,10 +124,10 @@ public void GooglePayEncrypted_LinkedRefund()
124124
[TestMethod]
125125
public void GooglePayEncrypted_Reverse()
126126
{
127-
card.Token = "{\"signature\": \"MEUCIBIVOWdzNCngMnVzt3puh3538CpA66lRPqfEsPMEwVn2AiEAtT3NsjFMcvseKCgtTKZLoVlMYsnlgwgvbZLm9Sm0WK8=\",\"protocolVersion\": \"ECv1\",\"signedMessage\": \"{\\\"encryptedMessage\\\":\\\"jUzgICpwU5OtRSS+nDh9kEGZViqylerkdzIRbmOidf/IQXpKzFeMdCO6QoBAVCX4PLreJ+s8h/l2Czm4VxbiSWHdTOwW03iCnkxohKx00KePanypfI0zg8XO/EOauK3LNHvFFwOnCj9GbL35p21R/lEImXWiiMtXMGwlW2fNJQcB/fiOwkwX4dAVOQspQoYvBwLci/PBIGl91MJfYicTG27MhXHCjNjpwivuzhdPGDps23gLojzhKNBjfsEFwnzreAIhZcBaKsI7lGBBzBJHgR5dkB4fh6odb6Dr4AxUndqg9QgPoKy9m51FWWnycppPPmNPao2rAKndWXWvQ82YEdlyGJUG1bstsWeGmipGowXjiDIhaOdJEzXS1FtA0tSkrPB4Bt9da6ehS0HLOT0129c1Otj8bYsMMMuYczV6Co2QPK3B0+6kkqdoXaxOIc4bxZKh\\\",\\\"ephemeralPublicKey\\\":\\\"BPNqktib5dgo1tX4YWoUVqp/I/wEN5O+1exJjbSRj556mtVR3fkxQjvdIOmlm1+Vmj/cRNkuS2i3246cMTfjWuI\\\\u003d\\\",\\\"tag\\\":\\\"JDMNgNq8BGryVrt5bRMYHXjX+CVcuFYS3w3nmfkIHEA\\\\u003d\\\"}\"}";
127+
card.Token = "{\"signature\": \"MEUCIA2qsciCz8TbEip0DQj+MlepsY4c+lPviHZKDGiXjXA7AiEAqT4VMRuBaCbUBg+3VKNsT8wMk4JMH0grQfs+FvUfh7g=\",\"protocolVersion\":\"ECv1\",\"signedMessage\":\"{\\\"encryptedMessage\\\":\\\"W95GDp6cr6EdVF/636k7WwGDE7OnckY8BvDSREcuBknWklR2OQ18m0ep56XvnZ5WE+Fxeux5bYbJ2so0uhg2v831eyZ+JAMPTdtZnYBKaYa6Sb5/yMPXxqgxyxJTDzGf4jK6MCS2ZNd3ixNjAJEJlO2h0IstbMTkosaqLwpBu8ccXiCiX7aKOJlJvocNz6ZdMEvutg6D/NeCTbXPp+rg6CFCdM5WT83QBudKCys9cczVky+UKe482o+BBVcPFkkTXeobp1pfN+6C2W/afLwRev7KMaio5cu1xxnoWZp+NhXqGCGK0CP93cP/KwIx8WcPl9JgwVLbxhRvBuwuMn3HRiJOQtPTMvK7qhlb2D8fjRqucrtbkANUJ5oSvq93KYLeZCVL+q0lEmeTkQT6ijnecw0uZJux3FEWNPr9z7t3CFRPZxKDaBU94J6MCaiA4Ab6LyD8\\\",\\\"ephemeralPublicKey\\\":\\\"BGCfvboHSFYyWBHQGmAe9HU3os4yESDytXEBLDqocF6EFx6P2tqMve+wIgg31dNAv4PMg1S0ccv8JLPQMxsIeLE\\\\u003d\\\",\\\"tag\\\":\\\"lglkIFne4g8KFQep85vO6wSzzw+olmJ3aUTqy98k7HE\\\\u003d\\\"}\"}";
128128
card.MobileType = EncyptedMobileType.GOOGLE_PAY;
129129

130-
var transaction = card.Charge(10m)
130+
var transaction = card.Charge(10m)
131131
.WithCurrency("EUR")
132132
.WithModifier(TransactionModifier.EncryptedMobile)
133133
.Execute();

‎tests/GlobalPayments.Api.Tests/GpApi/GpApiEbtTests.cs

+2-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,8 @@ public void TestInitialize() {
2727
ExpMonth = 12,
2828
ExpYear = 2025,
2929
PinBlock = "32539F50C245A6A93D123412324000AA",
30-
CardHolderName = "Jane Doe"
30+
CardHolderName = "Jane Doe",
31+
CardPresent = true
3132
};
3233

3334
ebtTrackData = new EBTTrackData {

0 commit comments

Comments
 (0)
Please sign in to comment.