@pay-com/js 1.1.15 → 1.2.0

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.
@@ -130,6 +130,12 @@ export interface UniversalToggles {
130
130
  */
131
131
  submitButton?: boolean
132
132
 
133
+ /**
134
+ * If false, the default suppoerted brands footer will not appear.
135
+ * @default true
136
+ */
137
+ withCardBrandsFooterLogos?: boolean
138
+
133
139
  /**
134
140
  * If true, displays the card bin as well as last 4.
135
141
  * @default false
@@ -146,6 +152,30 @@ export interface UniversalToggles {
146
152
  * A title to display above the Universal form.
147
153
  */
148
154
  title?: string
155
+
156
+ /**
157
+ * If true, only user's saved sources will displayed.
158
+ * @default false
159
+ */
160
+ allowOnlyExistingPaymentMethods?: boolean
161
+
162
+ /**
163
+ * If true, user will not be able the pay with saved source.
164
+ * @default false
165
+ */
166
+ newCardOnly?: boolean
167
+
168
+ /**
169
+ * If true, user will not be able to remove saved source.
170
+ * @default false
171
+ */
172
+ disablePaymentMethodDeletion?: boolean
173
+
174
+ /**
175
+ * If true, the submit button will be disabled while form invalid.
176
+ * @default false
177
+ */
178
+ disableSubmitUntilFormIsValid?: boolean
149
179
  }
150
180
 
151
181
  export type LanguageLocalizationOverride = {
@@ -201,6 +231,7 @@ export interface UniversalOpts {
201
231
  container: string
202
232
  cardForm?: Omit<RenderOpts, 'container' | 'style'>
203
233
  toggles?: UniversalToggles
234
+ selectedPaymentMethod?: string
204
235
  apmsOnClickValidation?: () => Promise<boolean>
205
236
  localizations?: {
206
237
  [language: string]: LanguageLocalizationOverride
@@ -238,8 +269,10 @@ export interface UniversalOpts {
238
269
  }
239
270
  }
240
271
  }
272
+ ctp?: CTPStyles
241
273
  }
242
274
  paymentMethods?: Array<string>
275
+ alternatives?: 'button' | 'radio'
243
276
  }
244
277
 
245
278
  export interface SubmitOpts {
@@ -305,6 +338,7 @@ export interface CheckoutOpts {
305
338
  displayEndOfSessionFailureMessages?: boolean
306
339
  disableAdditionalFields?: boolean
307
340
  whiteLabel?: boolean
341
+ disableSetupFutureUsageCheckbox?: boolean
308
342
  }
309
343
  locale?: Locale
310
344
  }
@@ -334,7 +368,11 @@ export enum EVENT_TYPES {
334
368
  PAYMENT_PROCESSING = 'payment_processing',
335
369
  SETUP_PROCESSING = 'setup_processing',
336
370
  SESSION_EXPIRED = 'session_expired',
337
- MAX_ATTEMPTS_REACHED = 'max_attempts_reached'
371
+ MAX_ATTEMPTS_REACHED = 'max_attempts_reached',
372
+ PAYMENT_PENDING_APPROVAL = 'payment_pending_approval',
373
+ SET_DISABLE_UI = 'set_disable_ui',
374
+ HEADLESS_READY = 'headless_ready',
375
+ FORM_VALIDATION_UPDATED = 'form_validation_update'
338
376
  }
339
377
 
