@test-glide/payment-react-native 0.1.2 → 0.1.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.
- package/README.md +1 -1
- package/lib/module/components/BivoCVCInput.js +21 -28
- package/lib/module/components/BivoCVCInput.js.map +1 -1
- package/lib/module/components/BivoCardInput.js +27 -34
- package/lib/module/components/BivoCardInput.js.map +1 -1
- package/lib/module/components/BivoTextInput.js +22 -29
- package/lib/module/components/BivoTextInput.js.map +1 -1
- package/lib/module/core/{Collector.js → BivoSecureStore.js} +40 -27
- package/lib/module/core/BivoSecureStore.js.map +1 -0
- package/lib/module/index.js +1 -1
- package/lib/module/index.js.map +1 -1
- package/lib/typescript/src/components/BivoCVCInput.d.ts +4 -4
- package/lib/typescript/src/components/BivoCVCInput.d.ts.map +1 -1
- package/lib/typescript/src/components/BivoCardInput.d.ts +4 -4
- package/lib/typescript/src/components/BivoCardInput.d.ts.map +1 -1
- package/lib/typescript/src/components/BivoTextInput.d.ts +4 -4
- package/lib/typescript/src/components/BivoTextInput.d.ts.map +1 -1
- package/lib/typescript/src/core/{Collector.d.ts → BivoSecureStore.d.ts} +5 -13
- package/lib/typescript/src/core/BivoSecureStore.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +1 -1
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/components/BivoCVCInput.tsx +41 -26
- package/src/components/BivoCardInput.tsx +60 -38
- package/src/components/BivoTextInput.tsx +80 -66
- package/src/core/BivoSecureStore.ts +164 -0
- package/src/index.ts +1 -1
- package/lib/module/core/Collector.js.map +0 -1
- package/lib/typescript/src/core/Collector.d.ts.map +0 -1
- package/src/core/Collector.ts +0 -130
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["fetchData","formatCardYear","formatString","BivoCollect","form","errors","fieldConfig","constructor","vaultId","environment","setField","fieldName","value","onStateChange","required","regex","errorMsg","error","validateField","trimmedValue","trim","test","digits","replace","length","monthStr","yearStr","split","month","parseInt","year","fullYear","now","Date","currentMonth","getMonth","currentYear","getFullYear","isSubmitDisabled","fieldNames","some","submit","endpoint","token","expiry","expiryDate","response","method","body","pan","cardNumber","expiry_month","Number","expiry_year","cvv","cvc","address","postal_code","zipCode","success","data"],"sourceRoot":"../../../src","sources":["core/Collector.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Collector.d.ts","sourceRoot":"","sources":["../../../../src/core/Collector.ts"],"names":[],"mappings":"AAIA,KAAK,UAAU,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEpD,qBAAa,WAAW;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,SAAS,GAAG,MAAM,CAAC;IAChC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAM;IAClC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAM;IACpC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAM;gBAEhF,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,GAAG,MAAM;IAK5D,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,EAAE,QAAQ,GAAE,OAAe,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM;IAUpJ,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM;IAoErG,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE;IAQ/B,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;;;;;;;;;CAyB7C"}
|
package/src/core/Collector.ts
DELETED
|
@@ -1,130 +0,0 @@
|
|
|
1
|
-
import { fetchData } from "../utils/fetch";
|
|
2
|
-
import { formatCardYear, formatString } from "../utils/utils";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
type FieldState = { value: string; error?: string };
|
|
6
|
-
|
|
7
|
-
export class BivoCollect {
|
|
8
|
-
vaultId: string;
|
|
9
|
-
environment: "sandbox" | "live";
|
|
10
|
-
form: Record<string, string> = {};
|
|
11
|
-
errors: Record<string, string> = {};
|
|
12
|
-
fieldConfig: Record<string, { required?: boolean; regex?: RegExp; errorMsg?: string }> = {};
|
|
13
|
-
|
|
14
|
-
constructor(vaultId: string, environment: "sandbox" | "live") {
|
|
15
|
-
this.vaultId = vaultId;
|
|
16
|
-
this.environment = environment;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
setField(fieldName: string, value: string, onStateChange?: (state: FieldState) => void, required: boolean = false, regex?: RegExp, errorMsg?: string) {
|
|
20
|
-
this.form[fieldName] = value;
|
|
21
|
-
this.fieldConfig[fieldName] = { required, regex, errorMsg };
|
|
22
|
-
const error = this.validateField(fieldName, value, required, regex, errorMsg);
|
|
23
|
-
this.errors[fieldName] = error || "";
|
|
24
|
-
onStateChange?.({ value, error });
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
validateField(fieldName: string, value: string, required?: boolean, regex?: RegExp, errorMsg?: string) {
|
|
30
|
-
const trimmedValue = value?.trim();
|
|
31
|
-
|
|
32
|
-
// Required check
|
|
33
|
-
if (!trimmedValue && required) return "Required";
|
|
34
|
-
|
|
35
|
-
// If custom regex is provided → use it first
|
|
36
|
-
if (regex && trimmedValue) {
|
|
37
|
-
if (!regex.test(trimmedValue)) {
|
|
38
|
-
return errorMsg || "Invalid value";
|
|
39
|
-
}
|
|
40
|
-
return "";
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
// Default validations
|
|
44
|
-
switch (fieldName) {
|
|
45
|
-
case "card": {
|
|
46
|
-
const digits = trimmedValue.replace(/\D/g, "");
|
|
47
|
-
if (digits.length < 12) return "Invalid card number";
|
|
48
|
-
break;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
case "cvv": {
|
|
52
|
-
if (!/^\d{3,4}$/.test(trimmedValue)) {
|
|
53
|
-
return "Invalid CVV";
|
|
54
|
-
}
|
|
55
|
-
break;
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
case "exp": {
|
|
59
|
-
// Format check MM/YY
|
|
60
|
-
if (!/^\d{2}\/\d{2}$/.test(trimmedValue)) {
|
|
61
|
-
return "Invalid expiry";
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
const [monthStr, yearStr] = trimmedValue.split("/");
|
|
65
|
-
if (!monthStr || !yearStr) {
|
|
66
|
-
return "Invalid expiry";
|
|
67
|
-
}
|
|
68
|
-
const month = parseInt(monthStr, 10);
|
|
69
|
-
const year = parseInt(yearStr, 10);
|
|
70
|
-
|
|
71
|
-
if (month < 1 || month > 12) {
|
|
72
|
-
return "Invalid month";
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
// Convert YY → YYYY (assume 2000-2099)
|
|
76
|
-
const fullYear = 2000 + year;
|
|
77
|
-
|
|
78
|
-
const now = new Date();
|
|
79
|
-
const currentMonth = now.getMonth() + 1;
|
|
80
|
-
const currentYear = now.getFullYear();
|
|
81
|
-
|
|
82
|
-
// Expiry check
|
|
83
|
-
if (
|
|
84
|
-
fullYear < currentYear ||
|
|
85
|
-
(fullYear === currentYear && month < currentMonth)
|
|
86
|
-
) {
|
|
87
|
-
return "Card expired";
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
break;
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
return "";
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
isSubmitDisabled(fieldNames: string[]) {
|
|
98
|
-
return fieldNames.some((fieldName) => {
|
|
99
|
-
const value = this.form[fieldName]?.trim() ?? "";
|
|
100
|
-
const error = this.errors[fieldName];
|
|
101
|
-
return !value || !!error;
|
|
102
|
-
});
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
async submit(endpoint: string, token: string) {
|
|
106
|
-
// console.log("Submitting form:", this.form, this.errors);
|
|
107
|
-
const expiry = this.form.expiryDate?.split("/") || [];
|
|
108
|
-
|
|
109
|
-
// Replace fetchData with your API call
|
|
110
|
-
const response = await fetchData(endpoint, {
|
|
111
|
-
method: "POST",
|
|
112
|
-
body: {
|
|
113
|
-
token,
|
|
114
|
-
pan:formatString(this.form.cardNumber || ""),
|
|
115
|
-
expiry_month: Number(expiry[0] || 0) || null,
|
|
116
|
-
expiry_year: formatCardYear(expiry[1] || "") || null,
|
|
117
|
-
cvv: this.form.cvc ? formatString(this.form.cvc) : null,
|
|
118
|
-
address: {
|
|
119
|
-
postal_code: this.form.zipCode ? formatString(this.form.zipCode) : null,
|
|
120
|
-
},
|
|
121
|
-
},
|
|
122
|
-
});
|
|
123
|
-
if (response.error) {
|
|
124
|
-
return{ success: false, error: response.error };
|
|
125
|
-
} else {
|
|
126
|
-
return{ success: true, data: response.data };
|
|
127
|
-
}
|
|
128
|
-
// return response.json();
|
|
129
|
-
}
|
|
130
|
-
}
|