Skip to content

Commit b46c1de

Browse files
authored
Merge pull request #1099 from Adyen/DR-1093-Added-key-version-function-renames
SaleToPOIMessageConverter fix: Added key-version and function renames for consistency
2 parents 901250b + 406a1ad commit b46c1de

File tree

2 files changed

+36
-21
lines changed

2 files changed

+36
-21
lines changed

Adyen.Test/SerializerTest.cs

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -93,15 +93,15 @@ public void CheckoutSessionResponseCheckForIdTest()
9393
[TestMethod]
9494
public void SaleToPoiMessageSerializationTest()
9595
{
96-
var saleToPoiMessage = PosPaymentRequest;
97-
var serialized = SerializeSaleToPoiMessage(saleToPoiMessage);
96+
SaleToPOIRequest saleToPoiMessage = CreatePosPaymentRequest();
97+
string serialized = SerializeSaleToPoiMessage(saleToPoiMessage);
9898
Assert.AreEqual(serialized, ExpectedSaleToPoiMessageJson);
9999
}
100100

101101
[TestMethod]
102102
public void SaleToPoiMessageWithUpdatedJsonConvertDefaultSettingsSerializationTest()
103103
{
104-
var saleToPoiMessage = PosPaymentRequest;
104+
SaleToPOIRequest saleToPoiMessage = CreatePosPaymentRequest();
105105

106106
JsonConvert.DefaultSettings = () => new JsonSerializerSettings
107107
{
@@ -111,10 +111,9 @@ public void SaleToPoiMessageWithUpdatedJsonConvertDefaultSettingsSerializationTe
111111
}
112112
};
113113

114+
string serialized = SerializeSaleToPoiMessage(saleToPoiMessage);
114115
try
115116
{
116-
var serialized = SerializeSaleToPoiMessage(saleToPoiMessage);
117-
118117
Assert.AreEqual(serialized, ExpectedSaleToPoiMessageJson);
119118
}
120119
finally
@@ -126,15 +125,15 @@ public void SaleToPoiMessageWithUpdatedJsonConvertDefaultSettingsSerializationTe
126125
[TestMethod]
127126
public void SaleToPoiMessageSecuredSerializationTest()
128127
{
129-
var saleToPoiMessage = PosPaymentRequest;
130-
var serialized = SerializeSaleToPoiMessageSecured(saleToPoiMessage);
128+
SaleToPOIRequest saleToPoiMessage = CreatePosPaymentRequest();
129+
string serialized = SerializeSaleToPoiMessageSecured(saleToPoiMessage);
131130
Assert.AreEqual(serialized, ExpectedSaleToPoiMessageSecuredJson);
132131
}
133132

