@pay-com/js 1.1.16 → 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 {
@@ -335,7 +368,11 @@ export enum EVENT_TYPES {
335
368
  PAYMENT_PROCESSING = 'payment_processing',
336
369
  SETUP_PROCESSING = 'setup_processing',
337
370
  SESSION_EXPIRED = 'session_expired',
338
- 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'
339
376
  }
340
377
 
341
378
  export type ListenerFn = (
@@ -415,6 +452,7 @@ export type UpdateTransactionDetailsOpts = {
415
452
  consumer?: {
416
453
  firstName?: string
417
454
  lastName?: string
455
+ name?: string
418
456
  email?: string
419
457
  phone?: string
420
458
  }
@@ -448,22 +486,96 @@ export type UpdateTransactionDetailsFn = (
448
486
  config: UpdateTransactionDetailsOpts
449
487
  ) => Promise<unknown>
450
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
+
451
559
  export type CheckoutObject = {
452
560
  on: ListenerFn
453
561
  once: ListenerFn
454
562
  removeListener: ListenerFn
455
563
  EVENT_TYPES: typeof EVENT_TYPES
564
+ ELEMENT_TYPES: typeof ELEMENT_TYPES
456
565
  render: RenderFn
457
566
  paypal: PaypalFn
458
567
  universal: UniversalFn
568
+ blur: BlurFn
459
569
  update: UpdateFn
460
570
  updateTransactionDetails: UpdateTransactionDetailsFn
461
571
  submit: SubmitFn
462
- blur: BlurFn
572
+ resync: ResyncFn
573
+ canMakePayments: CanMakePaymentsFn
463
574
  validate: ValidateFn
464
575
  reset: ResetFn
465
576
  pay: PayFn
466
- // universalV2: UniversalFn
577
+ headless: HeadlessFn
578
+ ctp: (params: InitHeadlessCtpParams) => Promise<HeadlessCtpObject>
467
579
  }
468
580
 
469
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 {
@@ -334,7 +367,11 @@ enum EVENT_TYPES {
334
367
  PAYMENT_PROCESSING = 'payment_processing',
335
368
  SETUP_PROCESSING = 'setup_processing',
336
369
  SESSION_EXPIRED = 'session_expired',
337
- 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'
338
375
  }
339
376
 
340
377
  type ListenerFn = (
@@ -414,6 +451,7 @@ type UpdateTransactionDetailsOpts = {
414
451
  consumer?: {
415
452
  firstName?: string
416
453
  lastName?: string
454
+ name?: string
417
455
  email?: string
418
456
  phone?: string
419
457
  }
@@ -447,22 +485,96 @@ type UpdateTransactionDetailsFn = (
447
485
  config: UpdateTransactionDetailsOpts
448
486
  ) => Promise<unknown>
449
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
+
450
558
  type CheckoutObject = {
451
559
  on: ListenerFn
452
560
  once: ListenerFn
453
561
  removeListener: ListenerFn
454
562
  EVENT_TYPES: typeof EVENT_TYPES
563
+ ELEMENT_TYPES: typeof ELEMENT_TYPES
455
564
  render: RenderFn
456
565
  paypal: PaypalFn
457
566
  universal: UniversalFn
567
+ blur: BlurFn
458
568
  update: UpdateFn
459
569
  updateTransactionDetails: UpdateTransactionDetailsFn
460
570
  submit: SubmitFn
461
- blur: BlurFn
571
+ resync: ResyncFn
572
+ canMakePayments: CanMakePaymentsFn
462
573
  validate: ValidateFn
463
574
  reset: ResetFn
464
575
  pay: PayFn
465
- // universalV2: UniversalFn
576
+ headless: HeadlessFn
577
+ ctp: (params: InitHeadlessCtpParams) => Promise<HeadlessCtpObject>
466
578
  }
467
579
 
468
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.16",
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",