Skip to content

Commit 93771ba

Browse files
authored
Merge pull request #144 from mewebstudio/143-estpos-response-undefined-index-errorcode-on-success
fix #143 - ERRORCODE is not sent by some banks on success
2 parents 574bcca + eba3c3e commit 93771ba

File tree

2 files changed

+190
-146
lines changed

2 files changed

+190
-146
lines changed

src/DataMapper/ResponseDataMapper/EstPosResponseDataMapper.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ public function mapPaymentResponse(array $rawPaymentResponseData): array
4141
if ($rawPaymentResponseData === []) {
4242
return $this->getDefaultPaymentResponse();
4343
}
44-
44+
4545
$rawPaymentResponseData = $this->emptyStringsToNull($rawPaymentResponseData);
4646

4747
$procReturnCode = $this->getProcReturnCode($rawPaymentResponseData);
@@ -59,8 +59,8 @@ public function mapPaymentResponse(array $rawPaymentResponseData): array
5959
'proc_return_code' => $procReturnCode,
6060
'status' => $status,
6161
'status_detail' => $this->getStatusDetail($procReturnCode),
62-
'error_code' => $rawPaymentResponseData['Extra']['ERRORCODE'],
63-
'error_message' => $rawPaymentResponseData['ErrMsg'],
62+
'error_code' => self::TX_APPROVED === $status ? null : $rawPaymentResponseData['Extra']['ERRORCODE'],
63+
'error_message' => self::TX_APPROVED === $status ? null : $rawPaymentResponseData['ErrMsg'],
6464
'recurring_id' => $rawPaymentResponseData['Extra']['RECURRINGID'] ?? null, // set when recurring payment is made
6565
'extra' => $rawPaymentResponseData['Extra'],
6666
'all' => $rawPaymentResponseData,

tests/DataMapper/ResponseDataMapper/EstPosResponseDataMapperTest.php

Lines changed: 187 additions & 143 deletions
Original file line numberDiff line numberDiff line change
@@ -110,153 +110,197 @@ public function testMapHistoryResponse(array $responseData, array $expectedData)
110110
}
111111

112112