340
378
  export type ListenerFn = (
@@ -352,6 +390,7 @@ export enum ELEMENT_TYPES {
352
390
  CHECKOUT = 'checkout',
353
391
  UNIVERSAL = 'universal',
354
392
  PAYPAL = 'paypal'
393
+ // UNIVERSAL_V2 = 'universal-v2'
355
394
  }
356
395
 
357
396
  enum TransactionStatusEnum {
@@ -413,6 +452,7 @@ export type UpdateTransactionDetailsOpts = {
413
452
  consumer?: {
414
453
  firstName?: string
415
454
  lastName?: string
455
+ name?: string
416
456
  email?: string
417
457
  phone?: string
418
458
  }
@@ -432,7 +472,7 @@ export type UpdateTransactionDetailsOpts = {
432
472
  state?: string
433
473
  countryAlpha2: string
434
474
  }
435
- customFieldsValues: Record<string, string | number | boolean>
475
+ customFieldsValues?: Record<string, string | number | boolean>
436
476
  }
437
477
 
438
478
  export type PayOpts = {
@@ -446,21 +486,96 @@ export type UpdateTransactionDetailsFn = (
446
486
  config: UpdateTransactionDetailsOpts
447
487
  ) => Promise<unknown>
448
488
 
489
+ export type ResyncFn = () => Promise<void>
490
+
491
+ export type AddressType = {
492
+ line1: string
493
+ line2?: string
494
+ city: string
495
+ state?: string
496
+ country: string
497
+ postalCode: string
498
+ }
499
+
500
+ export type HeadlessFn = (
501
+ method: string,
502
+ paymentMethodData?: unknown,
503
+ billingDetails?: AddressType
504
+ ) => Promise<unknown>
505
+
506
+ export type CanMakePaymentsFn = () => Promise<unknown>
507
+
508
+ export type InitHeadlessCtpParams = {
509
+ emailInputRef?: HTMLDivElement | string
510
+ email: string
511
+ containers: {
512
+ mainWidget: HTMLDivElement | string
513
+ linkNewCard: HTMLDivElement | string
514
+ }
515
+ style?: CTPStyles
516
+ }
517
+
518
+ export type CTPStyles = Partial<{
519
+ mainWidgetContainer: PayCssConfig
520
+ linkNewCardContainer: PayCssConfig
521
+ }>
522
+
523
+ export enum CTP_EVENTS {
524
+ VALIDATION_CHANGED = 'validation-changed',
525
+ AUTHENTICATED = 'authenticated'
526
+ }
527
+
528
+ export declare enum CtpCompletePaymentStatus {
529
+ success = 'SUCCESS',
530
+ declined = 'DECLINED'
531
+ }
532
+
533
+ export type CheckoutCTPBillingDetails = {
534
+ address: {
535
+ addressLine: string
536
+ addressLine2?: string
537
+ zip: string
538
+ city: string
539
+ state?: string
540
+ countryAlpha2: string
541
+ }
542
+ name: string
543
+ phone: string
544
+ }
545
+
546
+ export type HeadlessCtpObject = {
547
+ on: Listener<CTP_EVENTS>
548
+ once: Listener<CTP_EVENTS>
549
+ removeListener: Listener<CTP_EVENTS>
550
+ validate: () => Promise<{ valid: boolean }>
551
+ completePayment: (status: CtpCompletePaymentStatus) => Promise<void>
552
+ updateBillingDetails: (
553
+ params: Partial<CheckoutCTPBillingDetails>
554
+ ) => Promise<void>
555
+ STATUS_SUCCESS: CtpCompletePaymentStatus.success
556
+ STATUS_DECLINED: CtpCompletePaymentStatus.declined
557
+ }
558
+
449
559
  export type CheckoutObject = {
450
560
  on: ListenerFn
451
561
  once: ListenerFn
452
562
  removeListener: ListenerFn
453
563
  EVENT_TYPES: typeof EVENT_TYPES
564
+ ELEMENT_TYPES: typeof ELEMENT_TYPES
454
565
  render: RenderFn
455
566
  paypal: PaypalFn
456
567
  universal: UniversalFn
568
+ blur: BlurFn
457
569
  update: UpdateFn
458
570
  updateTransactionDetails: UpdateTransactionDetailsFn
459
571
  submit: SubmitFn
460
- blur: BlurFn
572
+ resync: ResyncFn
573
+ canMakePayments: CanMakePaymentsFn
461
574
  validate: ValidateFn
462
575
  reset: ResetFn
463
576
  pay: PayFn
577
+ headless: HeadlessFn
578
+ ctp: (params: InitHeadlessCtpParams) => Promise<HeadlessCtpObject>
464
579
  }
465
580
 
466
581
  export type CheckoutFunction = (opts: CheckoutOpts) => CheckoutObject
package/lib/index.d.ts CHANGED
@@ -135,6 +135,12 @@ interface UniversalToggles {
135
135
  */
136
136
  submitButton?: boolean
137
137
 
138
+ /**
139
+ * If false, the default suppoerted brands footer will not appear.
140
+ * @default true
141
+ */
142
+ withCardBrandsFooterLogos?: boolean
143
+
138
144
  /**
139
145
  * If true, displays the card bin as well as last 4.
140
146
  * @default false
@@ -151,6 +157,30 @@ interface UniversalToggles {
151
157
  * A title to display above the Universal form.
152
158
  */
153
159
  title?: string
160
+
161
+ /**
162
+ * If true, only user's saved sources will displayed.
163
+ * @default false
164
+ */
165
+ allowOnlyExistingPaymentMethods?: boolean
166
+
167
+ /**
168
+ * If true, user will not be able the pay with saved source.
169
+ * @default false
170
+ */
171
+ newCardOnly?: boolean
172
+
173
+ /**
174
+ * If true, user will not be able to remove saved source.
175
+ * @default false
176
+ */
177
+ disablePaymentMethodDeletion?: boolean
178
+
179
+ /**
180
+ * If true, the submit button will be disabled while form invalid.
181
+ * @default false
182
+ */
183
+ disableSubmitUntilFormIsValid?: boolean
154
184
  }
155
185
 
156
186
  type LanguageLocalizationOverride = {
@@ -206,6 +236,7 @@ interface UniversalOpts {
206
236
  container: string
207
237
  cardForm?: Omit<RenderOpts, 'container' | 'style'>
208
238
  toggles?: UniversalToggles
239
+ selectedPaymentMethod?: string
209
240
  apmsOnClickValidation?: () => Promise<boolean>
210
241
  localizations?: {
211
242
  [language: string]: LanguageLocalizationOverride
@@ -243,8 +274,10 @@ interface UniversalOpts {
243
274
  }
244
275
  }
245
276
  }
277
+ ctp?: CTPStyles
246
278
  }
247
279
  paymentMethods?: Array<string>
280
+ alternatives?: 'button' | 'radio'
248
281
  }
249
282
 
250
283
  interface SubmitOpts {
@@ -310,6 +343,7 @@ interface CheckoutOpts {
310
343
  displayEndOfSessionFailureMessages?: boolean
311
344
  disableAdditionalFields?: boolean
312
345
  whiteLabel?: boolean
346
+ disableSetupFutureUsageCheckbox?: boolean
313
347
  }
314
348
  locale?: Locale
315
349
  }
@@ -333,7 +367,11 @@ enum EVENT_TYPES {
333
367
  PAYMENT_PROCESSING = 'payment_processing',
334
368
  SETUP_PROCESSING = 'setup_processing',
335
369
  SESSION_EXPIRED = 'session_expired',
336
- MAX_ATTEMPTS_REACHED = 'max_attempts_reached'
370
+ MAX_ATTEMPTS_REACHED = 'max_attempts_reached',
371
+ PAYMENT_PENDING_APPROVAL = 'payment_pending_approval',
372
+ SET_DISABLE_UI = 'set_disable_ui',
373
+ HEADLESS_READY = 'headless_ready',
374
+ FORM_VALIDATION_UPDATED = 'form_validation_update'
337
375
  }
338
376
 
339
377
  type ListenerFn = (
@@ -351,6 +389,7 @@ enum ELEMENT_TYPES {
351
389
  CHECKOUT = 'checkout',
352
390
  UNIVERSAL = 'universal',
353
391
  PAYPAL = 'paypal'
392
+ // UNIVERSAL_V2 = 'universal-v2'
354
393
  }
355
394
 
356
395
  enum TransactionStatusEnum {
@@ -412,6 +451,7 @@ type UpdateTransactionDetailsOpts = {
412
451
  consumer?: {
413
452
  firstName?: string
414
453
  lastName?: string
454
+ name?: string
415
455
  email?: string
416
456
  phone?: string
417
457
  }
@@ -431,7 +471,7 @@ type UpdateTransactionDetailsOpts = {
431
471
  state?: string
432
472
  countryAlpha2: string
433
473
  }
434
- customFieldsValues: Record<string, string | number | boolean>
474
+ customFieldsValues?: Record<string, string | number | boolean>
435
475
  }
436
476
 
437
477
  type PayOpts = {
@@ -445,21 +485,96 @@ type UpdateTransactionDetailsFn = (
445
485
  config: UpdateTransactionDetailsOpts
446
486
  ) => Promise<unknown>
447
487
 
488
+ type ResyncFn = () => Promise<void>
489
+
490
+ type AddressType = {
491
+ line1: string
492
+ line2?: string
493
+ city: string
494
+ state?: string
495
+ country: string
496
+ postalCode: string
497
+ }
498
+
499
+ type HeadlessFn = (
500
+ method: string,
501
+ paymentMethodData?: unknown,
502
+ billingDetails?: AddressType
503
+ ) => Promise<unknown>
504
+
505
+ type CanMakePaymentsFn = () => Promise<unknown>
506
+
507
+ type InitHeadlessCtpParams = {
508
+ emailInputRef?: HTMLDivElement | string
509
+ email: string
510
+ containers: {
511
+ mainWidget: HTMLDivElement | string
512
+ linkNewCard: HTMLDivElement | string
513
+ }
514
+ style?: CTPStyles
515
+ }
516
+
517
+ type CTPStyles = Partial<{
518
+ mainWidgetContainer: PayCssConfig
519
+ linkNewCardContainer: PayCssConfig
520
+ }>
521
+
522
+ enum CTP_EVENTS {
523
+ VALIDATION_CHANGED = 'validation-changed',
524
+ AUTHENTICATED = 'authenticated'
525
+ }
526
+
527
+ declare enum CtpCompletePaymentStatus {
528
+ success = 'SUCCESS',
529
+ declined = 'DECLINED'
530
+ }
531
+
532
+ type CheckoutCTPBillingDetails = {
533
+ address: {
534
+ addressLine: string
535
+ addressLine2?: string
536
+ zip: string
537
+ city: string
538
+ state?: string
539
+ countryAlpha2: string
540
+ }
541
+ name: string
542
+ phone: string
543
+ }
544
+
545
+ type HeadlessCtpObject = {
546
+ on: Listener<CTP_EVENTS>
547
+ once: Listener<CTP_EVENTS>
548
+ removeListener: Listener<CTP_EVENTS>
549
+ validate: () => Promise<{ valid: boolean }>
550
+ completePayment: (status: CtpCompletePaymentStatus) => Promise<void>
551
+ updateBillingDetails: (
552
+ params: Partial<CheckoutCTPBillingDetails>
553
+ ) => Promise<void>
554
+ STATUS_SUCCESS: CtpCompletePaymentStatus.success
555
+ STATUS_DECLINED: CtpCompletePaymentStatus.declined
556
+ }
557
+
448
558
  type CheckoutObject = {
449
559
  on: ListenerFn
450
560
  once: ListenerFn
451
561
  removeListener: ListenerFn
452
562
  EVENT_TYPES: typeof EVENT_TYPES
563
+ ELEMENT_TYPES: typeof ELEMENT_TYPES
453
564
  render: RenderFn
454
565
  paypal: PaypalFn
455
566
  universal: UniversalFn
567
+ blur: BlurFn
456
568
  update: UpdateFn
457
569
  updateTransactionDetails: UpdateTransactionDetailsFn
458
570
  submit: SubmitFn
459
- blur: BlurFn
571
+ resync: ResyncFn
572
+ canMakePayments: CanMakePaymentsFn
460
573
  validate: ValidateFn
461
574
  reset: ResetFn
462
575
  pay: PayFn
576
+ headless: HeadlessFn
577
+ ctp: (params: InitHeadlessCtpParams) => Promise<HeadlessCtpObject>
463
578
  }
464
579
 
465
580
  type CheckoutFunction = (opts: CheckoutOpts) => CheckoutObject
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pay-com/js",
3
- "version": "1.1.15",
3
+ "version": "1.2.0",
4
4
  "description": "Pay.com JS loading utility",
5
5
  "keywords": [
6
6
  "Pay.com",
@@ -18,7 +18,7 @@
18
18
  },
19
19
  "repository": {
20
20
  "type": "git",
21
- "url": "https://github.com/pay-com/js.git"
21
+ "url": "git+https://github.com/pay-com/js.git"
22
22
  },
23
23
  "files": [
24
24
  "lib/*.js",