react-native-bootpay-api 1.4.2 → 1.4.3
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/CHANGELOG.md +3 -0
- package/lib/commonjs/BootpayAnalytics.js +133 -0
- package/lib/commonjs/BootpayAnalytics.js.map +1 -0
- package/lib/commonjs/BootpayWebView.js.map +1 -1
- package/lib/commonjs/index.d.js +19 -17
- package/lib/commonjs/index.d.js.map +1 -1
- package/lib/commonjs/index.js +12 -6
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/useBootpay.js +42 -34
- package/lib/commonjs/useBootpay.js.map +1 -1
- package/lib/module/BootpayAnalytics.js +116 -0
- package/lib/module/BootpayAnalytics.js.map +1 -0
- package/lib/module/BootpayWebView.js.map +1 -1
- package/lib/module/index.d.js +27 -16
- package/lib/module/index.d.js.map +1 -1
- package/lib/module/index.js +4 -2
- package/lib/module/index.js.map +1 -1
- package/lib/module/useBootpay.js +42 -22
- package/lib/module/useBootpay.js.map +1 -1
- package/package.json +5 -2
- package/src/BootpayAnalytics.js +131 -0
- package/src/BootpayWebView.js +1 -1
- package/src/index.d.ts +36 -18
- package/src/index.js +4 -2
- package/src/useBootpay.js +51 -30
package/CHANGELOG.md
CHANGED
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.pageTrace = exports.userTrace = void 0;
|
|
7
|
+
|
|
8
|
+
var _reactNativeBase = _interopRequireDefault(require("react-native-base64"));
|
|
9
|
+
|
|
10
|
+
var _reactNativeDeviceInfo = _interopRequireDefault(require("react-native-device-info"));
|
|
11
|
+
|
|
12
|
+
var _reactNativeCryptoAesCbc = _interopRequireDefault(require("react-native-crypto-aes-cbc"));
|
|
13
|
+
|
|
14
|
+
var _reactNative = require("react-native");
|
|
15
|
+
|
|
16
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
17
|
+
|
|
18
|
+
// import CryptoJS from 'crypto-js';
|
|
19
|
+
var Aes = _reactNative.NativeModules.Aes;
|
|
20
|
+
|
|
21
|
+
const userTrace = async (applicationId, userId, phone, email, gender, birth, area) => {
|
|
22
|
+
try {
|
|
23
|
+
const payload = {
|
|
24
|
+
"id": userId,
|
|
25
|
+
"ver": _reactNativeDeviceInfo.default.getVersion(),
|
|
26
|
+
"application_id": applicationId,
|
|
27
|
+
"phone": phone,
|
|
28
|
+
"email": email,
|
|
29
|
+
"gender": gender,
|
|
30
|
+
"birth": birth,
|
|
31
|
+
"area": area
|
|
32
|
+
};
|
|
33
|
+
var key = getRandomKey(32);
|
|
34
|
+
var iv = getRandomKey(16);
|
|
35
|
+
|
|
36
|
+
try {
|
|
37
|
+
const data = await Aes.encrypt(JSON.stringify(payload), stringToHex(key), stringToHex(iv)).then(cipher => cipher);
|
|
38
|
+
const response = await fetch('https://analytics.bootpay.co.kr/login', {
|
|
39
|
+
method: 'POST',
|
|
40
|
+
headers: {
|
|
41
|
+
Accept: 'application/json',
|
|
42
|
+
'Content-Type': 'application/json'
|
|
43
|
+
},
|
|
44
|
+
body: JSON.stringify({
|
|
45
|
+
data: data,
|
|
46
|
+
session_key: await getSessionKey(key, iv)
|
|
47
|
+
})
|
|
48
|
+
});
|
|
49
|
+
const json = await response.json();
|
|
50
|
+
return json;
|
|
51
|
+
} catch (e) {
|
|
52
|
+
console.log(e);
|
|
53
|
+
}
|
|
54
|
+
} catch (error) {
|
|
55
|
+
console.error(error);
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
exports.userTrace = userTrace;
|
|
60
|
+
|
|
61
|
+
const pageTrace = async (applicationId, url, pageType, items) => {
|
|
62
|
+
try {
|
|
63
|
+
const payload = {
|
|
64
|
+
"application_id": applicationId,
|
|
65
|
+
"url": url,
|
|
66
|
+
"page_type": pageType,
|
|
67
|
+
"items": items,
|
|
68
|
+
"referer": ''
|
|
69
|
+
};
|
|
70
|
+
var key = getRandomKey(32);
|
|
71
|
+
var iv = getRandomKey(16);
|
|
72
|
+
|
|
73
|
+
try {
|
|
74
|
+
const data = await Aes.encrypt(JSON.stringify(payload), stringToHex(key), stringToHex(iv)).then(cipher => cipher);
|
|
75
|
+
const response = await fetch('https://analytics.bootpay.co.kr/call', {
|
|
76
|
+
method: 'POST',
|
|
77
|
+
headers: {
|
|
78
|
+
Accept: 'application/json',
|
|
79
|
+
'Content-Type': 'application/json'
|
|
80
|
+
},
|
|
81
|
+
body: JSON.stringify({
|
|
82
|
+
data: data,
|
|
83
|
+
session_key: await getSessionKey(key, iv)
|
|
84
|
+
})
|
|
85
|
+
});
|
|
86
|
+
const json = await response.json();
|
|
87
|
+
return json;
|
|
88
|
+
} catch (e) {
|
|
89
|
+
console.log(e);
|
|
90
|
+
}
|
|
91
|
+
} catch (error) {
|
|
92
|
+
console.error(error);
|
|
93
|
+
}
|
|
94
|
+
};
|
|
95
|
+
|
|
96
|
+
exports.pageTrace = pageTrace;
|
|
97
|
+
|
|
98
|
+
const stringToHex = str => {
|
|
99
|
+
var hex = '';
|
|
100
|
+
|
|
101
|
+
for (var i = 0, l = str.length; i < l; i++) {
|
|
102
|
+
hex += str.charCodeAt(i).toString(16);
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
return hex;
|
|
106
|
+
};
|
|
107
|
+
|
|
108
|
+
const getRandomKey = length => {
|
|
109
|
+
var text = '';
|
|
110
|
+
var keys = 'abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ';
|
|
111
|
+
|
|
112
|
+
for (var i = 0; i < length; i++) text += keys.charAt(Math.floor(Math.random() * keys.length));
|
|
113
|
+
|
|
114
|
+
return text;
|
|
115
|
+
};
|
|
116
|
+
|
|
117
|
+
const getSessionKey = async (key, iv) => {
|
|
118
|
+
const keyValue = _reactNativeBase.default.encode(key);
|
|
119
|
+
|
|
120
|
+
const ivValue = _reactNativeBase.default.encode(iv);
|
|
121
|
+
|
|
122
|
+
return `${keyValue}##${ivValue}`;
|
|
123
|
+
};
|
|
124
|
+
|
|
125
|
+
const strEncode = async (str, key, iv) => {
|
|
126
|
+
return await Aes.encrypt(str, key, iv).then(cipher => {
|
|
127
|
+
Aes.hmac256(cipher, key).then(hash => {
|
|
128
|
+
console.log('HMAC', hash);
|
|
129
|
+
return hash;
|
|
130
|
+
});
|
|
131
|
+
});
|
|
132
|
+
};
|
|
133
|
+
//# sourceMappingURL=BootpayAnalytics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["BootpayAnalytics.js"],"names":["Aes","NativeModules","userTrace","applicationId","userId","phone","email","gender","birth","area","payload","DeviceInfo","getVersion","key","getRandomKey","iv","data","encrypt","JSON","stringify","stringToHex","then","cipher","response","fetch","method","headers","Accept","body","session_key","getSessionKey","json","e","console","log","error","pageTrace","url","pageType","items","str","hex","i","l","length","charCodeAt","toString","text","keys","charAt","Math","floor","random","keyValue","base64","encode","ivValue","strEncode","hmac256","hash"],"mappings":";;;;;;;AAEA;;AACA;;AAGA;;AACA;;;;AAFA;AAGA,IAAIA,GAAG,GAAGC,2BAAcD,GAAxB;;AAGA,MAAME,SAAS,GAAG,OAAOC,aAAP,EAAsBC,MAAtB,EAA8BC,KAA9B,EAAqCC,KAArC,EAA4CC,MAA5C,EAAoDC,KAApD,EAA2DC,IAA3D,KAAoE;AAClF,MAAI;AACA,UAAMC,OAAO,GAAG;AACZ,YAAMN,MADM;AAEZ,aAAOO,+BAAWC,UAAX,EAFK;AAGZ,wBAAkBT,aAHN;AAIZ,eAASE,KAJG;AAKZ,eAASC,KALG;AAMZ,gBAAUC,MANE;AAOZ,eAASC,KAPG;AAQZ,cAAQC;AARI,KAAhB;AAWA,QAAII,GAAG,GAAGC,YAAY,CAAC,EAAD,CAAtB;AACA,QAAIC,EAAE,GAAGD,YAAY,CAAC,EAAD,CAArB;;AAEA,QAAI;AACA,YAAME,IAAI,GAAG,MAAMhB,GAAG,CAACiB,OAAJ,CAAYC,IAAI,CAACC,SAAL,CAAeT,OAAf,CAAZ,EAAqCU,WAAW,CAACP,GAAD,CAAhD,EAAuDO,WAAW,CAACL,EAAD,CAAlE,EAAwEM,IAAxE,CAA6EC,MAAM,IAAIA,MAAvF,CAAnB;AAEA,YAAMC,QAAQ,GAAG,MAAMC,KAAK,CACxB,uCADwB,EAExB;AACIC,QAAAA,MAAM,EAAE,MADZ;AAEIC,QAAAA,OAAO,EAAE;AACLC,UAAAA,MAAM,EAAE,kBADH;AAEL,0BAAgB;AAFX,SAFb;AAMIC,QAAAA,IAAI,EAAEV,IAAI,CAACC,SAAL,CAAe;AACjBH,UAAAA,IAAI,EAAEA,IADW;AAEjBa,UAAAA,WAAW,EAAE,MAAMC,aAAa,CAACjB,GAAD,EAAME,EAAN;AAFf,SAAf;AANV,OAFwB,CAA5B;AAcE,YAAMgB,IAAI,GAAG,MAAMR,QAAQ,CAACQ,IAAT,EAAnB;AACA,aAAOA,IAAP;AACL,KAnBD,CAmBE,OAAOC,CAAP,EAAU;AACRC,MAAAA,OAAO,CAACC,GAAR,CAAYF,CAAZ;AACH;AACJ,GArCD,CAqCE,OAAOG,KAAP,EAAc;AACZF,IAAAA,OAAO,CAACE,KAAR,CAAcA,KAAd;AACH;AACJ,CAzCD;;;;AA2CA,MAAMC,SAAS,GAAG,OAAOjC,aAAP,EAAsBkC,GAAtB,EAA2BC,QAA3B,EAAqCC,KAArC,KAA+C;AAC7D,MAAI;AACA,UAAM7B,OAAO,GAAG;AACZ,wBAAkBP,aADN;AAEZ,aAAOkC,GAFK;AAGZ,mBAAaC,QAHD;AAIZ,eAASC,KAJG;AAKZ,iBAAW;AALC,KAAhB;AAQA,QAAI1B,GAAG,GAAGC,YAAY,CAAC,EAAD,CAAtB;AACA,QAAIC,EAAE,GAAGD,YAAY,CAAC,EAAD,CAArB;;AAEA,QAAI;AACA,YAAME,IAAI,GAAG,MAAMhB,GAAG,CAACiB,OAAJ,CAAYC,IAAI,CAACC,SAAL,CAAeT,OAAf,CAAZ,EAAqCU,WAAW,CAACP,GAAD,CAAhD,EAAuDO,WAAW,CAACL,EAAD,CAAlE,EAAwEM,IAAxE,CAA6EC,MAAM,IAAIA,MAAvF,CAAnB;AAEA,YAAMC,QAAQ,GAAG,MAAMC,KAAK,CACxB,sCADwB,EAExB;AACIC,QAAAA,MAAM,EAAE,MADZ;AAEIC,QAAAA,OAAO,EAAE;AACLC,UAAAA,MAAM,EAAE,kBADH;AAEL,0BAAgB;AAFX,SAFb;AAMIC,QAAAA,IAAI,EAAEV,IAAI,CAACC,SAAL,CAAe;AACjBH,UAAAA,IAAI,EAAEA,IADW;AAEjBa,UAAAA,WAAW,EAAE,MAAMC,aAAa,CAACjB,GAAD,EAAME,EAAN;AAFf,SAAf;AANV,OAFwB,CAA5B;AAcE,YAAMgB,IAAI,GAAG,MAAMR,QAAQ,CAACQ,IAAT,EAAnB;AACA,aAAOA,IAAP;AACL,KAnBD,CAmBE,OAAOC,CAAP,EAAU;AACRC,MAAAA,OAAO,CAACC,GAAR,CAAYF,CAAZ;AACH;AACJ,GAlCD,CAkCE,OAAOG,KAAP,EAAc;AACZF,IAAAA,OAAO,CAACE,KAAR,CAAcA,KAAd;AACH;AACJ,CAtCD;;;;AAwCA,MAAMf,WAAW,GAAIoB,GAAD,IAAS;AACzB,MAAIC,GAAG,GAAG,EAAV;;AACA,OAAK,IAAIC,CAAC,GAAG,CAAR,EAAWC,CAAC,GAAGH,GAAG,CAACI,MAAxB,EAAgCF,CAAC,GAAGC,CAApC,EAAuCD,CAAC,EAAxC,EAA4C;AACxCD,IAAAA,GAAG,IAAID,GAAG,CAACK,UAAJ,CAAeH,CAAf,EAAkBI,QAAlB,CAA2B,EAA3B,CAAP;AACH;;AACD,SAAOL,GAAP;AACH,CAND;;AAQA,MAAM3B,YAAY,GAAI8B,MAAD,IAAY;AAC7B,MAAIG,IAAI,GAAG,EAAX;AACA,MAAIC,IAAI,GAAG,gEAAX;;AAEA,OAAK,IAAIN,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGE,MAApB,EAA4BF,CAAC,EAA7B,EACIK,IAAI,IAAIC,IAAI,CAACC,MAAL,CAAYC,IAAI,CAACC,KAAL,CAAWD,IAAI,CAACE,MAAL,KAAgBJ,IAAI,CAACJ,MAAhC,CAAZ,CAAR;;AAEJ,SAAOG,IAAP;AACH,CARD;;AAWA,MAAMjB,aAAa,GAAG,OAAOjB,GAAP,EAAYE,EAAZ,KAAmB;AACrC,QAAMsC,QAAQ,GAAGC,yBAAOC,MAAP,CAAc1C,GAAd,CAAjB;;AACA,QAAM2C,OAAO,GAAGF,yBAAOC,MAAP,CAAcxC,EAAd,CAAhB;;AAEA,SAAQ,GAAEsC,QAAS,KAAIG,OAAQ,EAA/B;AACH,CALD;;AAOA,MAAMC,SAAS,GAAG,OAAOjB,GAAP,EAAY3B,GAAZ,EAAiBE,EAAjB,KAAwB;AACtC,SAAO,MAAMf,GAAG,CAACiB,OAAJ,CAAYuB,GAAZ,EAAiB3B,GAAjB,EAAsBE,EAAtB,EAA0BM,IAA1B,CAA+BC,MAAM,IAAI;AAClDtB,IAAAA,GAAG,CAAC0D,OAAJ,CAAYpC,MAAZ,EAAoBT,GAApB,EAAyBQ,IAAzB,CAA8BsC,IAAI,IAAI;AAClC1B,MAAAA,OAAO,CAACC,GAAR,CAAY,MAAZ,EAAoByB,IAApB;AACA,aAAOA,IAAP;AACH,KAHD;AAIH,GALY,CAAb;AAOH,CARD","sourcesContent":["\n \nimport base64 from 'react-native-base64'\nimport DeviceInfo from 'react-native-device-info';\n\n// import CryptoJS from 'crypto-js';\nimport CryptoAesCbc from 'react-native-crypto-aes-cbc';\nimport { NativeModules, Platform } from 'react-native'\nvar Aes = NativeModules.Aes\n\n\nconst userTrace = async (applicationId, userId, phone, email, gender, birth, area) => { \n try { \n const payload = {\n \"id\": userId, \n \"ver\": DeviceInfo.getVersion(),\n \"application_id\": applicationId, \n \"phone\": phone,\n \"email\": email,\n \"gender\": gender,\n \"birth\": birth,\n \"area\": area\n };\n\n var key = getRandomKey(32);\n var iv = getRandomKey(16);\n \n try { \n const data = await Aes.encrypt(JSON.stringify(payload), stringToHex(key), stringToHex(iv)).then(cipher => cipher);\n\n const response = await fetch(\n 'https://analytics.bootpay.co.kr/login',\n {\n method: 'POST',\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n data: data,\n session_key: await getSessionKey(key, iv)\n })\n }\n );\n const json = await response.json();\n return json;\n } catch (e) {\n console.log(e);\n } \n } catch (error) {\n console.error(error);\n }\n}\n\nconst pageTrace = async (applicationId, url, pageType, items) => { \n try { \n const payload = {\n \"application_id\": applicationId, \n \"url\": url, \n \"page_type\": pageType,\n \"items\": items,\n \"referer\": ''\n }; \n\n var key = getRandomKey(32);\n var iv = getRandomKey(16);\n \n try { \n const data = await Aes.encrypt(JSON.stringify(payload), stringToHex(key), stringToHex(iv)).then(cipher => cipher);\n\n const response = await fetch(\n 'https://analytics.bootpay.co.kr/call',\n {\n method: 'POST',\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n data: data,\n session_key: await getSessionKey(key, iv)\n })\n }\n );\n const json = await response.json();\n return json;\n } catch (e) {\n console.log(e);\n } \n } catch (error) {\n console.error(error);\n }\n}\n\nconst stringToHex = (str) => {\n var hex = ''\n for (var i = 0, l = str.length; i < l; i++) {\n hex += str.charCodeAt(i).toString(16)\n }\n return hex\n}\n\nconst getRandomKey = (length) => {\n var text = '';\n var keys = 'abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ';\n\n for (var i = 0; i < length; i++)\n text += keys.charAt(Math.floor(Math.random() * keys.length));\n\n return text;\n}\n\n\nconst getSessionKey = async (key, iv) => {\n const keyValue = base64.encode(key);\n const ivValue = base64.encode(iv);\n\n return `${keyValue}##${ivValue}`;\n}\n\nconst strEncode = async (str, key, iv) => {\n return await Aes.encrypt(str, key, iv).then(cipher => {\n Aes.hmac256(cipher, key).then(hash => {\n console.log('HMAC', hash)\n return hash;\n })\n })\n\n}\n\nexport { userTrace, pageTrace }\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["BootpayWebView.js"],"names":["BootpayWebView","Component","useRef","WebView","visibility","script","firstLoad","payload","items","user","extra","application_id","Platform","OS","props","ios_application_id","android_application_id","user_info","quickPopup","undefined","quick_popup","setState","getMountJavascript","generateScript","showCloseButton","show_close_button","UserInfo","updateInfo","removePaymentWindow","getBootpayPlatform","getAnalyticsData","onError","onCancel","onReady","onConfirm","onClose","onDone","JSON","stringify","nativeEvent","data","json","action","message","dismiss","parse","url","callJavaScript","webView","injectJavaScript","uuid","getBootpayUUID","bootpaySK","getBootpaySK","bootLastTime","getBootpayLastTime","elaspedTime","Date","now","componentWillUnmount","setBootpayLastTime","render","state","flex","cancelData","closeData","styles","overlay","require","wv","uri","onMessage","onShouldStartLoadWithRequest","StyleSheet","create","container","justifyContent","alignItems","backgroundColor","welcome","fontSize","textAlign","margin","width","height","right","alignSelf"],"mappings":"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","sourcesContent":["\n\nimport React, { Component, useRef } from 'react';\nimport { SafeAreaView, Modal, Platform, TouchableOpacity, Image, StyleSheet } from 'react-native';\nimport WebView from 'react-native-webview-bootpay';\nimport UserInfo from './UserInfo'\n\nexport class BootpayWebView extends Component {\n webView = useRef<WebView>(null); \n\n state = {\n visibility: false, \n script: '',\n firstLoad: false\n } \ns\n async componentWillUnmount() {\n this.setState(\n {\n visibility: false, \n firstLoad: false,\n showCloseButton: false\n }\n )\n UserInfo.setBootpayLastTime(Date.now());\n }\n\n render() {\n\n\n return <Modal\n animationType={'slide'}\n transparent={false}\n visible={this.state.visibility}>\n <SafeAreaView style={{ flex: 1 }}>\n {\n this.state.showCloseButton &&\n <TouchableOpacity\n onPress={() => {\n var cancelData = {\n action: 'BootpayCancel',\n message: '사용자에 의해 취소되었습니다'\n }\n var closeData = {\n action: 'BootpayClose',\n message: '결제창이 닫혔습니다'\n }\n \n if(this.props.onCancel != undefined) this.props.onCancel(cancelData);\n if(this.props.onClose != undefined) this.props.onClose(closeData); \n\n this.setState({visibility: false})\n } }>\n <Image \n style={[styles.overlay]}\n source={require('../images/close.png')} />\n </TouchableOpacity>\n }\n <WebView\n ref={(wv) => this.webView = wv}\n useWebKit={true}\n originWhitelist={['*']}\n source={{\n uri: 'https://inapp.bootpay.co.kr/3.3.3/production.html'\n }}\n injectedJavaScript={this.state.script}\n javaScriptEnabled={true}\n javaScriptCanOpenWindowsAutomatically={true}\n scalesPageToFit={true} \n onMessage={this.onMessage}\n onShouldStartLoadWithRequest={this.onShouldStartLoadWithRequest}\n />\n </SafeAreaView>\n\n </Modal>\n }\n\n request = async (payload, items, user, extra) => { \n\n payload.application_id = Platform.OS == 'ios' ? this.props.ios_application_id : this.props.android_application_id;\n payload.items = items;\n payload.user_info = user;\n payload.extra = extra; \n \n\n var quickPopup = '';\n\n if(extra != undefined && extra.quick_popup != undefined) {\n if(extra.quick_popup == 1) {\n quickPopup = 'BootPay.startQuickPopup();';\n }\n } \n \n\n //visibility가 true가 되면 webview onLoaded가 실행됨\n this.setState(\n {\n visibility: true,\n script: `\n ${await this.getMountJavascript()}\n ${quickPopup}\n ${this.generateScript(payload)}\n `,\n firstLoad: false,\n showCloseButton: extra.show_close_button || false \n }\n ) \n\n UserInfo.updateInfo();\n }\n\n dismiss = () => {\n this.setState(\n ({ visibility }) => ({\n visibility: false\n })\n )\n this.removePaymentWindow();\n }\n \n\n getMountJavascript = async () => { \n return `\n ${this.getBootpayPlatform()}\n ${await this.getAnalyticsData()}\n `; \n }\n\n\n generateScript= (payload) => { \n const onError = '.error(function(data){ window.BootpayRNWebView.postMessage( JSON.stringify(data) ); })';\n const onCancel = '.cancel(function(data){ window.BootpayRNWebView.postMessage( JSON.stringify(data) ); })';\n const onReady = '.ready(function(data){ window.BootpayRNWebView.postMessage( JSON.stringify(data) ); })';\n const onConfirm = '.confirm(function(data){ window.BootpayRNWebView.postMessage( JSON.stringify(data) ); })';\n const onClose = '.close(function(data){ window.BootpayRNWebView.postMessage(\"close\"); })';\n const onDone = '.done(function(data){ window.BootpayRNWebView.postMessage( JSON.stringify(data) ); })';\n\n return `BootPay.request(${JSON.stringify(payload)})` + onError + onCancel + onReady + onConfirm + onClose + onDone + '; void(0);';\n }\n\n onMessage = ({ nativeEvent }) => { \n if (nativeEvent == undefined || nativeEvent.data == undefined) return;\n \n if(nativeEvent.data == 'close') {\n if(this.props.onClose == undefined) return;\n var json = {\n action: 'BootpayClose',\n message: '결제창이 닫혔습니다'\n }\n this.props.onClose(json);\n this.dismiss();\n return;\n }\n\n const data = JSON.parse(nativeEvent.data);\n switch (data.action) {\n case 'BootpayCancel':\n if(this.props.onCancel != undefined) this.props.onCancel(data);\n this.setState(\n {\n visibility: false\n }\n )\n break;\n case 'BootpayError':\n if(this.props.onError != undefined) this.props.onError(data);\n this.setState(\n {\n visibility: false\n }\n )\n break;\n case 'BootpayBankReady':\n if(this.props.onReady != undefined) this.props.onReady(data);\n break;\n case 'BootpayConfirm':\n if(this.props.onConfirm != undefined) this.props.onConfirm(data);\n break;\n case 'BootpayDone':\n if(this.props.onDone != undefined) this.props.onDone(data);\n this.setState(\n {\n visibility: false\n }\n )\n break;\n }\n }\n\n onShouldStartLoadWithRequest = (url) => { \n return true;\n }\n\n getBootpayPlatform = () => { \n if(Platform.OS == 'ios') {\n return \"BootPay.setDevice('IOS');\";\n } else if(Platform.OS == 'android'){\n return \"BootPay.setDevice('ANDROID');\"; \n }\n }\n\n // setPayScript = () => {\n // const fullScript = this.generateScript(this.state.script);\n // this.injectJavaScript(fullScript);\n // if(this.state.showCloseButton == true) {\n // if(this.webView == null || this.webView == undefined) return; \n // this.webView.showCloseButton();\n // }\n // } \n\n transactionConfirm = (data) => {\n // console.log('transactionConfirm: ' + data);\n\n var json = JSON.stringify(data)\n this.callJavaScript(`\n BootPay.transactionConfirm(${json});\n `);\n }\n\n removePaymentWindow = () => {\n this.callJavaScript(`\n BootPay.removePaymentWindow();\n `);\n } \n\n callJavaScript = (script) => {\n if(this.webView == null || this.webView == undefined) return;\n\n // console.log('callJavascript: ' + script);\n\n this.webView.injectJavaScript(`\n javascript:(function(){${script} })()\n `);\n // this.webView.evalu\n } \n\n getAnalyticsData = async () => { \n const uuid = await UserInfo.getBootpayUUID(); \n const bootpaySK = await UserInfo.getBootpaySK();\n const bootLastTime = await UserInfo.getBootpayLastTime(); \n\n\n const elaspedTime = Date.now() - bootLastTime; \n return `window.BootPay.setAnalyticsData({uuid:'${uuid}',sk:'${bootpaySK}',sk_time:${bootLastTime},time:${elaspedTime}});`;\n // this.callJavaScript(`window.BootPay.setAnalyticsData({uuid:'${uuid}',sk:'${bootpaySK}',sk_time:${bootLastTime},time:${elaspedTime}});`); \n }\n} \n\n\nvar styles = StyleSheet.create({\n container: {\n flex: 1,\n justifyContent: 'center',\n alignItems: 'center',\n backgroundColor: '#F5FCFF',\n },\n welcome: {\n fontSize: 20,\n textAlign: 'center',\n margin: 10,\n },\n // Flex to fill, position absolute, \n // Fixed left/top, and the width set to the window width\n overlay: { \n width: 25,\n height: 25, \n right: 5,\n alignSelf: 'flex-end'\n } \n });"]}
|
|
1
|
+
{"version":3,"sources":["BootpayWebView.js"],"names":["BootpayWebView","Component","useRef","WebView","visibility","script","firstLoad","payload","items","user","extra","application_id","Platform","OS","props","ios_application_id","android_application_id","user_info","quickPopup","undefined","quick_popup","setState","getMountJavascript","generateScript","showCloseButton","show_close_button","UserInfo","updateInfo","removePaymentWindow","getBootpayPlatform","getAnalyticsData","onError","onCancel","onReady","onConfirm","onClose","onDone","JSON","stringify","nativeEvent","data","json","action","message","dismiss","parse","url","callJavaScript","webView","injectJavaScript","uuid","getBootpayUUID","bootpaySK","getBootpaySK","bootLastTime","getBootpayLastTime","elaspedTime","Date","now","componentWillUnmount","setBootpayLastTime","render","state","flex","cancelData","closeData","styles","overlay","require","wv","uri","onMessage","onShouldStartLoadWithRequest","StyleSheet","create","container","justifyContent","alignItems","backgroundColor","welcome","fontSize","textAlign","margin","width","height","right","alignSelf"],"mappings":"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","sourcesContent":["\n\nimport React, { Component, useRef } from 'react';\nimport { SafeAreaView, Modal, Platform, TouchableOpacity, Image, StyleSheet } from 'react-native';\nimport WebView from 'react-native-webview-bootpay';\nimport UserInfo from './UserInfo'\n\nexport class BootpayWebView extends Component {\n webView = useRef<WebView>(null); \n\n state = {\n visibility: false, \n script: '',\n firstLoad: false\n } \ns\n async componentWillUnmount() {\n this.setState(\n {\n visibility: false, \n firstLoad: false,\n showCloseButton: false\n }\n )\n UserInfo.setBootpayLastTime(Date.now());\n }\n \n render() {\n\n\n return <Modal\n animationType={'slide'}\n transparent={false}\n visible={this.state.visibility}>\n <SafeAreaView style={{ flex: 1 }}>\n {\n this.state.showCloseButton &&\n <TouchableOpacity\n onPress={() => {\n var cancelData = {\n action: 'BootpayCancel',\n message: '사용자에 의해 취소되었습니다'\n }\n var closeData = {\n action: 'BootpayClose',\n message: '결제창이 닫혔습니다'\n }\n \n if(this.props.onCancel != undefined) this.props.onCancel(cancelData);\n if(this.props.onClose != undefined) this.props.onClose(closeData); \n\n this.setState({visibility: false})\n } }>\n <Image \n style={[styles.overlay]}\n source={require('../images/close.png')} />\n </TouchableOpacity>\n }\n <WebView\n ref={(wv) => this.webView = wv}\n useWebKit={true}\n originWhitelist={['*']}\n source={{\n uri: 'https://inapp.bootpay.co.kr/3.3.3/production.html'\n }}\n injectedJavaScript={this.state.script}\n javaScriptEnabled={true}\n javaScriptCanOpenWindowsAutomatically={true}\n scalesPageToFit={true} \n onMessage={this.onMessage}\n onShouldStartLoadWithRequest={this.onShouldStartLoadWithRequest}\n />\n </SafeAreaView>\n\n </Modal>\n }\n\n request = async (payload, items, user, extra) => { \n\n payload.application_id = Platform.OS == 'ios' ? this.props.ios_application_id : this.props.android_application_id;\n payload.items = items;\n payload.user_info = user;\n payload.extra = extra; \n \n\n var quickPopup = '';\n\n if(extra != undefined && extra.quick_popup != undefined) {\n if(extra.quick_popup == 1) {\n quickPopup = 'BootPay.startQuickPopup();';\n }\n } \n \n\n //visibility가 true가 되면 webview onLoaded가 실행됨\n this.setState(\n {\n visibility: true,\n script: `\n ${await this.getMountJavascript()}\n ${quickPopup}\n ${this.generateScript(payload)}\n `,\n firstLoad: false,\n showCloseButton: extra.show_close_button || false \n }\n ) \n\n UserInfo.updateInfo();\n }\n\n dismiss = () => {\n this.setState(\n ({ visibility }) => ({\n visibility: false\n })\n )\n this.removePaymentWindow();\n }\n \n\n getMountJavascript = async () => { \n return `\n ${this.getBootpayPlatform()}\n ${await this.getAnalyticsData()}\n `; \n }\n\n\n generateScript= (payload) => { \n const onError = '.error(function(data){ window.BootpayRNWebView.postMessage( JSON.stringify(data) ); })';\n const onCancel = '.cancel(function(data){ window.BootpayRNWebView.postMessage( JSON.stringify(data) ); })';\n const onReady = '.ready(function(data){ window.BootpayRNWebView.postMessage( JSON.stringify(data) ); })';\n const onConfirm = '.confirm(function(data){ window.BootpayRNWebView.postMessage( JSON.stringify(data) ); })';\n const onClose = '.close(function(data){ window.BootpayRNWebView.postMessage(\"close\"); })';\n const onDone = '.done(function(data){ window.BootpayRNWebView.postMessage( JSON.stringify(data) ); })';\n\n return `BootPay.request(${JSON.stringify(payload)})` + onError + onCancel + onReady + onConfirm + onClose + onDone + '; void(0);';\n }\n\n onMessage = ({ nativeEvent }) => { \n if (nativeEvent == undefined || nativeEvent.data == undefined) return;\n \n if(nativeEvent.data == 'close') {\n if(this.props.onClose == undefined) return;\n var json = {\n action: 'BootpayClose',\n message: '결제창이 닫혔습니다'\n }\n this.props.onClose(json);\n this.dismiss();\n return;\n }\n\n const data = JSON.parse(nativeEvent.data);\n switch (data.action) {\n case 'BootpayCancel':\n if(this.props.onCancel != undefined) this.props.onCancel(data);\n this.setState(\n {\n visibility: false\n }\n )\n break;\n case 'BootpayError':\n if(this.props.onError != undefined) this.props.onError(data);\n this.setState(\n {\n visibility: false\n }\n )\n break;\n case 'BootpayBankReady':\n if(this.props.onReady != undefined) this.props.onReady(data);\n break;\n case 'BootpayConfirm':\n if(this.props.onConfirm != undefined) this.props.onConfirm(data);\n break;\n case 'BootpayDone':\n if(this.props.onDone != undefined) this.props.onDone(data);\n this.setState(\n {\n visibility: false\n }\n )\n break;\n }\n }\n\n onShouldStartLoadWithRequest = (url) => { \n return true;\n }\n\n getBootpayPlatform = () => { \n if(Platform.OS == 'ios') {\n return \"BootPay.setDevice('IOS');\";\n } else if(Platform.OS == 'android'){\n return \"BootPay.setDevice('ANDROID');\"; \n }\n }\n\n // setPayScript = () => {\n // const fullScript = this.generateScript(this.state.script);\n // this.injectJavaScript(fullScript);\n // if(this.state.showCloseButton == true) {\n // if(this.webView == null || this.webView == undefined) return; \n // this.webView.showCloseButton();\n // }\n // } \n\n transactionConfirm = (data) => {\n // console.log('transactionConfirm: ' + data);\n\n var json = JSON.stringify(data)\n this.callJavaScript(`\n BootPay.transactionConfirm(${json});\n `);\n }\n\n removePaymentWindow = () => {\n this.callJavaScript(`\n BootPay.removePaymentWindow();\n `);\n } \n\n callJavaScript = (script) => {\n if(this.webView == null || this.webView == undefined) return;\n\n // console.log('callJavascript: ' + script);\n\n this.webView.injectJavaScript(`\n javascript:(function(){${script} })()\n `);\n // this.webView.evalu\n } \n\n getAnalyticsData = async () => { \n const uuid = await UserInfo.getBootpayUUID(); \n const bootpaySK = await UserInfo.getBootpaySK();\n const bootLastTime = await UserInfo.getBootpayLastTime(); \n\n\n const elaspedTime = Date.now() - bootLastTime; \n return `window.BootPay.setAnalyticsData({uuid:'${uuid}',sk:'${bootpaySK}',sk_time:${bootLastTime},time:${elaspedTime}});`;\n // this.callJavaScript(`window.BootPay.setAnalyticsData({uuid:'${uuid}',sk:'${bootpaySK}',sk_time:${bootLastTime},time:${elaspedTime}});`); \n }\n} \n\n\nvar styles = StyleSheet.create({\n container: {\n flex: 1,\n justifyContent: 'center',\n alignItems: 'center',\n backgroundColor: '#F5FCFF',\n },\n welcome: {\n fontSize: 20,\n textAlign: 'center',\n margin: 10,\n },\n // Flex to fill, position absolute, \n // Fixed left/top, and the width set to the window width\n overlay: { \n width: 25,\n height: 25, \n right: 5,\n alignSelf: 'flex-end'\n } \n });"]}
|
package/lib/commonjs/index.d.js
CHANGED
|
@@ -3,24 +3,26 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
11
|
-
|
|
12
|
-
class BootpayWebView extends _react.Component {
|
|
13
|
-
constructor(...args) {
|
|
14
|
-
super(...args);
|
|
15
|
-
|
|
16
|
-
_defineProperty(this, "request", void 0);
|
|
17
|
-
|
|
18
|
-
_defineProperty(this, "dismiss", void 0);
|
|
19
|
-
|
|
20
|
-
_defineProperty(this, "transactionConfirm", void 0);
|
|
6
|
+
Object.defineProperty(exports, "BootpayWebView", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function () {
|
|
9
|
+
return _BootpayWebView.BootpayWebView;
|
|
21
10
|
}
|
|
11
|
+
});
|
|
12
|
+
Object.defineProperty(exports, "userTrace", {
|
|
13
|
+
enumerable: true,
|
|
14
|
+
get: function () {
|
|
15
|
+
return _BootpayAnalytics.userTrace;
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
Object.defineProperty(exports, "pageTrace", {
|
|
19
|
+
enumerable: true,
|
|
20
|
+
get: function () {
|
|
21
|
+
return _BootpayAnalytics.pageTrace;
|
|
22
|
+
}
|
|
23
|
+
});
|
|
22
24
|
|
|
23
|
-
|
|
25
|
+
var _BootpayWebView = require("./BootpayWebView");
|
|
24
26
|
|
|
25
|
-
|
|
27
|
+
var _BootpayAnalytics = require("./BootpayAnalytics");
|
|
26
28
|
//# sourceMappingURL=index.d.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["index.d.ts"],"names":[
|
|
1
|
+
{"version":3,"sources":["index.d.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAKA;;AACA","sourcesContent":["import { Component, ReactNode } from 'react';\nimport { ViewProperties, EmitterSubscription } from 'react-native';\nimport { EventEmitter } from 'events';\n\n\nimport { BootpayWebView } from './BootpayWebView'\nimport { userTrace, pageTrace } from './BootpayAnalytics'\n\n\nexport { BootpayWebView, userTrace, pageTrace }\n\n// interface BootpayWebViewProps {\n// ios_application_id: string;\n// android_application_id: string;\n\n// onCancel: (data: string) => void;\n// onError: (data: string) => void;\n// onReady: (data: string) => void;\n// onConfirm: (data: string) => void;\n// onDone: (data: string) => void;\n// onClose: () => void;\n// }\n\n// export class BootpayWebView extends Component<BootpayWebViewProps> { \n// request: (payload: Object, items: Object, user: Object, extra: Object) => Promise<string>;\n// dismiss: () => Promise<string>;\n// transactionConfirm: (data: string) => Promise<string>;\n// }\n\n// export class BootpayAnalytics {\n// static userTrace: () => void;\n// static pageTrace: () => void;\n// }\n\n// export const userTrace: () => void;\n// export default function pageTrace(): void;\n// export const userTrace: () => void;\n\n// export default function PageTrace() : void;\n\n// const Bootpay = \n \n// export { BootpayWebView, userTrace, pageTrace }"]}
|
package/lib/commonjs/index.js
CHANGED
|
@@ -3,20 +3,26 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
Object.defineProperty(exports, "
|
|
6
|
+
Object.defineProperty(exports, "BootpayWebView", {
|
|
7
7
|
enumerable: true,
|
|
8
8
|
get: function () {
|
|
9
|
-
return
|
|
9
|
+
return _BootpayWebView.BootpayWebView;
|
|
10
10
|
}
|
|
11
11
|
});
|
|
12
|
-
Object.defineProperty(exports, "
|
|
12
|
+
Object.defineProperty(exports, "userTrace", {
|
|
13
13
|
enumerable: true,
|
|
14
14
|
get: function () {
|
|
15
|
-
return
|
|
15
|
+
return _BootpayAnalytics.userTrace;
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
Object.defineProperty(exports, "pageTrace", {
|
|
19
|
+
enumerable: true,
|
|
20
|
+
get: function () {
|
|
21
|
+
return _BootpayAnalytics.pageTrace;
|
|
16
22
|
}
|
|
17
23
|
});
|
|
18
|
-
|
|
19
|
-
var _useBootpay = require("./useBootpay");
|
|
20
24
|
|
|
21
25
|
var _BootpayWebView = require("./BootpayWebView");
|
|
26
|
+
|
|
27
|
+
var _BootpayAnalytics = require("./BootpayAnalytics");
|
|
22
28
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["index.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"sources":["index.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAEA;;AACA","sourcesContent":[" \n// import { useBootpay } from './useBootpay';\nimport { BootpayWebView } from './BootpayWebView'\nimport { userTrace, pageTrace } from './BootpayAnalytics'\n\nexport { BootpayWebView, userTrace, pageTrace };\n// export { useBootpay };\n\n// import React, { Component } from 'react';\n// import WebView from 'react-native-webview-bootpay';\n\n// export class BootpayWebView extends Component {\n// render() {\n// return <WebView \n// useWebKit={true}\n// originWhitelist={['*']}\n// source={{\n// uri: 'https://www.google.com'\n// }}\n// javaScriptEnabled={true}\n// javaScriptCanOpenWindowsAutomatically={true}\n// scalesPageToFit={true} \n// />\n// }\n// } "]}
|
|
@@ -1,36 +1,44 @@
|
|
|
1
|
+
// import { useCallback } from 'react';
|
|
2
|
+
// import BootpayAnalytics from './BootpayAnalytics';
|
|
3
|
+
// import BootpayWebView from './BootpayWebView';
|
|
4
|
+
// export const useBootpay = () => {
|
|
5
|
+
// const bootpay = useRef(new BootpayWebView());
|
|
6
|
+
// // const anlaytics = useRef(new BootpayAnalytics());
|
|
7
|
+
// const [bootpayEvents, setBootpayEvents] = useState([]);
|
|
8
|
+
// const request = useCallback((payload, items, user, extra) => {
|
|
9
|
+
// console.log('use call reqeust');
|
|
10
|
+
// return bootpay.current.request(payload, items, user, extra);
|
|
11
|
+
// }, []);
|
|
12
|
+
// const dismiss = useCallback(() => {
|
|
13
|
+
// console.log('use call dismiss');
|
|
14
|
+
// return bootpay.current.dismiss();
|
|
15
|
+
// }, []);
|
|
16
|
+
// const transactionConfirm = useCallback((data) => {
|
|
17
|
+
// console.log('use call transactionConfirm');
|
|
18
|
+
// return bootpay.current.transactionConfirm(data);
|
|
19
|
+
// }, []);
|
|
20
|
+
// const userTrace = useCallback(() => {
|
|
21
|
+
// console.log('user trace click');
|
|
22
|
+
// BootpayAnalytics.userTrace();
|
|
23
|
+
// // return anlaytics.current.userTrace();
|
|
24
|
+
// }, []);
|
|
25
|
+
// const pageTrace = useCallback(() => {
|
|
26
|
+
// BootpayAnalytics.pageTrace();
|
|
27
|
+
// // return anlaytics.current.pageTrace();
|
|
28
|
+
// }, []);
|
|
29
|
+
// return [
|
|
30
|
+
// {
|
|
31
|
+
// bootpayEvents,
|
|
32
|
+
// },
|
|
33
|
+
// {
|
|
34
|
+
// request,
|
|
35
|
+
// transactionConfirm,
|
|
36
|
+
// dismiss,
|
|
37
|
+
// text,
|
|
38
|
+
// userTrace,
|
|
39
|
+
// pageTrace
|
|
40
|
+
// },
|
|
41
|
+
// ];
|
|
42
|
+
// }
|
|
1
43
|
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.useBootpay = void 0;
|
|
7
|
-
|
|
8
|
-
var _react = require("react");
|
|
9
|
-
|
|
10
|
-
var _BootpayWebView = _interopRequireDefault(require("./BootpayWebView"));
|
|
11
|
-
|
|
12
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
13
|
-
|
|
14
|
-
const useBootpay = () => {
|
|
15
|
-
const bootpay = useRef(new _BootpayWebView.default());
|
|
16
|
-
const [bootpayEvents, setBootpayEvents] = useState([]);
|
|
17
|
-
const request = (0, _react.useCallback)((payload, items, user, extra) => {
|
|
18
|
-
return bootpay.current.request(payload, items, user, extra);
|
|
19
|
-
}, []);
|
|
20
|
-
const dismiss = (0, _react.useCallback)(() => {
|
|
21
|
-
return bootpay.current.dismiss();
|
|
22
|
-
}, []);
|
|
23
|
-
const transactionConfirm = (0, _react.useCallback)(data => {
|
|
24
|
-
return bootpay.current.transactionConfirm(data);
|
|
25
|
-
}, []);
|
|
26
|
-
return [{
|
|
27
|
-
bootpayEvents
|
|
28
|
-
}, {
|
|
29
|
-
request,
|
|
30
|
-
transactionConfirm,
|
|
31
|
-
dismiss
|
|
32
|
-
}];
|
|
33
|
-
};
|
|
34
|
-
|
|
35
|
-
exports.useBootpay = useBootpay;
|
|
36
44
|
//# sourceMappingURL=useBootpay.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["useBootpay.js"],"names":[
|
|
1
|
+
{"version":3,"sources":["useBootpay.js"],"names":[],"mappings":"AAAA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","sourcesContent":["// import { useCallback } from 'react';\n// import BootpayAnalytics from './BootpayAnalytics';\n// import BootpayWebView from './BootpayWebView'; \n\n// export const useBootpay = () => {\n// const bootpay = useRef(new BootpayWebView());\n// // const anlaytics = useRef(new BootpayAnalytics());\n\n// const [bootpayEvents, setBootpayEvents] = useState([]);\n\n// const request = useCallback((payload, items, user, extra) => {\n// console.log('use call reqeust');\n// return bootpay.current.request(payload, items, user, extra);\n// }, []);\n\n// const dismiss = useCallback(() => {\n// console.log('use call dismiss');\n// return bootpay.current.dismiss();\n// }, []);\n\n// const transactionConfirm = useCallback((data) => {\n// console.log('use call transactionConfirm');\n// return bootpay.current.transactionConfirm(data);\n// }, []);\n\n// const userTrace = useCallback(() => {\n\n// console.log('user trace click');\n// BootpayAnalytics.userTrace();\n// // return anlaytics.current.userTrace();\n// }, []);\n\n// const pageTrace = useCallback(() => {\n// BootpayAnalytics.pageTrace();\n// // return anlaytics.current.pageTrace();\n// }, []);\n\n// return [\n// {\n// bootpayEvents,\n// },\n// {\n// request,\n// transactionConfirm,\n// dismiss,\n// text,\n// userTrace,\n// pageTrace\n// },\n// ];\n// }\n"]}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import base64 from 'react-native-base64';
|
|
2
|
+
import DeviceInfo from 'react-native-device-info'; // import CryptoJS from 'crypto-js';
|
|
3
|
+
|
|
4
|
+
import CryptoAesCbc from 'react-native-crypto-aes-cbc';
|
|
5
|
+
import { NativeModules, Platform } from 'react-native';
|
|
6
|
+
var Aes = NativeModules.Aes;
|
|
7
|
+
|
|
8
|
+
const userTrace = async (applicationId, userId, phone, email, gender, birth, area) => {
|
|
9
|
+
try {
|
|
10
|
+
const payload = {
|
|
11
|
+
"id": userId,
|
|
12
|
+
"ver": DeviceInfo.getVersion(),
|
|
13
|
+
"application_id": applicationId,
|
|
14
|
+
"phone": phone,
|
|
15
|
+
"email": email,
|
|
16
|
+
"gender": gender,
|
|
17
|
+
"birth": birth,
|
|
18
|
+
"area": area
|
|
19
|
+
};
|
|
20
|
+
var key = getRandomKey(32);
|
|
21
|
+
var iv = getRandomKey(16);
|
|
22
|
+
|
|
23
|
+
try {
|
|
24
|
+
const data = await Aes.encrypt(JSON.stringify(payload), stringToHex(key), stringToHex(iv)).then(cipher => cipher);
|
|
25
|
+
const response = await fetch('https://analytics.bootpay.co.kr/login', {
|
|
26
|
+
method: 'POST',
|
|
27
|
+
headers: {
|
|
28
|
+
Accept: 'application/json',
|
|
29
|
+
'Content-Type': 'application/json'
|
|
30
|
+
},
|
|
31
|
+
body: JSON.stringify({
|
|
32
|
+
data: data,
|
|
33
|
+
session_key: await getSessionKey(key, iv)
|
|
34
|
+
})
|
|
35
|
+
});
|
|
36
|
+
const json = await response.json();
|
|
37
|
+
return json;
|
|
38
|
+
} catch (e) {
|
|
39
|
+
console.log(e);
|
|
40
|
+
}
|
|
41
|
+
} catch (error) {
|
|
42
|
+
console.error(error);
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
const pageTrace = async (applicationId, url, pageType, items) => {
|
|
47
|
+
try {
|
|
48
|
+
const payload = {
|
|
49
|
+
"application_id": applicationId,
|
|
50
|
+
"url": url,
|
|
51
|
+
"page_type": pageType,
|
|
52
|
+
"items": items,
|
|
53
|
+
"referer": ''
|
|
54
|
+
};
|
|
55
|
+
var key = getRandomKey(32);
|
|
56
|
+
var iv = getRandomKey(16);
|
|
57
|
+
|
|
58
|
+
try {
|
|
59
|
+
const data = await Aes.encrypt(JSON.stringify(payload), stringToHex(key), stringToHex(iv)).then(cipher => cipher);
|
|
60
|
+
const response = await fetch('https://analytics.bootpay.co.kr/call', {
|
|
61
|
+
method: 'POST',
|
|
62
|
+
headers: {
|
|
63
|
+
Accept: 'application/json',
|
|
64
|
+
'Content-Type': 'application/json'
|
|
65
|
+
},
|
|
66
|
+
body: JSON.stringify({
|
|
67
|
+
data: data,
|
|
68
|
+
session_key: await getSessionKey(key, iv)
|
|
69
|
+
})
|
|
70
|
+
});
|
|
71
|
+
const json = await response.json();
|
|
72
|
+
return json;
|
|
73
|
+
} catch (e) {
|
|
74
|
+
console.log(e);
|
|
75
|
+
}
|
|
76
|
+
} catch (error) {
|
|
77
|
+
console.error(error);
|
|
78
|
+
}
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
const stringToHex = str => {
|
|
82
|
+
var hex = '';
|
|
83
|
+
|
|
84
|
+
for (var i = 0, l = str.length; i < l; i++) {
|
|
85
|
+
hex += str.charCodeAt(i).toString(16);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
return hex;
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
const getRandomKey = length => {
|
|
92
|
+
var text = '';
|
|
93
|
+
var keys = 'abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ';
|
|
94
|
+
|
|
95
|
+
for (var i = 0; i < length; i++) text += keys.charAt(Math.floor(Math.random() * keys.length));
|
|
96
|
+
|
|
97
|
+
return text;
|
|
98
|
+
};
|
|
99
|
+
|
|
100
|
+
const getSessionKey = async (key, iv) => {
|
|
101
|
+
const keyValue = base64.encode(key);
|
|
102
|
+
const ivValue = base64.encode(iv);
|
|
103
|
+
return `${keyValue}##${ivValue}`;
|
|
104
|
+
};
|
|
105
|
+
|
|
106
|
+
const strEncode = async (str, key, iv) => {
|
|
107
|
+
return await Aes.encrypt(str, key, iv).then(cipher => {
|
|
108
|
+
Aes.hmac256(cipher, key).then(hash => {
|
|
109
|
+
console.log('HMAC', hash);
|
|
110
|
+
return hash;
|
|
111
|
+
});
|
|
112
|
+
});
|
|
113
|
+
};
|
|
114
|
+
|
|
115
|
+
export { userTrace, pageTrace };
|
|
116
|
+
//# sourceMappingURL=BootpayAnalytics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["BootpayAnalytics.js"],"names":["base64","DeviceInfo","CryptoAesCbc","NativeModules","Platform","Aes","userTrace","applicationId","userId","phone","email","gender","birth","area","payload","getVersion","key","getRandomKey","iv","data","encrypt","JSON","stringify","stringToHex","then","cipher","response","fetch","method","headers","Accept","body","session_key","getSessionKey","json","e","console","log","error","pageTrace","url","pageType","items","str","hex","i","l","length","charCodeAt","toString","text","keys","charAt","Math","floor","random","keyValue","encode","ivValue","strEncode","hmac256","hash"],"mappings":"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","sourcesContent":["\n \nimport base64 from 'react-native-base64'\nimport DeviceInfo from 'react-native-device-info';\n\n// import CryptoJS from 'crypto-js';\nimport CryptoAesCbc from 'react-native-crypto-aes-cbc';\nimport { NativeModules, Platform } from 'react-native'\nvar Aes = NativeModules.Aes\n\n\nconst userTrace = async (applicationId, userId, phone, email, gender, birth, area) => { \n try { \n const payload = {\n \"id\": userId, \n \"ver\": DeviceInfo.getVersion(),\n \"application_id\": applicationId, \n \"phone\": phone,\n \"email\": email,\n \"gender\": gender,\n \"birth\": birth,\n \"area\": area\n };\n\n var key = getRandomKey(32);\n var iv = getRandomKey(16);\n \n try { \n const data = await Aes.encrypt(JSON.stringify(payload), stringToHex(key), stringToHex(iv)).then(cipher => cipher);\n\n const response = await fetch(\n 'https://analytics.bootpay.co.kr/login',\n {\n method: 'POST',\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n data: data,\n session_key: await getSessionKey(key, iv)\n })\n }\n );\n const json = await response.json();\n return json;\n } catch (e) {\n console.log(e);\n } \n } catch (error) {\n console.error(error);\n }\n}\n\nconst pageTrace = async (applicationId, url, pageType, items) => { \n try { \n const payload = {\n \"application_id\": applicationId, \n \"url\": url, \n \"page_type\": pageType,\n \"items\": items,\n \"referer\": ''\n }; \n\n var key = getRandomKey(32);\n var iv = getRandomKey(16);\n \n try { \n const data = await Aes.encrypt(JSON.stringify(payload), stringToHex(key), stringToHex(iv)).then(cipher => cipher);\n\n const response = await fetch(\n 'https://analytics.bootpay.co.kr/call',\n {\n method: 'POST',\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n data: data,\n session_key: await getSessionKey(key, iv)\n })\n }\n );\n const json = await response.json();\n return json;\n } catch (e) {\n console.log(e);\n } \n } catch (error) {\n console.error(error);\n }\n}\n\nconst stringToHex = (str) => {\n var hex = ''\n for (var i = 0, l = str.length; i < l; i++) {\n hex += str.charCodeAt(i).toString(16)\n }\n return hex\n}\n\nconst getRandomKey = (length) => {\n var text = '';\n var keys = 'abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ';\n\n for (var i = 0; i < length; i++)\n text += keys.charAt(Math.floor(Math.random() * keys.length));\n\n return text;\n}\n\n\nconst getSessionKey = async (key, iv) => {\n const keyValue = base64.encode(key);\n const ivValue = base64.encode(iv);\n\n return `${keyValue}##${ivValue}`;\n}\n\nconst strEncode = async (str, key, iv) => {\n return await Aes.encrypt(str, key, iv).then(cipher => {\n Aes.hmac256(cipher, key).then(hash => {\n console.log('HMAC', hash)\n return hash;\n })\n })\n\n}\n\nexport { userTrace, pageTrace }\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["BootpayWebView.js"],"names":["React","Component","useRef","SafeAreaView","Modal","Platform","TouchableOpacity","Image","StyleSheet","WebView","UserInfo","BootpayWebView","visibility","script","firstLoad","payload","items","user","extra","application_id","OS","props","ios_application_id","android_application_id","user_info","quickPopup","undefined","quick_popup","setState","getMountJavascript","generateScript","showCloseButton","show_close_button","updateInfo","removePaymentWindow","getBootpayPlatform","getAnalyticsData","onError","onCancel","onReady","onConfirm","onClose","onDone","JSON","stringify","nativeEvent","data","json","action","message","dismiss","parse","url","callJavaScript","webView","injectJavaScript","uuid","getBootpayUUID","bootpaySK","getBootpaySK","bootLastTime","getBootpayLastTime","elaspedTime","Date","now","componentWillUnmount","setBootpayLastTime","render","state","flex","cancelData","closeData","styles","overlay","require","wv","uri","onMessage","onShouldStartLoadWithRequest","create","container","justifyContent","alignItems","backgroundColor","welcome","fontSize","textAlign","margin","width","height","right","alignSelf"],"mappings":"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","sourcesContent":["\n\nimport React, { Component, useRef } from 'react';\nimport { SafeAreaView, Modal, Platform, TouchableOpacity, Image, StyleSheet } from 'react-native';\nimport WebView from 'react-native-webview-bootpay';\nimport UserInfo from './UserInfo'\n\nexport class BootpayWebView extends Component {\n webView = useRef<WebView>(null); \n\n state = {\n visibility: false, \n script: '',\n firstLoad: false\n } \ns\n async componentWillUnmount() {\n this.setState(\n {\n visibility: false, \n firstLoad: false,\n showCloseButton: false\n }\n )\n UserInfo.setBootpayLastTime(Date.now());\n }\n\n render() {\n\n\n return <Modal\n animationType={'slide'}\n transparent={false}\n visible={this.state.visibility}>\n <SafeAreaView style={{ flex: 1 }}>\n {\n this.state.showCloseButton &&\n <TouchableOpacity\n onPress={() => {\n var cancelData = {\n action: 'BootpayCancel',\n message: '사용자에 의해 취소되었습니다'\n }\n var closeData = {\n action: 'BootpayClose',\n message: '결제창이 닫혔습니다'\n }\n \n if(this.props.onCancel != undefined) this.props.onCancel(cancelData);\n if(this.props.onClose != undefined) this.props.onClose(closeData); \n\n this.setState({visibility: false})\n } }>\n <Image \n style={[styles.overlay]}\n source={require('../images/close.png')} />\n </TouchableOpacity>\n }\n <WebView\n ref={(wv) => this.webView = wv}\n useWebKit={true}\n originWhitelist={['*']}\n source={{\n uri: 'https://inapp.bootpay.co.kr/3.3.3/production.html'\n }}\n injectedJavaScript={this.state.script}\n javaScriptEnabled={true}\n javaScriptCanOpenWindowsAutomatically={true}\n scalesPageToFit={true} \n onMessage={this.onMessage}\n onShouldStartLoadWithRequest={this.onShouldStartLoadWithRequest}\n />\n </SafeAreaView>\n\n </Modal>\n }\n\n request = async (payload, items, user, extra) => { \n\n payload.application_id = Platform.OS == 'ios' ? this.props.ios_application_id : this.props.android_application_id;\n payload.items = items;\n payload.user_info = user;\n payload.extra = extra; \n \n\n var quickPopup = '';\n\n if(extra != undefined && extra.quick_popup != undefined) {\n if(extra.quick_popup == 1) {\n quickPopup = 'BootPay.startQuickPopup();';\n }\n } \n \n\n //visibility가 true가 되면 webview onLoaded가 실행됨\n this.setState(\n {\n visibility: true,\n script: `\n ${await this.getMountJavascript()}\n ${quickPopup}\n ${this.generateScript(payload)}\n `,\n firstLoad: false,\n showCloseButton: extra.show_close_button || false \n }\n ) \n\n UserInfo.updateInfo();\n }\n\n dismiss = () => {\n this.setState(\n ({ visibility }) => ({\n visibility: false\n })\n )\n this.removePaymentWindow();\n }\n \n\n getMountJavascript = async () => { \n return `\n ${this.getBootpayPlatform()}\n ${await this.getAnalyticsData()}\n `; \n }\n\n\n generateScript= (payload) => { \n const onError = '.error(function(data){ window.BootpayRNWebView.postMessage( JSON.stringify(data) ); })';\n const onCancel = '.cancel(function(data){ window.BootpayRNWebView.postMessage( JSON.stringify(data) ); })';\n const onReady = '.ready(function(data){ window.BootpayRNWebView.postMessage( JSON.stringify(data) ); })';\n const onConfirm = '.confirm(function(data){ window.BootpayRNWebView.postMessage( JSON.stringify(data) ); })';\n const onClose = '.close(function(data){ window.BootpayRNWebView.postMessage(\"close\"); })';\n const onDone = '.done(function(data){ window.BootpayRNWebView.postMessage( JSON.stringify(data) ); })';\n\n return `BootPay.request(${JSON.stringify(payload)})` + onError + onCancel + onReady + onConfirm + onClose + onDone + '; void(0);';\n }\n\n onMessage = ({ nativeEvent }) => { \n if (nativeEvent == undefined || nativeEvent.data == undefined) return;\n \n if(nativeEvent.data == 'close') {\n if(this.props.onClose == undefined) return;\n var json = {\n action: 'BootpayClose',\n message: '결제창이 닫혔습니다'\n }\n this.props.onClose(json);\n this.dismiss();\n return;\n }\n\n const data = JSON.parse(nativeEvent.data);\n switch (data.action) {\n case 'BootpayCancel':\n if(this.props.onCancel != undefined) this.props.onCancel(data);\n this.setState(\n {\n visibility: false\n }\n )\n break;\n case 'BootpayError':\n if(this.props.onError != undefined) this.props.onError(data);\n this.setState(\n {\n visibility: false\n }\n )\n break;\n case 'BootpayBankReady':\n if(this.props.onReady != undefined) this.props.onReady(data);\n break;\n case 'BootpayConfirm':\n if(this.props.onConfirm != undefined) this.props.onConfirm(data);\n break;\n case 'BootpayDone':\n if(this.props.onDone != undefined) this.props.onDone(data);\n this.setState(\n {\n visibility: false\n }\n )\n break;\n }\n }\n\n onShouldStartLoadWithRequest = (url) => { \n return true;\n }\n\n getBootpayPlatform = () => { \n if(Platform.OS == 'ios') {\n return \"BootPay.setDevice('IOS');\";\n } else if(Platform.OS == 'android'){\n return \"BootPay.setDevice('ANDROID');\"; \n }\n }\n\n // setPayScript = () => {\n // const fullScript = this.generateScript(this.state.script);\n // this.injectJavaScript(fullScript);\n // if(this.state.showCloseButton == true) {\n // if(this.webView == null || this.webView == undefined) return; \n // this.webView.showCloseButton();\n // }\n // } \n\n transactionConfirm = (data) => {\n // console.log('transactionConfirm: ' + data);\n\n var json = JSON.stringify(data)\n this.callJavaScript(`\n BootPay.transactionConfirm(${json});\n `);\n }\n\n removePaymentWindow = () => {\n this.callJavaScript(`\n BootPay.removePaymentWindow();\n `);\n } \n\n callJavaScript = (script) => {\n if(this.webView == null || this.webView == undefined) return;\n\n // console.log('callJavascript: ' + script);\n\n this.webView.injectJavaScript(`\n javascript:(function(){${script} })()\n `);\n // this.webView.evalu\n } \n\n getAnalyticsData = async () => { \n const uuid = await UserInfo.getBootpayUUID(); \n const bootpaySK = await UserInfo.getBootpaySK();\n const bootLastTime = await UserInfo.getBootpayLastTime(); \n\n\n const elaspedTime = Date.now() - bootLastTime; \n return `window.BootPay.setAnalyticsData({uuid:'${uuid}',sk:'${bootpaySK}',sk_time:${bootLastTime},time:${elaspedTime}});`;\n // this.callJavaScript(`window.BootPay.setAnalyticsData({uuid:'${uuid}',sk:'${bootpaySK}',sk_time:${bootLastTime},time:${elaspedTime}});`); \n }\n} \n\n\nvar styles = StyleSheet.create({\n container: {\n flex: 1,\n justifyContent: 'center',\n alignItems: 'center',\n backgroundColor: '#F5FCFF',\n },\n welcome: {\n fontSize: 20,\n textAlign: 'center',\n margin: 10,\n },\n // Flex to fill, position absolute, \n // Fixed left/top, and the width set to the window width\n overlay: { \n width: 25,\n height: 25, \n right: 5,\n alignSelf: 'flex-end'\n } \n });"]}
|
|
1
|
+
{"version":3,"sources":["BootpayWebView.js"],"names":["React","Component","useRef","SafeAreaView","Modal","Platform","TouchableOpacity","Image","StyleSheet","WebView","UserInfo","BootpayWebView","visibility","script","firstLoad","payload","items","user","extra","application_id","OS","props","ios_application_id","android_application_id","user_info","quickPopup","undefined","quick_popup","setState","getMountJavascript","generateScript","showCloseButton","show_close_button","updateInfo","removePaymentWindow","getBootpayPlatform","getAnalyticsData","onError","onCancel","onReady","onConfirm","onClose","onDone","JSON","stringify","nativeEvent","data","json","action","message","dismiss","parse","url","callJavaScript","webView","injectJavaScript","uuid","getBootpayUUID","bootpaySK","getBootpaySK","bootLastTime","getBootpayLastTime","elaspedTime","Date","now","componentWillUnmount","setBootpayLastTime","render","state","flex","cancelData","closeData","styles","overlay","require","wv","uri","onMessage","onShouldStartLoadWithRequest","create","container","justifyContent","alignItems","backgroundColor","welcome","fontSize","textAlign","margin","width","height","right","alignSelf"],"mappings":"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","sourcesContent":["\n\nimport React, { Component, useRef } from 'react';\nimport { SafeAreaView, Modal, Platform, TouchableOpacity, Image, StyleSheet } from 'react-native';\nimport WebView from 'react-native-webview-bootpay';\nimport UserInfo from './UserInfo'\n\nexport class BootpayWebView extends Component {\n webView = useRef<WebView>(null); \n\n state = {\n visibility: false, \n script: '',\n firstLoad: false\n } \ns\n async componentWillUnmount() {\n this.setState(\n {\n visibility: false, \n firstLoad: false,\n showCloseButton: false\n }\n )\n UserInfo.setBootpayLastTime(Date.now());\n }\n \n render() {\n\n\n return <Modal\n animationType={'slide'}\n transparent={false}\n visible={this.state.visibility}>\n <SafeAreaView style={{ flex: 1 }}>\n {\n this.state.showCloseButton &&\n <TouchableOpacity\n onPress={() => {\n var cancelData = {\n action: 'BootpayCancel',\n message: '사용자에 의해 취소되었습니다'\n }\n var closeData = {\n action: 'BootpayClose',\n message: '결제창이 닫혔습니다'\n }\n \n if(this.props.onCancel != undefined) this.props.onCancel(cancelData);\n if(this.props.onClose != undefined) this.props.onClose(closeData); \n\n this.setState({visibility: false})\n } }>\n <Image \n style={[styles.overlay]}\n source={require('../images/close.png')} />\n </TouchableOpacity>\n }\n <WebView\n ref={(wv) => this.webView = wv}\n useWebKit={true}\n originWhitelist={['*']}\n source={{\n uri: 'https://inapp.bootpay.co.kr/3.3.3/production.html'\n }}\n injectedJavaScript={this.state.script}\n javaScriptEnabled={true}\n javaScriptCanOpenWindowsAutomatically={true}\n scalesPageToFit={true} \n onMessage={this.onMessage}\n onShouldStartLoadWithRequest={this.onShouldStartLoadWithRequest}\n />\n </SafeAreaView>\n\n </Modal>\n }\n\n request = async (payload, items, user, extra) => { \n\n payload.application_id = Platform.OS == 'ios' ? this.props.ios_application_id : this.props.android_application_id;\n payload.items = items;\n payload.user_info = user;\n payload.extra = extra; \n \n\n var quickPopup = '';\n\n if(extra != undefined && extra.quick_popup != undefined) {\n if(extra.quick_popup == 1) {\n quickPopup = 'BootPay.startQuickPopup();';\n }\n } \n \n\n //visibility가 true가 되면 webview onLoaded가 실행됨\n this.setState(\n {\n visibility: true,\n script: `\n ${await this.getMountJavascript()}\n ${quickPopup}\n ${this.generateScript(payload)}\n `,\n firstLoad: false,\n showCloseButton: extra.show_close_button || false \n }\n ) \n\n UserInfo.updateInfo();\n }\n\n dismiss = () => {\n this.setState(\n ({ visibility }) => ({\n visibility: false\n })\n )\n this.removePaymentWindow();\n }\n \n\n getMountJavascript = async () => { \n return `\n ${this.getBootpayPlatform()}\n ${await this.getAnalyticsData()}\n `; \n }\n\n\n generateScript= (payload) => { \n const onError = '.error(function(data){ window.BootpayRNWebView.postMessage( JSON.stringify(data) ); })';\n const onCancel = '.cancel(function(data){ window.BootpayRNWebView.postMessage( JSON.stringify(data) ); })';\n const onReady = '.ready(function(data){ window.BootpayRNWebView.postMessage( JSON.stringify(data) ); })';\n const onConfirm = '.confirm(function(data){ window.BootpayRNWebView.postMessage( JSON.stringify(data) ); })';\n const onClose = '.close(function(data){ window.BootpayRNWebView.postMessage(\"close\"); })';\n const onDone = '.done(function(data){ window.BootpayRNWebView.postMessage( JSON.stringify(data) ); })';\n\n return `BootPay.request(${JSON.stringify(payload)})` + onError + onCancel + onReady + onConfirm + onClose + onDone + '; void(0);';\n }\n\n onMessage = ({ nativeEvent }) => { \n if (nativeEvent == undefined || nativeEvent.data == undefined) return;\n \n if(nativeEvent.data == 'close') {\n if(this.props.onClose == undefined) return;\n var json = {\n action: 'BootpayClose',\n message: '결제창이 닫혔습니다'\n }\n this.props.onClose(json);\n this.dismiss();\n return;\n }\n\n const data = JSON.parse(nativeEvent.data);\n switch (data.action) {\n case 'BootpayCancel':\n if(this.props.onCancel != undefined) this.props.onCancel(data);\n this.setState(\n {\n visibility: false\n }\n )\n break;\n case 'BootpayError':\n if(this.props.onError != undefined) this.props.onError(data);\n this.setState(\n {\n visibility: false\n }\n )\n break;\n case 'BootpayBankReady':\n if(this.props.onReady != undefined) this.props.onReady(data);\n break;\n case 'BootpayConfirm':\n if(this.props.onConfirm != undefined) this.props.onConfirm(data);\n break;\n case 'BootpayDone':\n if(this.props.onDone != undefined) this.props.onDone(data);\n this.setState(\n {\n visibility: false\n }\n )\n break;\n }\n }\n\n onShouldStartLoadWithRequest = (url) => { \n return true;\n }\n\n getBootpayPlatform = () => { \n if(Platform.OS == 'ios') {\n return \"BootPay.setDevice('IOS');\";\n } else if(Platform.OS == 'android'){\n return \"BootPay.setDevice('ANDROID');\"; \n }\n }\n\n // setPayScript = () => {\n // const fullScript = this.generateScript(this.state.script);\n // this.injectJavaScript(fullScript);\n // if(this.state.showCloseButton == true) {\n // if(this.webView == null || this.webView == undefined) return; \n // this.webView.showCloseButton();\n // }\n // } \n\n transactionConfirm = (data) => {\n // console.log('transactionConfirm: ' + data);\n\n var json = JSON.stringify(data)\n this.callJavaScript(`\n BootPay.transactionConfirm(${json});\n `);\n }\n\n removePaymentWindow = () => {\n this.callJavaScript(`\n BootPay.removePaymentWindow();\n `);\n } \n\n callJavaScript = (script) => {\n if(this.webView == null || this.webView == undefined) return;\n\n // console.log('callJavascript: ' + script);\n\n this.webView.injectJavaScript(`\n javascript:(function(){${script} })()\n `);\n // this.webView.evalu\n } \n\n getAnalyticsData = async () => { \n const uuid = await UserInfo.getBootpayUUID(); \n const bootpaySK = await UserInfo.getBootpaySK();\n const bootLastTime = await UserInfo.getBootpayLastTime(); \n\n\n const elaspedTime = Date.now() - bootLastTime; \n return `window.BootPay.setAnalyticsData({uuid:'${uuid}',sk:'${bootpaySK}',sk_time:${bootLastTime},time:${elaspedTime}});`;\n // this.callJavaScript(`window.BootPay.setAnalyticsData({uuid:'${uuid}',sk:'${bootpaySK}',sk_time:${bootLastTime},time:${elaspedTime}});`); \n }\n} \n\n\nvar styles = StyleSheet.create({\n container: {\n flex: 1,\n justifyContent: 'center',\n alignItems: 'center',\n backgroundColor: '#F5FCFF',\n },\n welcome: {\n fontSize: 20,\n textAlign: 'center',\n margin: 10,\n },\n // Flex to fill, position absolute, \n // Fixed left/top, and the width set to the window width\n overlay: { \n width: 25,\n height: 25, \n right: 5,\n alignSelf: 'flex-end'\n } \n });"]}
|
package/lib/module/index.d.js
CHANGED
|
@@ -1,17 +1,28 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
1
|
+
import { BootpayWebView } from './BootpayWebView';
|
|
2
|
+
import { userTrace, pageTrace } from './BootpayAnalytics';
|
|
3
|
+
export { BootpayWebView, userTrace, pageTrace }; // interface BootpayWebViewProps {
|
|
4
|
+
// ios_application_id: string;
|
|
5
|
+
// android_application_id: string;
|
|
6
|
+
// onCancel: (data: string) => void;
|
|
7
|
+
// onError: (data: string) => void;
|
|
8
|
+
// onReady: (data: string) => void;
|
|
9
|
+
// onConfirm: (data: string) => void;
|
|
10
|
+
// onDone: (data: string) => void;
|
|
11
|
+
// onClose: () => void;
|
|
12
|
+
// }
|
|
13
|
+
// export class BootpayWebView extends Component<BootpayWebViewProps> {
|
|
14
|
+
// request: (payload: Object, items: Object, user: Object, extra: Object) => Promise<string>;
|
|
15
|
+
// dismiss: () => Promise<string>;
|
|
16
|
+
// transactionConfirm: (data: string) => Promise<string>;
|
|
17
|
+
// }
|
|
18
|
+
// export class BootpayAnalytics {
|
|
19
|
+
// static userTrace: () => void;
|
|
20
|
+
// static pageTrace: () => void;
|
|
21
|
+
// }
|
|
22
|
+
// export const userTrace: () => void;
|
|
23
|
+
// export default function pageTrace(): void;
|
|
24
|
+
// export const userTrace: () => void;
|
|
25
|
+
// export default function PageTrace() : void;
|
|
26
|
+
// const Bootpay =
|
|
27
|
+
// export { BootpayWebView, userTrace, pageTrace }
|
|
17
28
|
//# sourceMappingURL=index.d.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["index.d.ts"],"names":["
|
|
1
|
+
{"version":3,"sources":["index.d.ts"],"names":["BootpayWebView","userTrace","pageTrace"],"mappings":"AAKA,SAASA,cAAT,QAA+B,kBAA/B;AACA,SAASC,SAAT,EAAoBC,SAApB,QAAqC,oBAArC;AAGA,SAASF,cAAT,EAAyBC,SAAzB,EAAoCC,SAApC,G,CAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AAEA","sourcesContent":["import { Component, ReactNode } from 'react';\nimport { ViewProperties, EmitterSubscription } from 'react-native';\nimport { EventEmitter } from 'events';\n\n\nimport { BootpayWebView } from './BootpayWebView'\nimport { userTrace, pageTrace } from './BootpayAnalytics'\n\n\nexport { BootpayWebView, userTrace, pageTrace }\n\n// interface BootpayWebViewProps {\n// ios_application_id: string;\n// android_application_id: string;\n\n// onCancel: (data: string) => void;\n// onError: (data: string) => void;\n// onReady: (data: string) => void;\n// onConfirm: (data: string) => void;\n// onDone: (data: string) => void;\n// onClose: () => void;\n// }\n\n// export class BootpayWebView extends Component<BootpayWebViewProps> { \n// request: (payload: Object, items: Object, user: Object, extra: Object) => Promise<string>;\n// dismiss: () => Promise<string>;\n// transactionConfirm: (data: string) => Promise<string>;\n// }\n\n// export class BootpayAnalytics {\n// static userTrace: () => void;\n// static pageTrace: () => void;\n// }\n\n// export const userTrace: () => void;\n// export default function pageTrace(): void;\n// export const userTrace: () => void;\n\n// export default function PageTrace() : void;\n\n// const Bootpay = \n \n// export { BootpayWebView, userTrace, pageTrace }"]}
|
package/lib/module/index.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
import { useBootpay } from './useBootpay';
|
|
1
|
+
// import { useBootpay } from './useBootpay';
|
|
2
2
|
import { BootpayWebView } from './BootpayWebView';
|
|
3
|
-
|
|
3
|
+
import { userTrace, pageTrace } from './BootpayAnalytics';
|
|
4
|
+
export { BootpayWebView, userTrace, pageTrace }; // export { useBootpay };
|
|
5
|
+
// import React, { Component } from 'react';
|
|
4
6
|
// import WebView from 'react-native-webview-bootpay';
|
|
5
7
|
// export class BootpayWebView extends Component {
|
|
6
8
|
// render() {
|
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["index.js"],"names":["
|
|
1
|
+
{"version":3,"sources":["index.js"],"names":["BootpayWebView","userTrace","pageTrace"],"mappings":"AACA;AACA,SAASA,cAAT,QAA+B,kBAA/B;AACA,SAASC,SAAT,EAAoBC,SAApB,QAAqC,oBAArC;AAEA,SAAUF,cAAV,EAA0BC,SAA1B,EAAqCC,SAArC,G,CACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","sourcesContent":[" \n// import { useBootpay } from './useBootpay';\nimport { BootpayWebView } from './BootpayWebView'\nimport { userTrace, pageTrace } from './BootpayAnalytics'\n\nexport { BootpayWebView, userTrace, pageTrace };\n// export { useBootpay };\n\n// import React, { Component } from 'react';\n// import WebView from 'react-native-webview-bootpay';\n\n// export class BootpayWebView extends Component {\n// render() {\n// return <WebView \n// useWebKit={true}\n// originWhitelist={['*']}\n// source={{\n// uri: 'https://www.google.com'\n// }}\n// javaScriptEnabled={true}\n// javaScriptCanOpenWindowsAutomatically={true}\n// scalesPageToFit={true} \n// />\n// }\n// } "]}
|
package/lib/module/useBootpay.js
CHANGED
|
@@ -1,23 +1,43 @@
|
|
|
1
|
-
import { useCallback } from 'react';
|
|
2
|
-
import
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
1
|
+
// import { useCallback } from 'react';
|
|
2
|
+
// import BootpayAnalytics from './BootpayAnalytics';
|
|
3
|
+
// import BootpayWebView from './BootpayWebView';
|
|
4
|
+
// export const useBootpay = () => {
|
|
5
|
+
// const bootpay = useRef(new BootpayWebView());
|
|
6
|
+
// // const anlaytics = useRef(new BootpayAnalytics());
|
|
7
|
+
// const [bootpayEvents, setBootpayEvents] = useState([]);
|
|
8
|
+
// const request = useCallback((payload, items, user, extra) => {
|
|
9
|
+
// console.log('use call reqeust');
|
|
10
|
+
// return bootpay.current.request(payload, items, user, extra);
|
|
11
|
+
// }, []);
|
|
12
|
+
// const dismiss = useCallback(() => {
|
|
13
|
+
// console.log('use call dismiss');
|
|
14
|
+
// return bootpay.current.dismiss();
|
|
15
|
+
// }, []);
|
|
16
|
+
// const transactionConfirm = useCallback((data) => {
|
|
17
|
+
// console.log('use call transactionConfirm');
|
|
18
|
+
// return bootpay.current.transactionConfirm(data);
|
|
19
|
+
// }, []);
|
|
20
|
+
// const userTrace = useCallback(() => {
|
|
21
|
+
// console.log('user trace click');
|
|
22
|
+
// BootpayAnalytics.userTrace();
|
|
23
|
+
// // return anlaytics.current.userTrace();
|
|
24
|
+
// }, []);
|
|
25
|
+
// const pageTrace = useCallback(() => {
|
|
26
|
+
// BootpayAnalytics.pageTrace();
|
|
27
|
+
// // return anlaytics.current.pageTrace();
|
|
28
|
+
// }, []);
|
|
29
|
+
// return [
|
|
30
|
+
// {
|
|
31
|
+
// bootpayEvents,
|
|
32
|
+
// },
|
|
33
|
+
// {
|
|
34
|
+
// request,
|
|
35
|
+
// transactionConfirm,
|
|
36
|
+
// dismiss,
|
|
37
|
+
// text,
|
|
38
|
+
// userTrace,
|
|
39
|
+
// pageTrace
|
|
40
|
+
// },
|
|
41
|
+
// ];
|
|
42
|
+
// }
|
|
23
43
|
//# sourceMappingURL=useBootpay.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["useBootpay.js"],"names":[
|
|
1
|
+
{"version":3,"sources":["useBootpay.js"],"names":[],"mappings":"AAAA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","sourcesContent":["// import { useCallback } from 'react';\n// import BootpayAnalytics from './BootpayAnalytics';\n// import BootpayWebView from './BootpayWebView'; \n\n// export const useBootpay = () => {\n// const bootpay = useRef(new BootpayWebView());\n// // const anlaytics = useRef(new BootpayAnalytics());\n\n// const [bootpayEvents, setBootpayEvents] = useState([]);\n\n// const request = useCallback((payload, items, user, extra) => {\n// console.log('use call reqeust');\n// return bootpay.current.request(payload, items, user, extra);\n// }, []);\n\n// const dismiss = useCallback(() => {\n// console.log('use call dismiss');\n// return bootpay.current.dismiss();\n// }, []);\n\n// const transactionConfirm = useCallback((data) => {\n// console.log('use call transactionConfirm');\n// return bootpay.current.transactionConfirm(data);\n// }, []);\n\n// const userTrace = useCallback(() => {\n\n// console.log('user trace click');\n// BootpayAnalytics.userTrace();\n// // return anlaytics.current.userTrace();\n// }, []);\n\n// const pageTrace = useCallback(() => {\n// BootpayAnalytics.pageTrace();\n// // return anlaytics.current.pageTrace();\n// }, []);\n\n// return [\n// {\n// bootpayEvents,\n// },\n// {\n// request,\n// transactionConfirm,\n// dismiss,\n// text,\n// userTrace,\n// pageTrace\n// },\n// ];\n// }\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-native-bootpay-api",
|
|
3
|
-
"version": "1.4.
|
|
3
|
+
"version": "1.4.3",
|
|
4
4
|
"description": "test",
|
|
5
5
|
"main": "lib/commonjs/index",
|
|
6
6
|
"module": "lib/module/index",
|
|
@@ -66,7 +66,10 @@
|
|
|
66
66
|
"typescript": "^4.1.3",
|
|
67
67
|
"react-native-webview-bootpay": "^11.6.45",
|
|
68
68
|
"react-native-device-info": "^8.4.0",
|
|
69
|
-
"react-native-sensitive-info": "^5.5.8"
|
|
69
|
+
"react-native-sensitive-info": "^5.5.8",
|
|
70
|
+
"react-native-base64": "^0.2.1",
|
|
71
|
+
"react-native-crypto-aes-cbc": "^1.0.8",
|
|
72
|
+
"react-native-aes-crypto": "^1.3.10"
|
|
70
73
|
},
|
|
71
74
|
"peerDependencies": {
|
|
72
75
|
"react": "*",
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
import base64 from 'react-native-base64'
|
|
4
|
+
import DeviceInfo from 'react-native-device-info';
|
|
5
|
+
|
|
6
|
+
// import CryptoJS from 'crypto-js';
|
|
7
|
+
import CryptoAesCbc from 'react-native-crypto-aes-cbc';
|
|
8
|
+
import { NativeModules, Platform } from 'react-native'
|
|
9
|
+
var Aes = NativeModules.Aes
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
const userTrace = async (applicationId, userId, phone, email, gender, birth, area) => {
|
|
13
|
+
try {
|
|
14
|
+
const payload = {
|
|
15
|
+
"id": userId,
|
|
16
|
+
"ver": DeviceInfo.getVersion(),
|
|
17
|
+
"application_id": applicationId,
|
|
18
|
+
"phone": phone,
|
|
19
|
+
"email": email,
|
|
20
|
+
"gender": gender,
|
|
21
|
+
"birth": birth,
|
|
22
|
+
"area": area
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
var key = getRandomKey(32);
|
|
26
|
+
var iv = getRandomKey(16);
|
|
27
|
+
|
|
28
|
+
try {
|
|
29
|
+
const data = await Aes.encrypt(JSON.stringify(payload), stringToHex(key), stringToHex(iv)).then(cipher => cipher);
|
|
30
|
+
|
|
31
|
+
const response = await fetch(
|
|
32
|
+
'https://analytics.bootpay.co.kr/login',
|
|
33
|
+
{
|
|
34
|
+
method: 'POST',
|
|
35
|
+
headers: {
|
|
36
|
+
Accept: 'application/json',
|
|
37
|
+
'Content-Type': 'application/json'
|
|
38
|
+
},
|
|
39
|
+
body: JSON.stringify({
|
|
40
|
+
data: data,
|
|
41
|
+
session_key: await getSessionKey(key, iv)
|
|
42
|
+
})
|
|
43
|
+
}
|
|
44
|
+
);
|
|
45
|
+
const json = await response.json();
|
|
46
|
+
return json;
|
|
47
|
+
} catch (e) {
|
|
48
|
+
console.log(e);
|
|
49
|
+
}
|
|
50
|
+
} catch (error) {
|
|
51
|
+
console.error(error);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
const pageTrace = async (applicationId, url, pageType, items) => {
|
|
56
|
+
try {
|
|
57
|
+
const payload = {
|
|
58
|
+
"application_id": applicationId,
|
|
59
|
+
"url": url,
|
|
60
|
+
"page_type": pageType,
|
|
61
|
+
"items": items,
|
|
62
|
+
"referer": ''
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
var key = getRandomKey(32);
|
|
66
|
+
var iv = getRandomKey(16);
|
|
67
|
+
|
|
68
|
+
try {
|
|
69
|
+
const data = await Aes.encrypt(JSON.stringify(payload), stringToHex(key), stringToHex(iv)).then(cipher => cipher);
|
|
70
|
+
|
|
71
|
+
const response = await fetch(
|
|
72
|
+
'https://analytics.bootpay.co.kr/call',
|
|
73
|
+
{
|
|
74
|
+
method: 'POST',
|
|
75
|
+
headers: {
|
|
76
|
+
Accept: 'application/json',
|
|
77
|
+
'Content-Type': 'application/json'
|
|
78
|
+
},
|
|
79
|
+
body: JSON.stringify({
|
|
80
|
+
data: data,
|
|
81
|
+
session_key: await getSessionKey(key, iv)
|
|
82
|
+
})
|
|
83
|
+
}
|
|
84
|
+
);
|
|
85
|
+
const json = await response.json();
|
|
86
|
+
return json;
|
|
87
|
+
} catch (e) {
|
|
88
|
+
console.log(e);
|
|
89
|
+
}
|
|
90
|
+
} catch (error) {
|
|
91
|
+
console.error(error);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
const stringToHex = (str) => {
|
|
96
|
+
var hex = ''
|
|
97
|
+
for (var i = 0, l = str.length; i < l; i++) {
|
|
98
|
+
hex += str.charCodeAt(i).toString(16)
|
|
99
|
+
}
|
|
100
|
+
return hex
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
const getRandomKey = (length) => {
|
|
104
|
+
var text = '';
|
|
105
|
+
var keys = 'abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ';
|
|
106
|
+
|
|
107
|
+
for (var i = 0; i < length; i++)
|
|
108
|
+
text += keys.charAt(Math.floor(Math.random() * keys.length));
|
|
109
|
+
|
|
110
|
+
return text;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
const getSessionKey = async (key, iv) => {
|
|
115
|
+
const keyValue = base64.encode(key);
|
|
116
|
+
const ivValue = base64.encode(iv);
|
|
117
|
+
|
|
118
|
+
return `${keyValue}##${ivValue}`;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
const strEncode = async (str, key, iv) => {
|
|
122
|
+
return await Aes.encrypt(str, key, iv).then(cipher => {
|
|
123
|
+
Aes.hmac256(cipher, key).then(hash => {
|
|
124
|
+
console.log('HMAC', hash)
|
|
125
|
+
return hash;
|
|
126
|
+
})
|
|
127
|
+
})
|
|
128
|
+
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
export { userTrace, pageTrace }
|
package/src/BootpayWebView.js
CHANGED
package/src/index.d.ts
CHANGED
|
@@ -3,23 +3,41 @@ import { ViewProperties, EmitterSubscription } from 'react-native';
|
|
|
3
3
|
import { EventEmitter } from 'events';
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
android_application_id: string;
|
|
9
|
-
|
|
10
|
-
onCancel: (data: string) => void;
|
|
11
|
-
onError: (data: string) => void;
|
|
12
|
-
onReady: (data: string) => void;
|
|
13
|
-
onConfirm: (data: string) => void;
|
|
14
|
-
onDone: (data: string) => void;
|
|
15
|
-
onClose: () => void;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
export class BootpayWebView extends Component<BootpayWebViewProps> {
|
|
19
|
-
request: (payload: Object, items: Object, user: Object, extra: Object) => Promise<string>;
|
|
20
|
-
dismiss: () => Promise<string>;
|
|
21
|
-
transactionConfirm: (data: string) => Promise<string>;
|
|
22
|
-
}
|
|
6
|
+
import { BootpayWebView } from './BootpayWebView'
|
|
7
|
+
import { userTrace, pageTrace } from './BootpayAnalytics'
|
|
23
8
|
|
|
9
|
+
|
|
10
|
+
export { BootpayWebView, userTrace, pageTrace }
|
|
11
|
+
|
|
12
|
+
// interface BootpayWebViewProps {
|
|
13
|
+
// ios_application_id: string;
|
|
14
|
+
// android_application_id: string;
|
|
15
|
+
|
|
16
|
+
// onCancel: (data: string) => void;
|
|
17
|
+
// onError: (data: string) => void;
|
|
18
|
+
// onReady: (data: string) => void;
|
|
19
|
+
// onConfirm: (data: string) => void;
|
|
20
|
+
// onDone: (data: string) => void;
|
|
21
|
+
// onClose: () => void;
|
|
22
|
+
// }
|
|
23
|
+
|
|
24
|
+
// export class BootpayWebView extends Component<BootpayWebViewProps> {
|
|
25
|
+
// request: (payload: Object, items: Object, user: Object, extra: Object) => Promise<string>;
|
|
26
|
+
// dismiss: () => Promise<string>;
|
|
27
|
+
// transactionConfirm: (data: string) => Promise<string>;
|
|
28
|
+
// }
|
|
29
|
+
|
|
30
|
+
// export class BootpayAnalytics {
|
|
31
|
+
// static userTrace: () => void;
|
|
32
|
+
// static pageTrace: () => void;
|
|
33
|
+
// }
|
|
34
|
+
|
|
35
|
+
// export const userTrace: () => void;
|
|
36
|
+
// export default function pageTrace(): void;
|
|
37
|
+
// export const userTrace: () => void;
|
|
38
|
+
|
|
39
|
+
// export default function PageTrace() : void;
|
|
40
|
+
|
|
41
|
+
// const Bootpay =
|
|
24
42
|
|
|
25
|
-
export { BootpayWebView }
|
|
43
|
+
// export { BootpayWebView, userTrace, pageTrace }
|
package/src/index.js
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
|
|
2
|
-
import { useBootpay } from './useBootpay';
|
|
2
|
+
// import { useBootpay } from './useBootpay';
|
|
3
3
|
import { BootpayWebView } from './BootpayWebView'
|
|
4
|
+
import { userTrace, pageTrace } from './BootpayAnalytics'
|
|
4
5
|
|
|
5
|
-
export {
|
|
6
|
+
export { BootpayWebView, userTrace, pageTrace };
|
|
7
|
+
// export { useBootpay };
|
|
6
8
|
|
|
7
9
|
// import React, { Component } from 'react';
|
|
8
10
|
// import WebView from 'react-native-webview-bootpay';
|
package/src/useBootpay.js
CHANGED
|
@@ -1,30 +1,51 @@
|
|
|
1
|
-
import { useCallback } from 'react';
|
|
2
|
-
import
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
1
|
+
// import { useCallback } from 'react';
|
|
2
|
+
// import BootpayAnalytics from './BootpayAnalytics';
|
|
3
|
+
// import BootpayWebView from './BootpayWebView';
|
|
4
|
+
|
|
5
|
+
// export const useBootpay = () => {
|
|
6
|
+
// const bootpay = useRef(new BootpayWebView());
|
|
7
|
+
// // const anlaytics = useRef(new BootpayAnalytics());
|
|
8
|
+
|
|
9
|
+
// const [bootpayEvents, setBootpayEvents] = useState([]);
|
|
10
|
+
|
|
11
|
+
// const request = useCallback((payload, items, user, extra) => {
|
|
12
|
+
// console.log('use call reqeust');
|
|
13
|
+
// return bootpay.current.request(payload, items, user, extra);
|
|
14
|
+
// }, []);
|
|
15
|
+
|
|
16
|
+
// const dismiss = useCallback(() => {
|
|
17
|
+
// console.log('use call dismiss');
|
|
18
|
+
// return bootpay.current.dismiss();
|
|
19
|
+
// }, []);
|
|
20
|
+
|
|
21
|
+
// const transactionConfirm = useCallback((data) => {
|
|
22
|
+
// console.log('use call transactionConfirm');
|
|
23
|
+
// return bootpay.current.transactionConfirm(data);
|
|
24
|
+
// }, []);
|
|
25
|
+
|
|
26
|
+
// const userTrace = useCallback(() => {
|
|
27
|
+
|
|
28
|
+
// console.log('user trace click');
|
|
29
|
+
// BootpayAnalytics.userTrace();
|
|
30
|
+
// // return anlaytics.current.userTrace();
|
|
31
|
+
// }, []);
|
|
32
|
+
|
|
33
|
+
// const pageTrace = useCallback(() => {
|
|
34
|
+
// BootpayAnalytics.pageTrace();
|
|
35
|
+
// // return anlaytics.current.pageTrace();
|
|
36
|
+
// }, []);
|
|
37
|
+
|
|
38
|
+
// return [
|
|
39
|
+
// {
|
|
40
|
+
// bootpayEvents,
|
|
41
|
+
// },
|
|
42
|
+
// {
|
|
43
|
+
// request,
|
|
44
|
+
// transactionConfirm,
|
|
45
|
+
// dismiss,
|
|
46
|
+
// text,
|
|
47
|
+
// userTrace,
|
|
48
|
+
// pageTrace
|
|
49
|
+
// },
|
|
50
|
+
// ];
|
|
51
|
+
// }
|