react-native-bootpay-api 1.0.0 → 1.0.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/images/close.png
ADDED
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["BootpayWebView.js"],"names":["BootpayWebView","Component","useRef","WebView","visibility","script","firstLoad","payload","items","user","extra","state","getMountJavascript","application_id","Platform","OS","props","ios_application_id","android_application_id","user_info","setState","showCloseButton","quickPopup","undefined","generateScript","show_close_button","UserInfo","updateInfo","removePaymentWindow","getBootpayPlatform","getAnalyticsData","onError","onCancel","onReady","onConfirm","onClose","onDone","JSON","stringify","nativeEvent","data","json","action","message","dismiss","parse","url","console","log","callJavaScript","webView","uuid","getBootpayUUID","bootpaySK","getBootpaySK","bootLastTime","getBootpayLastTime","elaspedTime","Date","now","componentWillUnmount","setBootpayLastTime","render","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.2/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 this.state.script = await this.getMountJavascript(); \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.setState({showCloseButton: true}); \n\n var quickPopup = '';\n\n if(extra != undefined) {\n if(extra.quickPopup == 1) {\n quickPopup = 'BootPay.startQuickPopup();';\n }\n }\n // injectedJavaScript += 'BootPay.request(' + JSON.stringify(payload) + ')';\n\n // console.log('request ' + this.injectedJavaScript);\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 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 console.log(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","state","getMountJavascript","application_id","Platform","OS","props","ios_application_id","android_application_id","user_info","setState","showCloseButton","quickPopup","undefined","generateScript","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","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.2/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 this.state.script = await this.getMountJavascript(); \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.setState({showCloseButton: true}); \n\n var quickPopup = '';\n\n if(extra != undefined) {\n if(extra.quickPopup == 1) {\n quickPopup = 'BootPay.startQuickPopup();';\n }\n }\n // injectedJavaScript += 'BootPay.request(' + JSON.stringify(payload) + ')';\n\n // console.log('request ' + this.injectedJavaScript);\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 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 +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","state","getMountJavascript","application_id","OS","props","ios_application_id","android_application_id","user_info","setState","showCloseButton","quickPopup","undefined","generateScript","show_close_button","updateInfo","removePaymentWindow","getBootpayPlatform","getAnalyticsData","onError","onCancel","onReady","onConfirm","onClose","onDone","JSON","stringify","nativeEvent","data","json","action","message","dismiss","parse","url","console","log","callJavaScript","webView","uuid","getBootpayUUID","bootpaySK","getBootpaySK","bootLastTime","getBootpayLastTime","elaspedTime","Date","now","componentWillUnmount","setBootpayLastTime","render","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.2/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 this.state.script = await this.getMountJavascript(); \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.setState({showCloseButton: true}); \n\n var quickPopup = '';\n\n if(extra != undefined) {\n if(extra.quickPopup == 1) {\n quickPopup = 'BootPay.startQuickPopup();';\n }\n }\n // injectedJavaScript += 'BootPay.request(' + JSON.stringify(payload) + ')';\n\n // console.log('request ' + this.injectedJavaScript);\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 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 console.log(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","state","getMountJavascript","application_id","OS","props","ios_application_id","android_application_id","user_info","setState","showCloseButton","quickPopup","undefined","generateScript","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","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.2/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 this.state.script = await this.getMountJavascript(); \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.setState({showCloseButton: true}); \n\n var quickPopup = '';\n\n if(extra != undefined) {\n if(extra.quickPopup == 1) {\n quickPopup = 'BootPay.startQuickPopup();';\n }\n }\n // injectedJavaScript += 'BootPay.request(' + JSON.stringify(payload) + ')';\n\n // console.log('request ' + this.injectedJavaScript);\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 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 });"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-native-bootpay-api",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.1",
|
|
4
4
|
"description": "test",
|
|
5
5
|
"main": "lib/commonjs/index",
|
|
6
6
|
"module": "lib/module/index",
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
"files": [
|
|
11
11
|
"src",
|
|
12
12
|
"lib",
|
|
13
|
+
"images",
|
|
13
14
|
"android",
|
|
14
15
|
"ios",
|
|
15
16
|
"cpp",
|
|
@@ -72,7 +73,7 @@
|
|
|
72
73
|
"peerDependencies": {
|
|
73
74
|
"react": "*",
|
|
74
75
|
"react-native": "*",
|
|
75
|
-
"react-native-webview-bootpay": "^11.6.
|
|
76
|
+
"react-native-webview-bootpay": "^11.6.45",
|
|
76
77
|
"react-native-device-info": "8.1.3",
|
|
77
78
|
"react-native-sensitive-info": "5.5.8"
|
|
78
79
|
},
|