react-native-bootpay-api 1.1.0 → 1.4.1
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 +14 -0
- package/lib/commonjs/BootpayWebView.js +19 -11
- package/lib/commonjs/BootpayWebView.js.map +1 -1
- package/lib/module/BootpayWebView.js +19 -11
- package/lib/module/BootpayWebView.js.map +1 -1
- package/lib/typescript/UserInfo.d.ts +1 -0
- package/lib/typescript/UserInfo.d.ts.map +1 -0
- package/package.json +3 -6
- package/src/BootpayWebView.js +26 -29
package/CHANGELOG.md
ADDED
|
@@ -39,17 +39,14 @@ class BootpayWebView extends _react.Component {
|
|
|
39
39
|
payload.application_id = _reactNative.Platform.OS == 'ios' ? this.props.ios_application_id : this.props.android_application_id;
|
|
40
40
|
payload.items = items;
|
|
41
41
|
payload.user_info = user;
|
|
42
|
-
payload.extra = extra;
|
|
43
|
-
// this.setState({showCloseButton: true});
|
|
44
|
-
|
|
42
|
+
payload.extra = extra;
|
|
45
43
|
var quickPopup = '';
|
|
46
44
|
|
|
47
|
-
if (extra != undefined) {
|
|
45
|
+
if (extra != undefined && extra.quick_popup != undefined) {
|
|
48
46
|
if (extra.quick_popup == 1) {
|
|
49
47
|
quickPopup = 'BootPay.startQuickPopup();';
|
|
50
48
|
}
|
|
51
|
-
} //
|
|
52
|
-
//visibility가 true가 되면 webview onLoaded가 실행됨
|
|
49
|
+
} //visibility가 true가 되면 webview onLoaded가 실행됨
|
|
53
50
|
|
|
54
51
|
|
|
55
52
|
this.setState({
|
|
@@ -60,7 +57,7 @@ class BootpayWebView extends _react.Component {
|
|
|
60
57
|
${this.generateScript(payload)}
|
|
61
58
|
`,
|
|
62
59
|
firstLoad: false,
|
|
63
|
-
showCloseButton: extra.show_close_button
|
|
60
|
+
showCloseButton: extra.show_close_button || false
|
|
64
61
|
});
|
|
65
62
|
|
|
66
63
|
_UserInfo.default.updateInfo();
|
|
@@ -83,7 +80,6 @@ class BootpayWebView extends _react.Component {
|
|
|
83
80
|
});
|
|
84
81
|
|
|
85
82
|
_defineProperty(this, "generateScript", payload => {
|
|
86
|
-
// BootPay.request(${JSON.stringify(payload)})
|
|
87
83
|
const onError = '.error(function(data){ window.BootpayRNWebView.postMessage( JSON.stringify(data) ); })';
|
|
88
84
|
const onCancel = '.cancel(function(data){ window.BootpayRNWebView.postMessage( JSON.stringify(data) ); })';
|
|
89
85
|
const onReady = '.ready(function(data){ window.BootpayRNWebView.postMessage( JSON.stringify(data) ); })';
|
|
@@ -156,6 +152,7 @@ class BootpayWebView extends _react.Component {
|
|
|
156
152
|
});
|
|
157
153
|
|
|
158
154
|
_defineProperty(this, "transactionConfirm", data => {
|
|
155
|
+
// console.log('transactionConfirm: ' + data);
|
|
159
156
|
var json = JSON.stringify(data);
|
|
160
157
|
this.callJavaScript(`
|
|
161
158
|
BootPay.transactionConfirm(${json});
|
|
@@ -169,10 +166,11 @@ class BootpayWebView extends _react.Component {
|
|
|
169
166
|
});
|
|
170
167
|
|
|
171
168
|
_defineProperty(this, "callJavaScript", script => {
|
|
172
|
-
if (this.webView == null || this.webView == undefined) return;
|
|
173
|
-
|
|
169
|
+
if (this.webView == null || this.webView == undefined) return; // console.log('callJavascript: ' + script);
|
|
170
|
+
|
|
171
|
+
this.webView.injectJavaScript(`
|
|
174
172
|
javascript:(function(){${script} })()
|
|
175
|
-
|
|
173
|
+
`); // this.webView.evalu
|
|
176
174
|
});
|
|
177
175
|
|
|
178
176
|
_defineProperty(this, "getAnalyticsData", async () => {
|
|
@@ -205,6 +203,16 @@ class BootpayWebView extends _react.Component {
|
|
|
205
203
|
}
|
|
206
204
|
}, this.state.showCloseButton && /*#__PURE__*/_react.default.createElement(_reactNative.TouchableOpacity, {
|
|
207
205
|
onPress: () => {
|
|
206
|
+
var cancelData = {
|
|
207
|
+
action: 'BootpayCancel',
|
|
208
|
+
message: '사용자에 의해 취소되었습니다'
|
|
209
|
+
};
|
|
210
|
+
var closeData = {
|
|
211
|
+
action: 'BootpayClose',
|
|
212
|
+
message: '결제창이 닫혔습니다'
|
|
213
|
+
};
|
|
214
|
+
if (this.props.onCancel != undefined) this.props.onCancel(cancelData);
|
|
215
|
+
if (this.props.onClose != undefined) this.props.onClose(closeData);
|
|
208
216
|
this.setState({
|
|
209
217
|
visibility: false
|
|
210
218
|
});
|
|
@@ -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","uuid","getBootpayUUID","bootpaySK","getBootpaySK","bootLastTime","getBootpayLastTime","elaspedTime","Date","now","componentWillUnmount","setBootpayLastTime","render","state","flex","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 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 // this.state.script = await this.getMountJavascript(); \n // this.setState({showCloseButton: true}); \n\n var quickPopup = '';\n\n if(extra != undefined) {\n if(extra.quick_popup == 1) {\n quickPopup = 'BootPay.startQuickPopup();';\n }\n }\n // injectedJavaScript += 'BootPay.request(' + JSON.stringify(payload) + ')';\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\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 // uri: 'https://inapp.bootpay.co.kr/3.3.1/production.html'\n // onLoadEnd = async (e) => { \n // if(this.state.firstLoad == true) return;\n\n // this.setBootpayPlatform();\n // await this.setAnalyticsData();\n // this.setPayScript();\n // this.startBootpay();\n\n // this.setState({\n // ...this,\n // firstLoad: true\n // }) \n // }\n\n getMountJavascript = async () => { \n return `\n ${this.getBootpayPlatform()}\n ${await this.getAnalyticsData()}\n `; \n }\n\n\n generateScript= (payload) => {\n\n // BootPay.request(${JSON.stringify(payload)})\n\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 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 this.webView.callJavaScript(`\n javascript:(function(){${script} })()\n `);\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 });"]}
|
|
@@ -22,17 +22,14 @@ export class BootpayWebView extends Component {
|
|
|
22
22
|
payload.application_id = Platform.OS == 'ios' ? this.props.ios_application_id : this.props.android_application_id;
|
|
23
23
|
payload.items = items;
|
|
24
24
|
payload.user_info = user;
|
|
25
|
-
payload.extra = extra;
|
|
26
|
-
// this.setState({showCloseButton: true});
|
|
27
|
-
|
|
25
|
+
payload.extra = extra;
|
|
28
26
|
var quickPopup = '';
|
|
29
27
|
|
|
30
|
-
if (extra != undefined) {
|
|
28
|
+
if (extra != undefined && extra.quick_popup != undefined) {
|
|
31
29
|
if (extra.quick_popup == 1) {
|
|
32
30
|
quickPopup = 'BootPay.startQuickPopup();';
|
|
33
31
|
}
|
|
34
|
-
} //
|
|
35
|
-
//visibility가 true가 되면 webview onLoaded가 실행됨
|
|
32
|
+
} //visibility가 true가 되면 webview onLoaded가 실행됨
|
|
36
33
|
|
|
37
34
|
|
|
38
35
|
this.setState({
|
|
@@ -43,7 +40,7 @@ export class BootpayWebView extends Component {
|
|
|
43
40
|
${this.generateScript(payload)}
|
|
44
41
|
`,
|
|
45
42
|
firstLoad: false,
|
|
46
|
-
showCloseButton: extra.show_close_button
|
|
43
|
+
showCloseButton: extra.show_close_button || false
|
|
47
44
|
});
|
|
48
45
|
UserInfo.updateInfo();
|
|
49
46
|
});
|
|
@@ -65,7 +62,6 @@ export class BootpayWebView extends Component {
|
|
|
65
62
|
});
|
|
66
63
|
|
|
67
64
|
_defineProperty(this, "generateScript", payload => {
|
|
68
|
-
// BootPay.request(${JSON.stringify(payload)})
|
|
69
65
|
const onError = '.error(function(data){ window.BootpayRNWebView.postMessage( JSON.stringify(data) ); })';
|
|
70
66
|
const onCancel = '.cancel(function(data){ window.BootpayRNWebView.postMessage( JSON.stringify(data) ); })';
|
|
71
67
|
const onReady = '.ready(function(data){ window.BootpayRNWebView.postMessage( JSON.stringify(data) ); })';
|
|
@@ -138,6 +134,7 @@ export class BootpayWebView extends Component {
|
|
|
138
134
|
});
|
|
139
135
|
|
|
140
136
|
_defineProperty(this, "transactionConfirm", data => {
|
|
137
|
+
// console.log('transactionConfirm: ' + data);
|
|
141
138
|
var json = JSON.stringify(data);
|
|
142
139
|
this.callJavaScript(`
|
|
143
140
|
BootPay.transactionConfirm(${json});
|
|
@@ -151,10 +148,11 @@ export class BootpayWebView extends Component {
|
|
|
151
148
|
});
|
|
152
149
|
|
|
153
150
|
_defineProperty(this, "callJavaScript", script => {
|
|
154
|
-
if (this.webView == null || this.webView == undefined) return;
|
|
155
|
-
|
|
151
|
+
if (this.webView == null || this.webView == undefined) return; // console.log('callJavascript: ' + script);
|
|
152
|
+
|
|
153
|
+
this.webView.injectJavaScript(`
|
|
156
154
|
javascript:(function(){${script} })()
|
|
157
|
-
|
|
155
|
+
`); // this.webView.evalu
|
|
158
156
|
});
|
|
159
157
|
|
|
160
158
|
_defineProperty(this, "getAnalyticsData", async () => {
|
|
@@ -186,6 +184,16 @@ export class BootpayWebView extends Component {
|
|
|
186
184
|
}
|
|
187
185
|
}, this.state.showCloseButton && /*#__PURE__*/React.createElement(TouchableOpacity, {
|
|
188
186
|
onPress: () => {
|
|
187
|
+
var cancelData = {
|
|
188
|
+
action: 'BootpayCancel',
|
|
189
|
+
message: '사용자에 의해 취소되었습니다'
|
|
190
|
+
};
|
|
191
|
+
var closeData = {
|
|
192
|
+
action: 'BootpayClose',
|
|
193
|
+
message: '결제창이 닫혔습니다'
|
|
194
|
+
};
|
|
195
|
+
if (this.props.onCancel != undefined) this.props.onCancel(cancelData);
|
|
196
|
+
if (this.props.onClose != undefined) this.props.onClose(closeData);
|
|
189
197
|
this.setState({
|
|
190
198
|
visibility: false
|
|
191
199
|
});
|
|
@@ -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","uuid","getBootpayUUID","bootpaySK","getBootpaySK","bootLastTime","getBootpayLastTime","elaspedTime","Date","now","componentWillUnmount","setBootpayLastTime","render","state","flex","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 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 // this.state.script = await this.getMountJavascript(); \n // this.setState({showCloseButton: true}); \n\n var quickPopup = '';\n\n if(extra != undefined) {\n if(extra.quick_popup == 1) {\n quickPopup = 'BootPay.startQuickPopup();';\n }\n }\n // injectedJavaScript += 'BootPay.request(' + JSON.stringify(payload) + ')';\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\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 // uri: 'https://inapp.bootpay.co.kr/3.3.1/production.html'\n // onLoadEnd = async (e) => { \n // if(this.state.firstLoad == true) return;\n\n // this.setBootpayPlatform();\n // await this.setAnalyticsData();\n // this.setPayScript();\n // this.startBootpay();\n\n // this.setState({\n // ...this,\n // firstLoad: true\n // }) \n // }\n\n getMountJavascript = async () => { \n return `\n ${this.getBootpayPlatform()}\n ${await this.getAnalyticsData()}\n `; \n }\n\n\n generateScript= (payload) => {\n\n // BootPay.request(${JSON.stringify(payload)})\n\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 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 this.webView.callJavaScript(`\n javascript:(function(){${script} })()\n `);\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 });"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UserInfo.d.ts","sourceRoot":"","sources":["../../src/UserInfo.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIlC,MAAM,CAAC,OAAO,OAAO,QAAS,SAAQ,SAAS;IAC3C,MAAM,CAAC,cAAc,QAAS,MAAM,cAAc,GAAG,sBAYpD;IAED,MAAM,CAAC,cAAc,QAAS,MAAM,OAAO,GAAG,sBAW7C;IAED,MAAM,CAAC,cAAc,yBAGpB;IAED,MAAM,CAAC,YAAY,yBAElB;IAED,MAAM,CAAC,YAAY,QAAS,MAAM,sBAEjC;IAED,MAAM,CAAC,YAAY,SAAU,MAAM,QAAQ,MAAM,sBAEhD;IAED,MAAM,CAAC,kBAAkB,yBAExB;IAED,MAAM,CAAC,kBAAkB,CAAC,GAAG,EAAE,MAAM;IAIrC,MAAM,CAAC,gBAAgB;IAIvB,MAAM,CAAC,gBAAgB,QAAS,MAAM,sBAErC;IAED,MAAM,CAAC,UAAU,sBAWhB;CACJ"}
|
package/package.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-native-bootpay-api",
|
|
3
|
-
"version": "1.1
|
|
3
|
+
"version": "1.4.1",
|
|
4
4
|
"description": "test",
|
|
5
5
|
"main": "lib/commonjs/index",
|
|
6
6
|
"module": "lib/module/index",
|
|
7
|
-
"types": "
|
|
7
|
+
"types": "src/index.d.ts",
|
|
8
8
|
"react-native": "src/index",
|
|
9
9
|
"source": "src/index",
|
|
10
10
|
"files": [
|
|
@@ -70,10 +70,7 @@
|
|
|
70
70
|
},
|
|
71
71
|
"peerDependencies": {
|
|
72
72
|
"react": "*",
|
|
73
|
-
"react-native": "*"
|
|
74
|
-
"react-native-webview-bootpay": "^11.6.45",
|
|
75
|
-
"react-native-device-info": "8.1.3",
|
|
76
|
-
"react-native-sensitive-info": "5.5.8"
|
|
73
|
+
"react-native": "*"
|
|
77
74
|
},
|
|
78
75
|
"jest": {
|
|
79
76
|
"preset": "react-native",
|
package/src/BootpayWebView.js
CHANGED
|
@@ -37,6 +37,18 @@ s
|
|
|
37
37
|
this.state.showCloseButton &&
|
|
38
38
|
<TouchableOpacity
|
|
39
39
|
onPress={() => {
|
|
40
|
+
var cancelData = {
|
|
41
|
+
action: 'BootpayCancel',
|
|
42
|
+
message: '사용자에 의해 취소되었습니다'
|
|
43
|
+
}
|
|
44
|
+
var closeData = {
|
|
45
|
+
action: 'BootpayClose',
|
|
46
|
+
message: '결제창이 닫혔습니다'
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
if(this.props.onCancel != undefined) this.props.onCancel(cancelData);
|
|
50
|
+
if(this.props.onClose != undefined) this.props.onClose(closeData);
|
|
51
|
+
|
|
40
52
|
this.setState({visibility: false})
|
|
41
53
|
} }>
|
|
42
54
|
<Image
|
|
@@ -69,19 +81,15 @@ s
|
|
|
69
81
|
payload.items = items;
|
|
70
82
|
payload.user_info = user;
|
|
71
83
|
payload.extra = extra;
|
|
72
|
-
|
|
73
|
-
// this.state.script = await this.getMountJavascript();
|
|
74
|
-
// this.setState({showCloseButton: true});
|
|
84
|
+
|
|
75
85
|
|
|
76
86
|
var quickPopup = '';
|
|
77
87
|
|
|
78
|
-
if(extra != undefined) {
|
|
88
|
+
if(extra != undefined && extra.quick_popup != undefined) {
|
|
79
89
|
if(extra.quick_popup == 1) {
|
|
80
90
|
quickPopup = 'BootPay.startQuickPopup();';
|
|
81
91
|
}
|
|
82
|
-
}
|
|
83
|
-
// injectedJavaScript += 'BootPay.request(' + JSON.stringify(payload) + ')';
|
|
84
|
-
|
|
92
|
+
}
|
|
85
93
|
|
|
86
94
|
|
|
87
95
|
//visibility가 true가 되면 webview onLoaded가 실행됨
|
|
@@ -94,7 +102,7 @@ s
|
|
|
94
102
|
${this.generateScript(payload)}
|
|
95
103
|
`,
|
|
96
104
|
firstLoad: false,
|
|
97
|
-
showCloseButton: extra.show_close_button
|
|
105
|
+
showCloseButton: extra.show_close_button || false
|
|
98
106
|
}
|
|
99
107
|
)
|
|
100
108
|
|
|
@@ -109,21 +117,7 @@ s
|
|
|
109
117
|
)
|
|
110
118
|
this.removePaymentWindow();
|
|
111
119
|
}
|
|
112
|
-
|
|
113
|
-
// uri: 'https://inapp.bootpay.co.kr/3.3.1/production.html'
|
|
114
|
-
// onLoadEnd = async (e) => {
|
|
115
|
-
// if(this.state.firstLoad == true) return;
|
|
116
|
-
|
|
117
|
-
// this.setBootpayPlatform();
|
|
118
|
-
// await this.setAnalyticsData();
|
|
119
|
-
// this.setPayScript();
|
|
120
|
-
// this.startBootpay();
|
|
121
|
-
|
|
122
|
-
// this.setState({
|
|
123
|
-
// ...this,
|
|
124
|
-
// firstLoad: true
|
|
125
|
-
// })
|
|
126
|
-
// }
|
|
120
|
+
|
|
127
121
|
|
|
128
122
|
getMountJavascript = async () => {
|
|
129
123
|
return `
|
|
@@ -133,10 +127,7 @@ s
|
|
|
133
127
|
}
|
|
134
128
|
|
|
135
129
|
|
|
136
|
-
generateScript= (payload) => {
|
|
137
|
-
|
|
138
|
-
// BootPay.request(${JSON.stringify(payload)})
|
|
139
|
-
|
|
130
|
+
generateScript= (payload) => {
|
|
140
131
|
const onError = '.error(function(data){ window.BootpayRNWebView.postMessage( JSON.stringify(data) ); })';
|
|
141
132
|
const onCancel = '.cancel(function(data){ window.BootpayRNWebView.postMessage( JSON.stringify(data) ); })';
|
|
142
133
|
const onReady = '.ready(function(data){ window.BootpayRNWebView.postMessage( JSON.stringify(data) ); })';
|
|
@@ -218,6 +209,8 @@ s
|
|
|
218
209
|
// }
|
|
219
210
|
|
|
220
211
|
transactionConfirm = (data) => {
|
|
212
|
+
// console.log('transactionConfirm: ' + data);
|
|
213
|
+
|
|
221
214
|
var json = JSON.stringify(data)
|
|
222
215
|
this.callJavaScript(`
|
|
223
216
|
BootPay.transactionConfirm(${json});
|
|
@@ -232,9 +225,13 @@ s
|
|
|
232
225
|
|
|
233
226
|
callJavaScript = (script) => {
|
|
234
227
|
if(this.webView == null || this.webView == undefined) return;
|
|
235
|
-
|
|
228
|
+
|
|
229
|
+
// console.log('callJavascript: ' + script);
|
|
230
|
+
|
|
231
|
+
this.webView.injectJavaScript(`
|
|
236
232
|
javascript:(function(){${script} })()
|
|
237
|
-
|
|
233
|
+
`);
|
|
234
|
+
// this.webView.evalu
|
|
238
235
|
}
|
|
239
236
|
|
|
240
237
|
getAnalyticsData = async () => {
|