113-
public function paymentTestDataProvider(): array
113+
public static function paymentTestDataProvider(): iterable
114114
{
115-
return
116-
[
117-
//success case
118-
[
119-
'responseData' => [
120-
'OrderId' => '202210293885',
121-
'GroupId' => '202210293885',
122-
'Response' => 'Approved',
123-
'AuthCode' => 'P48911',
124-
'HostRefNum' => '230200671758',
125-
'ProcReturnCode' => '00',
126-
'TransId' => '22302V8rE11732',
127-
'ErrMsg' => null,
128-
'Extra' => [
129-
'SETTLEID' => '2286',
130-
'TRXDATE' => '20221029 21:58:43',
131-
'ERRORCODE' => null,
132-
'TERMINALID' => '00655020',
133-
'MERCHANTID' => '655000200',
134-
'CARDBRAND' => 'VISA',
135-
'CARDISSUER' => 'AKBANK T.A.S.',
136-
'AVSAPPROVE' => 'Y',
137-
'HOSTDATE' => '1029-215844',
138-
'AVSERRORCODEDETAIL' => 'avshatali-avshatali-avshatali-avshatali-',
139-
'NUMCODE' => '00',
140-
],
141-
],
142-
'expectedData' => [
143-
'order_id' => '202210293885',
144-
'group_id' => '202210293885',
145-
'trans_id' => '22302V8rE11732',
146-
'auth_code' => 'P48911',
147-
'ref_ret_num' => '230200671758',
148-
'proc_return_code' => '00',
149-
'status' => 'approved',
150-
'status_detail' => 'approved',
151-
'error_code' => null,
152-
'error_message' => null,
153-
'recurring_id' => null,
154-
'extra' => [
155-
'SETTLEID' => '2286',
156-
'TRXDATE' => '20221029 21:58:43',
157-
'ERRORCODE' => null,
158-
'TERMINALID' => '00655020',
159-
'MERCHANTID' => '655000200',
160-
'CARDBRAND' => 'VISA',
161-
'CARDISSUER' => 'AKBANK T.A.S.',
162-
'AVSAPPROVE' => 'Y',
163-
'HOSTDATE' => '1029-215844',
164-
'AVSERRORCODEDETAIL' => 'avshatali-avshatali-avshatali-avshatali-',
165-
'NUMCODE' => '00',
166-
],
167-
],
115+
yield 'success1' => [
116+
'responseData' => [
117+
'OrderId' => '202210293885',
118+
'GroupId' => '202210293885',
119+
'Response' => 'Approved',
120+
'AuthCode' => 'P48911',
121+
'HostRefNum' => '230200671758',
122+
'ProcReturnCode' => '00',
123+
'TransId' => '22302V8rE11732',
124+
'ErrMsg' => null,
125+
'Extra' => [
126+
'SETTLEID' => '2286',
127+
'TRXDATE' => '20221029 21:58:43',
128+
'ERRORCODE' => null,
129+
'TERMINALID' => '00655020',
130+
'MERCHANTID' => '655000200',
131+
'CARDBRAND' => 'VISA',
132+
'CARDISSUER' => 'AKBANK T.A.S.',
133+
'AVSAPPROVE' => 'Y',
134+
'HOSTDATE' => '1029-215844',
135+
'AVSERRORCODEDETAIL' => 'avshatali-avshatali-avshatali-avshatali-',
136+
'NUMCODE' => '00',
168137
],
169-
//fail case
170-
[
171-
'responseData' => [
172-
'OrderId' => '20221029B541',
173-
'GroupId' => '20221029B541',
174-
'Response' => 'Error',
175-
'AuthCode' => '',
176-
'HostRefNum' => '',
177-
'ProcReturnCode' => '99',
178-
'TransId' => '22302WcCC13836',
179-
'ErrMsg' => 'Kredi karti numarasi gecerli formatta degil.',
180-
'Extra' => [
181-
'SETTLEID' => '',
182-
'TRXDATE' => '20221029 22:28:01',
183-
'ERRORCODE' => 'CORE-2012',
184-
'NUMCODE' => '992012',
185-
],
186-
],
187-
'successData' => [
188-
'order_id' => '20221029B541',
189-
'group_id' => '20221029B541',
190-
'trans_id' => '22302WcCC13836',
191-
'auth_code' => null,
192-
'ref_ret_num' => null,
193-
'proc_return_code' => '99',
194-
'status' => 'declined',
195-
'status_detail' => 'general_error',
196-
'error_code' => 'CORE-2012',
197-
'error_message' => 'Kredi karti numarasi gecerli formatta degil.',
198-
'recurring_id' => null,
199-
'extra' => [
200-
'SETTLEID' => null,
201-
'TRXDATE' => '20221029 22:28:01',
202-
'ERRORCODE' => 'CORE-2012',
203-
'NUMCODE' => '992012',
204-
],
205-
],
138+
],
139+
'expectedData' => [
140+
'order_id' => '202210293885',
141+
'group_id' => '202210293885',
142+
'trans_id' => '22302V8rE11732',
143+
'auth_code' => 'P48911',
144+
'ref_ret_num' => '230200671758',
145+
'proc_return_code' => '00',
146+
'status' => 'approved',
147+
'status_detail' => 'approved',
148+
'error_code' => null,
149+
'error_message' => null,
150+
'recurring_id' => null,
151+
'extra' => [
152+
'SETTLEID' => '2286',
153+
'TRXDATE' => '20221029 21:58:43',
154+
'ERRORCODE' => null,
155+
'TERMINALID' => '00655020',
156+
'MERCHANTID' => '655000200',
157+
'CARDBRAND' => 'VISA',
158+
'CARDISSUER' => 'AKBANK T.A.S.',
159+
'AVSAPPROVE' => 'Y',
160+
'HOSTDATE' => '1029-215844',
161+
'AVSERRORCODEDETAIL' => 'avshatali-avshatali-avshatali-avshatali-',
162+
'NUMCODE' => '00',
206163
],
207-
//post fail case
208-
[
209-
'responseData' => [
210-
'OrderId' => '20221030FAC5',
211-
'GroupId' => '20221030FAC5',
212-
'Response' => 'Approved',
213-
'AuthCode' => 'P90325',
214-
'HostRefNum' => '230300671782',
215-
'ProcReturnCode' => '00',
216-
'TransId' => '22303Md4C19254',
217-
'ErrMsg' => '',
218-
'Extra' => [
219-
'SETTLEID' => '2287',
220-
'TRXDATE' => '20221030 12:29:53',
221-
'ERRORCODE' => '',
222-
'TERMINALID' => '00655020',
223-
'MERCHANTID' => '655000200',
224-
'CARDBRAND' => 'VISA',
225-
'CARDISSUER' => 'AKBANK T.A.S.',
226-
'AVSAPPROVE' => 'Y',
227-
'HOSTDATE' => '1030-122954',
228-
'AVSERRORCODEDETAIL' => 'avshatali-avshatali-avshatali-avshatali-',
229-
'NUMCODE' => '00',
230-
],
231-
],
232-
'successData' => [
233-
'order_id' => '20221030FAC5',
234-
'group_id' => '20221030FAC5',
235-
'trans_id' => '22303Md4C19254',
236-
'auth_code' => 'P90325',
237-
'ref_ret_num' => '230300671782',
238-
'proc_return_code' => '00',
239-
'status' => 'approved',
240-
'status_detail' => 'approved',
241-
'error_code' => null,
242-
'error_message' => null,
243-
'recurring_id' => null,
244-
'extra' => [
245-
'SETTLEID' => '2287',
246-
'TRXDATE' => '20221030 12:29:53',
247-
'ERRORCODE' => null,
248-
'TERMINALID' => '00655020',
249-
'MERCHANTID' => '655000200',
250-
'CARDBRAND' => 'VISA',
251-
'CARDISSUER' => 'AKBANK T.A.S.',
252-
'AVSAPPROVE' => 'Y',
253-
'HOSTDATE' => '1030-122954',
254-
'AVSERRORCODEDETAIL' => 'avshatali-avshatali-avshatali-avshatali-',
255-
'NUMCODE' => '00',
256-
],
257-
],
164+
],
165+
];
166+
yield 'success2WithoutERRORCODE' => [
167+
'responseData' => [
168+
'OrderId' => '202210293885',
169+
'GroupId' => '202210293885',
170+
'Response' => 'Approved',
171+
'AuthCode' => 'P48911',
172+
'HostRefNum' => '230200671758',
173+
'ProcReturnCode' => '00',
174+
'TransId' => '22302V8rE11732',
175+
'ErrMsg' => null,
176+
'Extra' => [
177+
'SETTLEID' => '2286',
178+
'TRXDATE' => '20221029 21:58:43',
179+
'TERMINALID' => '00655020',
180+
'MERCHANTID' => '655000200',
181+
'CARDBRAND' => 'VISA',
182+
'CARDISSUER' => 'AKBANK T.A.S.',
183+
'AVSAPPROVE' => 'Y',
184+
'HOSTDATE' => '1029-215844',
185+
'AVSERRORCODEDETAIL' => 'avshatali-avshatali-avshatali-avshatali-',
186+
'NUMCODE' => '00',
258187
],
259-
];
188+
],
189+
'expectedData' => [
190+
'order_id' => '202210293885',
191+
'group_id' => '202210293885',
192+
'trans_id' => '22302V8rE11732',
193+
'auth_code' => 'P48911',
194+
'ref_ret_num' => '230200671758',
195+
'proc_return_code' => '00',
196+
'status' => 'approved',
197+
'status_detail' => 'approved',
198+
'error_code' => null,
199+
'error_message' => null,
200+
'recurring_id' => null,
201+
'extra' => [
202+
'SETTLEID' => '2286',
203+
'TRXDATE' => '20221029 21:58:43',
204+
'TERMINALID' => '00655020',
205+
'MERCHANTID' => '655000200',
206+
'CARDBRAND' => 'VISA',
207+
'CARDISSUER' => 'AKBANK T.A.S.',
208+
'AVSAPPROVE' => 'Y',
209+
'HOSTDATE' => '1029-215844',
210+
'AVSERRORCODEDETAIL' => 'avshatali-avshatali-avshatali-avshatali-',
211+
'NUMCODE' => '00',
212+
],
213+
],
214+
];
215+
yield 'fail1' => [
216+
'responseData' => [
217+
'OrderId' => '20221029B541',
218+
'GroupId' => '20221029B541',
219+
'Response' => 'Error',
220+
'AuthCode' => '',
221+
'HostRefNum' => '',
222+
'ProcReturnCode' => '99',
223+
'TransId' => '22302WcCC13836',
224+
'ErrMsg' => 'Kredi karti numarasi gecerli formatta degil.',
225+
'Extra' => [
226+
'SETTLEID' => '',
227+
'TRXDATE' => '20221029 22:28:01',
228+
'ERRORCODE' => 'CORE-2012',
229+
'NUMCODE' => '992012',
230+
],
231+
],
232+
'successData' => [
233+
'order_id' => '20221029B541',
234+
'group_id' => '20221029B541',
235+
'trans_id' => '22302WcCC13836',
236+
'auth_code' => null,
237+
'ref_ret_num' => null,
238+
'proc_return_code' => '99',
239+
'status' => 'declined',
240+
'status_detail' => 'general_error',
241+
'error_code' => 'CORE-2012',
242+
'error_message' => 'Kredi karti numarasi gecerli formatta degil.',
243+
'recurring_id' => null,
244+
'extra' => [
245+
'SETTLEID' => null,
246+
'TRXDATE' => '20221029 22:28:01',
247+
'ERRORCODE' => 'CORE-2012',
248+
'NUMCODE' => '992012',
249+
],
250+
],
251+
];
252+
253+
yield 'postFail2' => [
254+
'responseData' => [
255+
'OrderId' => '20221030FAC5',
256+
'GroupId' => '20221030FAC5',
257+
'Response' => 'Approved',
258+
'AuthCode' => 'P90325',
259+
'HostRefNum' => '230300671782',
260+
'ProcReturnCode' => '00',
261+
'TransId' => '22303Md4C19254',
262+
'ErrMsg' => '',
263+
'Extra' => [
264+
'SETTLEID' => '2287',
265+
'TRXDATE' => '20221030 12:29:53',
266+
'ERRORCODE' => '',
267+
'TERMINALID' => '00655020',
268+
'MERCHANTID' => '655000200',
269+
'CARDBRAND' => 'VISA',
270+
'CARDISSUER' => 'AKBANK T.A.S.',
271+
'AVSAPPROVE' => 'Y',
272+
'HOSTDATE' => '1030-122954',
273+
'AVSERRORCODEDETAIL' => 'avshatali-avshatali-avshatali-avshatali-',
274+
'NUMCODE' => '00',
275+
],
276+
],
277+
'successData' => [
278+
'order_id' => '20221030FAC5',
279+
'group_id' => '20221030FAC5',
280+
'trans_id' => '22303Md4C19254',
281+
'auth_code' => 'P90325',
282+
'ref_ret_num' => '230300671782',
283+
'proc_return_code' => '00',
284+
'status' => 'approved',
285+
'status_detail' => 'approved',
286+
'error_code' => null,
287+
'error_message' => null,
288+
'recurring_id' => null,
289+
'extra' => [
290+
'SETTLEID' => '2287',
291+
'TRXDATE' => '20221030 12:29:53',
292+
'ERRORCODE' => null,
293+
'TERMINALID' => '00655020',
294+
'MERCHANTID' => '655000200',
295+
'CARDBRAND' => 'VISA',
296+
'CARDISSUER' => 'AKBANK T.A.S.',
297+
'AVSAPPROVE' => 'Y',
298+
'HOSTDATE' => '1030-122954',
299+
'AVSERRORCODEDETAIL' => 'avshatali-avshatali-avshatali-avshatali-',
300+
'NUMCODE' => '00',
301+
],
302+
],
303+
];
260304
}
261305

262306

0 commit comments

Comments
 (0)