@riskdefy/chargebacks 1.0.2 → 1.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,316 @@
1
+ <template>
2
+ <div class="rounded border pt-0 mb-5">
3
+ <div class="accordion fs-7" id="kt_accordion_1">
4
+ <div class="accordion-item">
5
+ <h2 class="accordion-header" id="kt_accordion_1_header_1">
6
+ <button
7
+ class="accordion-button fs-6 fw-bold"
8
+ type="button"
9
+ data-bs-toggle="collapse"
10
+ data-bs-target="#kt_accordion_1_body_1"
11
+ aria-expanded="true"
12
+ aria-controls="kt_accordion_1_body_1"
13
+ >
14
+ Order Details
15
+ </button>
16
+ </h2>
17
+ <div
18
+ id="kt_accordion_1_body_1"
19
+ class="accordion-collapse collapse show"
20
+ aria-labelledby="kt_accordion_1_header_1"
21
+ data-bs-parent="#kt_accordion_1"
22
+ style=""
23
+ >
24
+ <div class="accordion-body">
25
+ <div class="mb-0">
26
+ <div
27
+ v-if="incoming.order_details == ''"
28
+ class="d-flex flex-wrap py-5"
29
+ >
30
+ <!--begin::Col-->
31
+ <div class="mb-0">
32
+ <span class="fs-7 text-gray-500">No Data Available</span>
33
+ </div>
34
+ <!--end::Col-->
35
+ </div>
36
+ <div v-else class="table-responsive">
37
+ <!--begin::Table-->
38
+ <table
39
+ class="table align-middle table-row-dashed gy-4 mb-0 fs-7"
40
+ >
41
+ <!--begin::Table head-->
42
+ <thead>
43
+ <!--begin::Table row-->
44
+ <tr
45
+ class="border-bottom border-gray-200 text-start text-gray-400 fw-bolder fs-7 text-uppercase gs-0"
46
+ >
47
+ <th class="min-w-150px">Item Id</th>
48
+ <th class="min-w-100px">Item Name</th>
49
+ <th class="min-w-50px">Qty</th>
50
+ <th class="text-end min-w-100px pe-5">Price</th>
51
+ </tr>
52
+ <!--end::Table row-->
53
+ </thead>
54
+ <!--end::Table head-->
55
+
56
+ <!--begin::Table body-->
57
+ <tbody class="fw-bold text-gray-800">
58
+ <tr
59
+ v-for="(item, index) in incoming.order_details.items"
60
+ :key="index"
61
+ >
62
+ <td>
63
+ <div class="w-50px">{{ item.purchaseId }}</div>
64
+ </td>
65
+ <td>
66
+ {{ item.name }}
67
+ </td>
68
+ <td class="w-50px">{{ item.qty }}</td>
69
+ <td class="w-50px text-end pe-5">
70
+ {{ item.price }}
71
+ </td>
72
+ </tr>
73
+ </tbody>
74
+ <!--end::Table body-->
75
+ </table>
76
+ <!--end::Table-->
77
+ </div>
78
+ </div>
79
+ </div>
80
+ </div>
81
+ </div>
82
+ <div class="accordion-item">
83
+ <h2 class="accordion-header" id="kt_accordion_1_header_2">
84
+ <button
85
+ class="accordion-button fs-6 fw-bold collapsed"
86
+ type="button"
87
+ data-bs-toggle="collapse"
88
+ data-bs-target="#kt_accordion_1_body_2"
89
+ aria-expanded="false"
90
+ aria-controls="kt_accordion_1_body_2"
91
+ >
92
+ Transaction Details
93
+ </button>
94
+ </h2>
95
+ <div
96
+ id="kt_accordion_1_body_2"
97
+ class="accordion-collapse collapse"
98
+ aria-labelledby="kt_accordion_1_header_2"
99
+ data-bs-parent="#kt_accordion_1"
100
+ style=""
101
+ >
102
+ <div class="accordion-body">
103
+ <div class="mb-0">
104
+ <div class="d-flex flex-wrap py-2">
105
+ <div class="flex-equal ms-2 me-2">
106
+ <table class="table table-flush fw-bold gy-1 mb-0">
107
+ <tbody>
108
+ <tr>
109
+ <td class="text-muted min-w-125px w-125px">
110
+ Transaction Id:
111
+ </td>
112
+ <td class="text-gray-800">
113
+ {{ incoming.transaction["TRANS_ID"] }}
114
+ </td>
115
+ </tr>
116
+ <tr>
117
+ <td class="text-muted min-w-125px w-125px">
118
+ Auth Code:
119
+ </td>
120
+ <td class="text-gray-800">
121
+ {{ incoming.transaction["PROC_AUTH_CODE"] }}
122
+ </td>
123
+ </tr>
124
+ <tr>
125
+ <td class="text-muted min-w-125px w-125px">AVS:</td>
126
+ <td class="text-gray-800">
127
+ {{ incoming.transaction["AVS_CODE"] }}
128
+ </td>
129
+ </tr>
130
+ <tr>
131
+ <td class="text-muted min-w-125px w-125px">CVV:</td>
132
+ <td class="text-gray-800">
133
+ {{ incoming.transaction["CVV_CODE"] }}
134
+ </td>
135
+ </tr>
136
+ <tr>
137
+ <td class="text-muted min-w-125px w-125px">Created:</td>
138
+ <td class="text-gray-800">
139
+ {{ incoming.transaction["TRANS_SETTLE_UTC_TS"] }}
140
+ </td>
141
+ </tr>
142
+ </tbody>
143
+ </table>
144
+ </div>
145
+ <div class="flex-equal ms-2 me-2">
146
+ <table class="table table-flush fw-bold gy-1">
147
+ <tbody>
148
+ <tr>
149
+ <td class="text-muted min-w-125px w-125px">
150
+ Order Id:
151
+ </td>
152
+ <td class="text-gray-800">
153
+ {{ incoming.transaction["PO_ID"] }}
154
+ </td>
155
+ </tr>
156
+ <tr>
157
+ <td class="text-muted min-w-125px w-125px">Status:</td>
158
+ <td class="text-gray-800">
159
+ {{ incoming.transaction["TRANS_STATUS"] }}
160
+ </td>
161
+ </tr>
162
+ <tr>
163
+ <td class="text-muted min-w-125px w-125px">Type:</td>
164
+ <td class="text-gray-800">
165
+ {{ incoming.transaction["SERVICE_ACTION"] }}
166
+ </td>
167
+ </tr>
168
+ <tr>
169
+ <td class="text-muted min-w-125px w-125px">
170
+ Descriptor:
171
+ </td>
172
+ <td class="text-gray-800">
173
+ {{ incoming.transaction["DESCRIPTOR"] }}
174
+ </td>
175
+ </tr>
176
+ <tr>
177
+ <td class="text-muted min-w-125px w-125px">
178
+ Card Bank:
179
+ </td>
180
+ <td class="text-gray-800">
181
+ {{ incoming.transaction["CARD_BANK"] }}
182
+ </td>
183
+ </tr>
184
+ </tbody>
185
+ </table>
186
+ </div>
187
+ </div>
188
+ </div>
189
+ </div>
190
+ </div>
191
+ </div>
192
+ <div class="accordion-item">
193
+ <h2 class="accordion-header" id="kt_accordion_1_header_3">
194
+ <button
195
+ class="accordion-button fs-6 fw-bold collapsed"
196
+ type="button"
197
+ data-bs-toggle="collapse"
198
+ data-bs-target="#kt_accordion_1_body_3"
199
+ aria-expanded="false"
200
+ aria-controls="kt_accordion_1_body_3"
201
+ >
202
+ Cardholder Details
203
+ </button>
204
+ </h2>
205
+ <div
206
+ id="kt_accordion_1_body_3"
207
+ class="accordion-collapse collapse"
208
+ aria-labelledby="kt_accordion_1_header_3"
209
+ data-bs-parent="#kt_accordion_1"
210
+ style=""
211
+ >
212
+ <div class="accordion-body">
213
+ <div class="mb-0">
214
+ <div class="d-flex flex-wrap py-5">
215
+ <!--begin::Col-->
216
+ <div class="flex-equal ms-2 me-5">
217
+ <table class="table table-flush fw-bold gy-1">
218
+ <tbody>
219
+ <tr>
220
+ <td class="text-muted min-w-125px w-125px">
221
+ First Name
222
+ </td>
223
+ <td class="text-gray-800 text-hover-primary">
224
+ {{ incoming.card_holder.first_name }}
225
+ </td>
226
+ </tr>
227
+ <tr>
228
+ <td class="text-muted min-w-125px w-125px">
229
+ Last Name
230
+ </td>
231
+ <td class="text-gray-800 text-hover-primary">
232
+ {{ incoming.card_holder.last_name }}
233
+ </td>
234
+ </tr>
235
+ <tr>
236
+ <td class="text-muted min-w-125px w-125px">Email</td>
237
+ <td class="text-gray-800 text-hover-primary">
238
+ {{ incoming.card_holder.email }}
239
+ </td>
240
+ </tr>
241
+ <tr>
242
+ <td class="text-muted min-w-125px w-125px">Address:</td>
243
+ <td class="text-gray-800 text-hover-primary">
244
+ {{ incoming.card_holder.billing_address }}<br />{{
245
+ incoming.card_holder.billing_zip
246
+ }}
247
+ </td>
248
+ </tr>
249
+ </tbody>
250
+ </table>
251
+ </div>
252
+ <!--end::Col--><!--begin::Col-->
253
+ <div class="flex-equal">
254
+ <table class="table table-flush fw-bold gy-1">
255
+ <tbody>
256
+ <tr>
257
+ <td class="text-muted min-w-125px w-125px">
258
+ Customer Id:
259
+ </td>
260
+ <td class="text-gray-800">
261
+ {{ incoming.card_holder.customer_id }}
262
+ </td>
263
+ </tr>
264
+ <tr>
265
+ <td class="text-muted min-w-125px w-125px">Rebill:</td>
266
+ <td class="text-gray-800">
267
+ {{ incoming.transaction["REBILL"] }}
268
+ </td>
269
+ </tr>
270
+ <tr>
271
+ <td class="text-muted min-w-125px w-125px">Phone:</td>
272
+ <td
273
+ class="text-gray-800"
274
+ v-if="incoming.card_holder.phone == ''"
275
+ >
276
+ Not Provided
277
+ </td>
278
+ <td class="text-gray-800" v-else>
279
+ {{ incoming.card_holder.phone }}
280
+ </td>
281
+ </tr>
282
+ <tr>
283
+ <td class="text-muted min-w-125px w-125px">
284
+ IP Address:
285
+ </td>
286
+ <td class="text-gray-800">
287
+ {{ incoming.card_holder.ip_address }}
288
+ </td>
289
+ </tr>
290
+ </tbody>
291
+ </table>
292
+ </div>
293
+ <!--end::Col-->
294
+ </div>
295
+ </div>
296
+ </div>
297
+ </div>
298
+ </div>
299
+ </div>
300
+ </div>
301
+ </template>
302
+
303
+ <script lang="ts">
304
+ import { defineComponent } from "vue";
305
+
306
+ export default defineComponent({
307
+ name: "nmi-details",
308
+ props: {
309
+ incoming: Object,
310
+ },
311
+ setup() {
312
+ return {};
313
+ },
314
+ });
315
+ </script>
316
+
@@ -0,0 +1,162 @@
1
+ <template>
2
+ <div class="accordion-item">
3
+ <h2 class="accordion-header" id="kt_accordion_4_header_4">
4
+ <button
5
+ class="accordion-button fs-6 fw-normal collapsed"
6
+ type="button"
7
+ data-bs-toggle="collapse"
8
+ data-bs-target="#kt_accordion_4_body_4"
9
+ aria-expanded="false"
10
+ aria-controls="kt_accordion_4_body_4"
11
+ >
12
+ Transaction Details
13
+ </button>
14
+ </h2>
15
+ <div
16
+ id="kt_accordion_4_body_4"
17
+ class="accordion-collapse collapse"
18
+ aria-labelledby="kt_accordion_4_body_4"
19
+ data-bs-parent="#kt_accordion_1"
20
+ >
21
+ <div class="accordion-body pb-1">
22
+ <div class="d-flex flex-wrap py-2 fs-7">
23
+ <!-- Transaction Details Col 1 -->
24
+ <div class="flex-equal ms-2 me-5">
25
+ <table class="table table-flush fw-bold gy-1">
26
+ <tbody>
27
+ <tr>
28
+ <td class="text-muted w-auto">Transaction Id:</td>
29
+ <td class="text-gray-800">
30
+ {{ transaction.transaction_id }}
31
+ </td>
32
+ </tr>
33
+ <tr>
34
+ <td class="text-muted w-auto">Auth Code:</td>
35
+ <td class="text-gray-800">
36
+ {{ transaction.authorization_code }}
37
+ </td>
38
+ </tr>
39
+ <tr>
40
+ <td class="text-muted w-auto">CAVV:</td>
41
+ <td class="text-gray-800">
42
+ {{ transaction.cavv }}
43
+ </td>
44
+ </tr>
45
+ <tr>
46
+ <td class="text-muted w-auto">ECI:</td>
47
+ <td class="text-gray-800">
48
+ {{ transaction.eci }}
49
+ </td>
50
+ </tr>
51
+ <tr>
52
+ <td class="text-muted w-auto">Trans Date:</td>
53
+ <td class="text-gray-800">
54
+ {{
55
+ Array.isArray(transaction.action)
56
+ ? transaction.action[0].date
57
+ : transaction.action.date
58
+ }}
59
+ </td>
60
+ </tr>
61
+ </tbody>
62
+ </table>
63
+ </div>
64
+ <!-- Transaction Details Col 2 -->
65
+ <div class="flex-equal">
66
+ <table class="table table-flush fw-bold gy-1">
67
+ <tbody>
68
+ <tr>
69
+ <td class="text-muted min-w-125px w-125px">Amount:</td>
70
+ <td class="text-gray-800 text-hover-primary">
71
+ ${{
72
+ Array.isArray(transaction.action)
73
+ ? transaction.action[0].amount
74
+ : transaction.action.amount
75
+ }}
76
+ </td>
77
+ </tr>
78
+ <tr>
79
+ <td class="text-muted min-w-125px w-125px">AVS:</td>
80
+ <td class="text-gray-800 text-hover-primary">
81
+ {{ transaction.avs_response }}
82
+ </td>
83
+ </tr>
84
+ <tr>
85
+ <td class="text-muted min-w-125px w-125px">CSC:</td>
86
+ <td class="text-gray-800 text-hover-primary">
87
+ {{ transaction.csc_response }}
88
+ </td>
89
+ </tr>
90
+ <tr>
91
+ <td class="text-muted min-w-125px w-125px">CC Bin:</td>
92
+ <td class="text-gray-800 text-hover-primary">
93
+ {{ transaction.cc_bin }}
94
+ </td>
95
+ </tr>
96
+ <tr>
97
+ <td class="text-muted min-w-125px w-125px">CC Number:</td>
98
+ <td class="text-gray-800 text-hover-primary">
99
+ {{ transaction.cc_number }}
100
+ </td>
101
+ </tr>
102
+ </tbody>
103
+ </table>
104
+ </div>
105
+ </div>
106
+ </div>
107
+ </div>
108
+ </div>
109
+ </template>
110
+
111
+ <script lang="ts">
112
+ import { defineComponent, toRef, ref, computed, watch } from "vue";
113
+
114
+ export default defineComponent({
115
+ name: "nmi-details",
116
+ props: {
117
+ incoming: { type: Object, required: true },
118
+ },
119
+ setup(props) {
120
+ const incomingData = toRef(props, "incoming");
121
+ const cardholder = computed(() => props.incoming?.card_holder);
122
+ const card = computed(() => props.incoming?.card);
123
+ const actions = computed(() => props.incoming?.transaction?.action || []);
124
+ const orders = computed(() => props.incoming?.order_details?.items || []);
125
+
126
+ const transaction = computed(() => props.incoming.transaction);
127
+
128
+ const lastAction = computed(() => {
129
+ const actionArray = actions.value;
130
+ if (actionArray.length > 0) {
131
+ // Ensure there is at least one element
132
+ return actionArray[actionArray.length - 1].response_text; // Access the last element's response_text
133
+ }
134
+ return null; // Return null if no actions are present
135
+ });
136
+ const formattedPhone = computed(() => {
137
+ const phone = cardholder.value.phone || "";
138
+ if (phone.length === 10) {
139
+ return `1 (${phone.slice(0, 3)}) ${phone.slice(3, 6)}-${phone.slice(
140
+ 6
141
+ )}`;
142
+ }
143
+ return phone; // Return unformatted if not 10 digits
144
+ });
145
+ return {
146
+ lastAction,
147
+ formattedPhone,
148
+ card,
149
+ incomingData,
150
+ transaction,
151
+ actions,
152
+ orders,
153
+ cardholder,
154
+ };
155
+ },
156
+ });
157
+ </script>
158
+
159
+ <style scoped>
160
+ /* Add any scoped styles here */
161
+ </style>
162
+