134133
[TestMethod]
135134
public void SaleToPoiMessageSecuredWithUpdatedJsonConvertDefaultSettingsSerializationTest()
136135
{
137-
var saleToPoiMessage = PosPaymentRequest;
136+
SaleToPOIRequest saleToPoiMessage = CreatePosPaymentRequest();
138137

139138
JsonConvert.DefaultSettings = () => new JsonSerializerSettings
140139
{
@@ -146,7 +145,7 @@ public void SaleToPoiMessageSecuredWithUpdatedJsonConvertDefaultSettingsSerializ
146145

147146
try
148147
{
149-
var serialized = SerializeSaleToPoiMessageSecured(saleToPoiMessage);
148+
string serialized = SerializeSaleToPoiMessageSecured(saleToPoiMessage);
150149

151150
Assert.AreEqual(serialized, ExpectedSaleToPoiMessageSecuredJson);
152151
}
@@ -167,7 +166,6 @@ private static string SerializeSaleToPoiMessage(SaleToPOIMessage saleToPoiMessag
167166
return saleToPoiMessageSerializer.Serialize(saleToPoiMessage);
168167
}
169168

170-
171169
private static string SerializeSaleToPoiMessageSecured(SaleToPOIMessage saleToPoiMessage)
172170
{
173171
var saleToPoiMessageSerializer = new SaleToPoiMessageSerializer();
@@ -176,6 +174,7 @@ private static string SerializeSaleToPoiMessageSecured(SaleToPOIMessage saleToPo
176174
var encryptionCredentialDetails = new EncryptionCredentialDetails
177175
{
178176
AdyenCryptoVersion = 1,
177+
KeyVersion = 1,
179178
KeyIdentifier = "CryptoKeyIdentifier12345",
180179
Password = "p@ssw0rd123456"
181180
};
@@ -192,8 +191,9 @@ private static string SerializeSaleToPoiMessageSecured(SaleToPOIMessage saleToPo
192191
return saleToPoiMessageSerializer.Serialize(saleToPoiMessageSecured);
193192
}
194193

195-
private static SaleToPOIRequest PosPaymentRequest =>
196-
new SaleToPOIRequest
194+
private static SaleToPOIRequest CreatePosPaymentRequest()
195+
{
196+
return new SaleToPOIRequest
197197
{
198198
MessageHeader = new MessageHeader
199199
{
@@ -229,11 +229,10 @@ private static string SerializeSaleToPoiMessageSecured(SaleToPOIMessage saleToPo
229229
}
230230
}
231231
};
232+
}
232233

233-
private static string ExpectedSaleToPoiMessageJson =>
234-
"{\"SaleToPOIRequest\":{\"MessageHeader\":{\"MessageClass\":\"Service\",\"MessageCategory\":\"Payment\",\"MessageType\":\"Request\",\"ServiceID\":\"12345678\",\"SaleID\":\"POSSystemID12345\",\"POIID\":\"MX915-284251016\",\"ProtocolVersion\":\"3.0\"},\"PaymentRequest\":{\"SaleData\":{\"SaleTransactionID\":{\"TransactionID\":\"PosAuth\",\"TimeStamp\":\"2025-01-01T00:00:00\"},\"SaleToAcquirerData\":\"eyJhcHBsaWNhdGlvbkluZm8iOnsiYWR5ZW5MaWJyYXJ5Ijp7Im5hbWUiOiJhZHllbi1kb3RuZXQtYXBpLWxpYnJhcnkiLCJ2ZXJzaW9uIjoiMjYuMC4wIn19fQ==\",\"TokenRequestedType\":\"Customer\"},\"PaymentTransaction\":{\"AmountsReq\":{\"Currency\":\"EUR\",\"RequestedAmount\":10100.0}},\"PaymentData\":{\"PaymentType\":\"Normal\"}}}}";
234+
private static string ExpectedSaleToPoiMessageJson => @"{""SaleToPOIRequest"":{""MessageHeader"":{""MessageClass"":""Service"",""MessageCategory"":""Payment"",""MessageType"":""Request"",""ServiceID"":""12345678"",""SaleID"":""POSSystemID12345"",""POIID"":""MX915-284251016"",""ProtocolVersion"":""3.0""},""PaymentRequest"":{""SaleData"":{""SaleTransactionID"":{""TransactionID"":""PosAuth"",""TimeStamp"":""2025-01-01T00:00:00""},""SaleToAcquirerData"":""eyJhcHBsaWNhdGlvbkluZm8iOnsiYWR5ZW5MaWJyYXJ5Ijp7Im5hbWUiOiJhZHllbi1kb3RuZXQtYXBpLWxpYnJhcnkiLCJ2ZXJzaW9uIjoiMjYuMS4wIn19fQ=="",""TokenRequestedType"":""Customer""},""PaymentTransaction"":{""AmountsReq"":{""Currency"":""EUR"",""RequestedAmount"":10100.0}},""PaymentData"":{""PaymentType"":""Normal""}}}}";
235235

236-
private static string ExpectedSaleToPoiMessageSecuredJson =>
237-
"{\"SaleToPOIRequest\":{\"MessageHeader\":{\"MessageClass\":\"Service\",\"MessageCategory\":\"Payment\",\"MessageType\":\"Request\",\"ServiceID\":\"12345678\",\"SaleID\":\"POSSystemID12345\",\"POIID\":\"MX915-284251016\",\"ProtocolVersion\":\"3.0\"},\"NexoBlob\":null,\"SecurityTrailer\":{\"AdyenCryptoVersion\":1,\"KeyIdentifier\":\"CryptoKeyIdentifier12345\",\"KeyVersion\":0,\"Hmac\":\"0lPogF5Mg97Nty9ZUuAnb3v8pvZTZvwouxdMp0HV+yQ=\"}}}";
236+
private static string ExpectedSaleToPoiMessageSecuredJson => @"{""SaleToPOIRequest"":{""MessageHeader"":{""MessageClass"":""Service"",""MessageCategory"":""Payment"",""MessageType"":""Request"",""ServiceID"":""12345678"",""SaleID"":""POSSystemID12345"",""POIID"":""MX915-284251016"",""ProtocolVersion"":""3.0""},""NexoBlob"":null,""SecurityTrailer"":{""AdyenCryptoVersion"":1,""KeyIdentifier"":""CryptoKeyIdentifier12345"",""KeyVersion"":1,""Hmac"":""mBUD3BeMrloo5aPlwUCFIa87YW8hY9/i3AcrOa2qbhk=""}}}";
238237
}
239238
}

Adyen/ApiSerialization/Converter/JsonConvertSerializerWrapper.cs

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,26 +11,42 @@ internal class JsonConvertSerializerWrapper
1111
{
1212
private const string DateTimeFormat = "yyyy-MM-ddTHH\\:mm\\:ss";
1313

14-
private static readonly JsonSerializerSettings SaleToPoiMessageSerializerSettings = CreateSerializerSettings(new SaleToPoiMessageConverter());
15-
private static readonly JsonSerializerSettings SaleToPoiMessageSecuredSerializerSettings = CreateSerializerSettings(new SaleToPoiMessageSecuredConverter());
14+
private static readonly JsonSerializerSettings SaleToPoiMessageSerializerSettings = CreateMessageSerializerSettings();
15+
private static readonly JsonSerializerSettings SaleToPoiMessageSecuredSerializerSettings = CreateSecuredMessageSerializerSettings();
1616

1717
internal static string Serialize(SaleToPOIMessage saleToPoiMessage)
1818
{
1919
return JsonConvert.SerializeObject(saleToPoiMessage, SaleToPoiMessageSerializerSettings);
2020
}
21-
21+
22+
private static JsonSerializerSettings CreateMessageSerializerSettings()
23+
{
24+
return new JsonSerializerSettings
25+
{
26+
Converters = new List<JsonConverter>
27+
{
28+
new SaleToPoiMessageConverter(),
29+
new StringEnumConverter(),
30+
new IsoDateTimeConverter { DateTimeFormat = DateTimeFormat }
31+
},
32+
NullValueHandling = NullValueHandling.Ignore,
33+
MissingMemberHandling = MissingMemberHandling.Ignore,
34+
ContractResolver = new DefaultContractResolver()
35+
};
36+
}
37+
2238
internal static string Serialize(SaleToPoiMessageSecured saleToPoiMessageSecured)
2339
{
2440
return JsonConvert.SerializeObject(saleToPoiMessageSecured, SaleToPoiMessageSecuredSerializerSettings);
2541
}
2642

27-
private static JsonSerializerSettings CreateSerializerSettings(JsonConverter messageConverter)
43+
private static JsonSerializerSettings CreateSecuredMessageSerializerSettings()
2844
{
2945
return new JsonSerializerSettings
3046
{
3147
Converters = new List<JsonConverter>
3248
{
33-
messageConverter,
49+
new SaleToPoiMessageSecuredConverter(),
3450
new StringEnumConverter(),
3551
new IsoDateTimeConverter { DateTimeFormat = DateTimeFormat }
3652
},

0 commit comments

Comments
 (0)