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 ADDED
@@ -0,0 +1,14 @@
1
+ ### 1.0.4
2
+ - typescript declare 적용
3
+
4
+ ### 1.0.3
5
+ - close button 클릭시 onCancel, onClose 이벤트 호출
6
+
7
+ ### 1.0.2
8
+ - callJavascript 버그 수정
9
+
10
+ ### 1.0.1
11
+ - close.png 못찾는 버그 수정
12
+
13
+ ### 1.0.0
14
+ - first release
@@ -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; // this.state.script = await this.getMountJavascript();
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
- } // injectedJavaScript += 'BootPay.request(' + JSON.stringify(payload) + ')';
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
- this.webView.callJavaScript(`
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; // this.state.script = await this.getMountJavascript();
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
- } // injectedJavaScript += 'BootPay.request(' + JSON.stringify(payload) + ')';
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
- this.webView.callJavaScript(`
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":";;AAEA,OAAOA,KAAP,IAAgBC,SAAhB,EAA2BC,MAA3B,QAAyC,OAAzC;AACA,SAASC,YAAT,EAAuBC,KAAvB,EAA8BC,QAA9B,EAAwCC,gBAAxC,EAA0DC,KAA1D,EAAiEC,UAAjE,QAAmF,cAAnF;AACA,OAAOC,OAAP,MAAqB,8BAArB;AACA,OAAOC,QAAP,MAAqB,YAArB;AAEA,OAAO,MAAMC,cAAN,SAA6BV,SAA7B,CAAuC;AAAA;AAAA;;AAAA,qCAChCC,MAAM,GAACO,OAAP,GAAgB,IADgB;;AAAA,mCAGlC;AACJG,MAAAA,UAAU,EAAE,KADR;AAEJC,MAAAA,MAAM,EAAE,EAFJ;AAGJC,MAAAA,SAAS,EAAE;AAHP,KAHkC;;AAAA;;AAAA,qCAsEhC,OAAOC,OAAP,EAAgBC,KAAhB,EAAuBC,IAAvB,EAA6BC,KAA7B,KAAuC;AAE7CH,MAAAA,OAAO,CAACI,cAAR,GAA0Bd,QAAQ,CAACe,EAAT,IAAe,KAAf,GAAuB,KAAKC,KAAL,CAAWC,kBAAlC,GAAuD,KAAKD,KAAL,CAAWE,sBAA5F;AACAR,MAAAA,OAAO,CAACC,KAAR,GAAgBA,KAAhB;AACAD,MAAAA,OAAO,CAACS,SAAR,GAAoBP,IAApB;AACAF,MAAAA,OAAO,CAACG,KAAR,GAAgBA,KAAhB;AAGA,UAAIO,UAAU,GAAG,EAAjB;;AAEA,UAAGP,KAAK,IAAIQ,SAAT,IAAsBR,KAAK,CAACS,WAAN,IAAqBD,SAA9C,EAAyD;AACrD,YAAGR,KAAK,CAACS,WAAN,IAAqB,CAAxB,EAA2B;AACvBF,UAAAA,UAAU,GAAG,4BAAb;AACH;AACJ,OAd4C,CAiB7C;;;AACA,WAAKG,QAAL,CACI;AACIhB,QAAAA,UAAU,EAAE,IADhB;AAEIC,QAAAA,MAAM,EAAG;AACzB,kBAAkB,MAAM,KAAKgB,kBAAL,EAA0B;AAClD,kBAAkBJ,UAAW;AAC7B,kBAAkB,KAAKK,cAAL,CAAoBf,OAApB,CAA6B;AAC/C,iBANY;AAOID,QAAAA,SAAS,EAAE,KAPf;AAQIiB,QAAAA,eAAe,EAAEb,KAAK,CAACc,iBAAN,IAA2B;AARhD,OADJ;AAaAtB,MAAAA,QAAQ,CAACuB,UAAT;AACH,KAtGyC;;AAAA,qCAwGhC,MAAM;AACZ,WAAKL,QAAL,CACI,CAAC;AAAEhB,QAAAA;AAAF,OAAD,MAAqB;AACjBA,QAAAA,UAAU,EAAE;AADK,OAArB,CADJ;AAKA,WAAKsB,mBAAL;AACH,KA/GyC;;AAAA,gDAkHrB,YAAY;AAC7B,aAAQ;AAChB,UAAU,KAAKC,kBAAL,EAA0B;AACpC,UAAU,MAAM,KAAKC,gBAAL,EAAwB;AACxC,SAHQ;AAIH,KAvHyC;;AAAA,4CA0HzBrB,OAAD,IAAa;AACzB,YAAMsB,OAAO,GAAG,wFAAhB;AACA,YAAMC,QAAQ,GAAG,yFAAjB;AACA,YAAMC,OAAO,GAAG,wFAAhB;AACA,YAAMC,SAAS,GAAG,0FAAlB;AACA,YAAMC,OAAO,GAAG,yEAAhB;AACA,YAAMC,MAAM,GAAG,uFAAf;AAEA,aAAQ,mBAAkBC,IAAI,CAACC,SAAL,CAAe7B,OAAf,CAAwB,GAA3C,GAAgDsB,OAAhD,GAA0DC,QAA1D,GAAqEC,OAArE,GAA+EC,SAA/E,GAA2FC,OAA3F,GAAqGC,MAArG,GAA8G,YAArH;AACH,KAnIyC;;AAAA,uCAqI9B,CAAC;AAAEG,MAAAA;AAAF,KAAD,KAAqB;AAC7B,UAAIA,WAAW,IAAInB,SAAf,IAA4BmB,WAAW,CAACC,IAAZ,IAAoBpB,SAApD,EAA+D;;AAE/D,UAAGmB,WAAW,CAACC,IAAZ,IAAoB,OAAvB,EAAgC;AAC5B,YAAG,KAAKzB,KAAL,CAAWoB,OAAX,IAAsBf,SAAzB,EAAoC;AACpC,YAAIqB,IAAI,GAAG;AACPC,UAAAA,MAAM,EAAE,cADD;AAEPC,UAAAA,OAAO,EAAE;AAFF,SAAX;AAIA,aAAK5B,KAAL,CAAWoB,OAAX,CAAmBM,IAAnB;AACA,aAAKG,OAAL;AACA;AACH;;AAED,YAAMJ,IAAI,GAAGH,IAAI,CAACQ,KAAL,CAAWN,WAAW,CAACC,IAAvB,CAAb;;AACA,cAAQA,IAAI,CAACE,MAAb;AACI,aAAK,eAAL;AACI,cAAG,KAAK3B,KAAL,CAAWiB,QAAX,IAAuBZ,SAA1B,EAAqC,KAAKL,KAAL,CAAWiB,QAAX,CAAoBQ,IAApB;AACrC,eAAKlB,QAAL,CACI;AACIhB,YAAAA,UAAU,EAAE;AADhB,WADJ;AAKA;;AACJ,aAAK,cAAL;AACI,cAAG,KAAKS,KAAL,CAAWgB,OAAX,IAAsBX,SAAzB,EAAoC,KAAKL,KAAL,CAAWgB,OAAX,CAAmBS,IAAnB;AACpC,eAAKlB,QAAL,CACI;AACIhB,YAAAA,UAAU,EAAE;AADhB,WADJ;AAKA;;AACJ,aAAK,kBAAL;AACI,cAAG,KAAKS,KAAL,CAAWkB,OAAX,IAAsBb,SAAzB,EAAoC,KAAKL,KAAL,CAAWkB,OAAX,CAAmBO,IAAnB;AACpC;;AACJ,aAAK,gBAAL;AACI,cAAG,KAAKzB,KAAL,CAAWmB,SAAX,IAAwBd,SAA3B,EAAsC,KAAKL,KAAL,CAAWmB,SAAX,CAAqBM,IAArB;AACtC;;AACJ,aAAK,aAAL;AACI,cAAG,KAAKzB,KAAL,CAAWqB,MAAX,IAAqBhB,SAAxB,EAAmC,KAAKL,KAAL,CAAWqB,MAAX,CAAkBI,IAAlB;AACnC,eAAKlB,QAAL,CACI;AACIhB,YAAAA,UAAU,EAAE;AADhB,WADJ;AAKA;AA9BR;AAgCH,KApLyC;;AAAA,0DAsLVwC,GAAD,IAAS;AACpC,aAAO,IAAP;AACH,KAxLyC;;AAAA,gDA0LrB,MAAM;AACvB,UAAG/C,QAAQ,CAACe,EAAT,IAAe,KAAlB,EAAyB;AACrB,eAAO,2BAAP;AACH,OAFD,MAEO,IAAGf,QAAQ,CAACe,EAAT,IAAe,SAAlB,EAA4B;AAC/B,eAAO,+BAAP;AACH;AACJ,KAhMyC;;AAAA,gDA2MpB0B,IAAD,IAAU;AAC3B;AAEA,UAAIC,IAAI,GAAGJ,IAAI,CAACC,SAAL,CAAeE,IAAf,CAAX;AACA,WAAKO,cAAL,CAAqB;AAC7B,qCAAqCN,IAAK;AAC1C,WAFQ;AAGH,KAlNyC;;AAAA,iDAoNpB,MAAM;AACxB,WAAKM,cAAL,CAAqB;AAC7B;AACA,WAFQ;AAGH,KAxNyC;;AAAA,4CA0NxBxC,MAAD,IAAY;AACzB,UAAG,KAAKyC,OAAL,IAAgB,IAAhB,IAAwB,KAAKA,OAAL,IAAgB5B,SAA3C,EAAsD,OAD7B,CAGzB;;AAEA,WAAK4B,OAAL,CAAaC,gBAAb,CAA+B;AACvC,iCAAiC1C,MAAO;AACxC,SAFQ,EALyB,CAQzB;AACH,KAnOyC;;AAAA,8CAqOvB,YAAY;AAC3B,YAAM2C,IAAI,GAAG,MAAM9C,QAAQ,CAAC+C,cAAT,EAAnB;AACA,YAAMC,SAAS,GAAG,MAAMhD,QAAQ,CAACiD,YAAT,EAAxB;AACA,YAAMC,YAAY,GAAG,MAAMlD,QAAQ,CAACmD,kBAAT,EAA3B;AAGA,YAAMC,WAAW,GAAGC,IAAI,CAACC,GAAL,KAAaJ,YAAjC;AACA,aAAQ,0CAAyCJ,IAAK,SAAQE,SAAU,aAAYE,YAAa,SAAQE,WAAY,KAArH,CAP2B,CAQ3B;AACH,KA9OyC;AAAA;;AAShB,QAApBG,oBAAoB,GAAG;AACzB,SAAKrC,QAAL,CACI;AACIhB,MAAAA,UAAU,EAAE,KADhB;AAEIE,MAAAA,SAAS,EAAE,KAFf;AAGIiB,MAAAA,eAAe,EAAE;AAHrB,KADJ;AAOArB,IAAAA,QAAQ,CAACwD,kBAAT,CAA4BH,IAAI,CAACC,GAAL,EAA5B;AACH;;AAEDG,EAAAA,MAAM,GAAG;AAGL,wBAAO,oBAAC,KAAD;AACH,MAAA,aAAa,EAAE,OADZ;AAEH,MAAA,WAAW,EAAE,KAFV;AAGH,MAAA,OAAO,EAAE,KAAKC,KAAL,CAAWxD;AAHjB,oBAIH,oBAAC,YAAD;AAAc,MAAA,KAAK,EAAE;AAAEyD,QAAAA,IAAI,EAAE;AAAR;AAArB,OAEQ,KAAKD,KAAL,CAAWrC,eAAX,iBACA,oBAAC,gBAAD;AACI,MAAA,OAAO,EAAE,MAAM;AACX,YAAIuC,UAAU,GAAG;AACbtB,UAAAA,MAAM,EAAE,eADK;AAEbC,UAAAA,OAAO,EAAE;AAFI,SAAjB;AAIA,YAAIsB,SAAS,GAAG;AACZvB,UAAAA,MAAM,EAAE,cADI;AAEZC,UAAAA,OAAO,EAAE;AAFG,SAAhB;AAKA,YAAG,KAAK5B,KAAL,CAAWiB,QAAX,IAAuBZ,SAA1B,EAAqC,KAAKL,KAAL,CAAWiB,QAAX,CAAoBgC,UAApB;AACrC,YAAG,KAAKjD,KAAL,CAAWoB,OAAX,IAAsBf,SAAzB,EAAoC,KAAKL,KAAL,CAAWoB,OAAX,CAAmB8B,SAAnB;AAEpC,aAAK3C,QAAL,CAAc;AAAChB,UAAAA,UAAU,EAAE;AAAb,SAAd;AACH;AAfL,oBAgBI,oBAAC,KAAD;AACI,MAAA,KAAK,EAAE,CAAC4D,MAAM,CAACC,OAAR,CADX;AAEI,MAAA,MAAM,EAAEC,OAAO,CAAC,qBAAD;AAFnB,MAhBJ,CAHR,eAwBI,oBAAC,OAAD;AACI,MAAA,GAAG,EAAGC,EAAD,IAAQ,KAAKrB,OAAL,GAAeqB,EADhC;AAEI,MAAA,SAAS,EAAE,IAFf;AAGI,MAAA,eAAe,EAAE,CAAC,GAAD,CAHrB;AAII,MAAA,MAAM,EAAE;AACJC,QAAAA,GAAG,EAAE;AADD,OAJZ;AAOI,MAAA,kBAAkB,EAAE,KAAKR,KAAL,CAAWvD,MAPnC;AAQI,MAAA,iBAAiB,EAAE,IARvB;AASI,MAAA,qCAAqC,EAAE,IAT3C;AAUI,MAAA,eAAe,EAAE,IAVrB;AAWI,MAAA,SAAS,EAAE,KAAKgE,SAXpB;AAYI,MAAA,4BAA4B,EAAE,KAAKC;AAZvC,MAxBJ,CAJG,CAAP;AA6CH;;AApEyC;AAkP9C,IAAIN,MAAM,GAAGhE,UAAU,CAACuE,MAAX,CAAkB;AAC3BC,EAAAA,SAAS,EAAE;AACTX,IAAAA,IAAI,EAAE,CADG;AAETY,IAAAA,cAAc,EAAE,QAFP;AAGTC,IAAAA,UAAU,EAAE,QAHH;AAITC,IAAAA,eAAe,EAAE;AAJR,GADgB;AAO3BC,EAAAA,OAAO,EAAE;AACPC,IAAAA,QAAQ,EAAE,EADH;AAEPC,IAAAA,SAAS,EAAE,QAFJ;AAGPC,IAAAA,MAAM,EAAE;AAHD,GAPkB;AAY3B;AACA;AACAd,EAAAA,OAAO,EAAE;AACPe,IAAAA,KAAK,EAAE,EADA;AAEPC,IAAAA,MAAM,EAAE,EAFD;AAGPC,IAAAA,KAAK,EAAE,CAHA;AAIPC,IAAAA,SAAS,EAAE;AAJJ;AAdkB,CAAlB,CAAb","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 });"]}
@@ -12,3 +12,4 @@ export default class UserInfo extends Component {
12
12
  static setBootpayUserId: (val: string) => Promise<unknown>;
13
13
  static updateInfo: () => Promise<void>;
14
14
  }
15
+ //# sourceMappingURL=UserInfo.d.ts.map
@@ -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.0",
3
+ "version": "1.4.1",
4
4
  "description": "test",
5
5
  "main": "lib/commonjs/index",
6
6
  "module": "lib/module/index",
7
- "types": "lib/typescript/index.d.ts",
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",
@@ -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
- this.webView.callJavaScript(`
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 () => {