iamport-react-native 2.0.0-rc.1 → 2.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.
Files changed (50) hide show
  1. package/README.md +1 -1
  2. package/android/build.gradle +1 -3
  3. package/ios/IamportReactNativeViewManager.m +5 -0
  4. package/lib/commonjs/components/Certification/index.js +20 -24
  5. package/lib/commonjs/components/Certification/index.js.map +1 -1
  6. package/lib/commonjs/components/ErrorOnParams/index.js +2 -10
  7. package/lib/commonjs/components/ErrorOnParams/index.js.map +1 -1
  8. package/lib/commonjs/components/Loading/index.js +3 -11
  9. package/lib/commonjs/components/Loading/index.js.map +1 -1
  10. package/lib/commonjs/components/Payment/index.js +25 -25
  11. package/lib/commonjs/components/Payment/index.js.map +1 -1
  12. package/lib/commonjs/constants/index.js +8 -4
  13. package/lib/commonjs/constants/index.js.map +1 -1
  14. package/lib/commonjs/utils/IamportUrl.js +27 -19
  15. package/lib/commonjs/utils/IamportUrl.js.map +1 -1
  16. package/lib/commonjs/utils/Validation.js +143 -3
  17. package/lib/commonjs/utils/Validation.js.map +1 -1
  18. package/lib/commonjs/utils/ValidationForPayment.js +4 -14
  19. package/lib/commonjs/utils/ValidationForPayment.js.map +1 -1
  20. package/lib/module/components/Certification/index.js +21 -25
  21. package/lib/module/components/Certification/index.js.map +1 -1
  22. package/lib/module/components/ErrorOnParams/index.js +3 -12
  23. package/lib/module/components/ErrorOnParams/index.js.map +1 -1
  24. package/lib/module/components/Loading/index.js +3 -11
  25. package/lib/module/components/Loading/index.js.map +1 -1
  26. package/lib/module/components/Payment/index.js +25 -25
  27. package/lib/module/components/Payment/index.js.map +1 -1
  28. package/lib/module/constants/index.js +8 -4
  29. package/lib/module/constants/index.js.map +1 -1
  30. package/lib/module/utils/IamportUrl.js +27 -19
  31. package/lib/module/utils/IamportUrl.js.map +1 -1
  32. package/lib/module/utils/Validation.js +143 -3
  33. package/lib/module/utils/Validation.js.map +1 -1
  34. package/lib/module/utils/ValidationForPayment.js +4 -14
  35. package/lib/module/utils/ValidationForPayment.js.map +1 -1
  36. package/lib/typescript/components/Certification/index.d.ts +1 -1
  37. package/lib/typescript/components/Payment/index.d.ts +1 -1
  38. package/lib/typescript/constants/index.d.ts +6 -2
  39. package/lib/typescript/utils/IamportUrl.d.ts +2 -2
  40. package/lib/typescript/utils/Validation.d.ts +51 -2
  41. package/lib/typescript/utils/ValidationForPayment.d.ts +0 -1
  42. package/package.json +18 -18
  43. package/src/components/Certification/index.tsx +66 -66
  44. package/src/components/ErrorOnParams/index.tsx +4 -23
  45. package/src/components/Loading/index.tsx +3 -11
  46. package/src/components/Payment/index.tsx +82 -81
  47. package/src/constants/index.ts +6 -1
  48. package/src/utils/IamportUrl.ts +27 -22
  49. package/src/utils/Validation.ts +141 -4
  50. package/src/utils/ValidationForPayment.ts +5 -14
package/README.md CHANGED
@@ -4,7 +4,7 @@
4
4
  아임포트 리액트 네이티브 모듈입니다.
5
5
 
6
6
  ## 버전 정보
7
- 최신버전은 [v2.0.0-rc.1](https://github.com/iamport/iamport-react-native/tree/v2.0.0-rc.1)입니다.
7
+ 최신버전은 [v2.0.1](https://github.com/iamport/iamport-react-native/tree/v2.0.1)입니다.
8
8
  버전 히스토리는 [버전 정보](./manuals/VERSION.md)를 참고하세요.
9
9
 
10
10
  ## 지원 정보
@@ -8,7 +8,7 @@ buildscript {
8
8
  }
9
9
 
10
10
  dependencies {
11
- classpath 'com.android.tools.build:gradle:3.2.1'
11
+ classpath 'com.android.tools.build:gradle:7.0.1'
12
12
  // noinspection DifferentKotlinGradleVersion
13
13
  classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
14
14
  }
@@ -31,8 +31,6 @@ android {
31
31
  defaultConfig {
32
32
  minSdkVersion 16
33
33
  targetSdkVersion getExtOrIntegerDefault('targetSdkVersion')
34
- versionCode 1
35
- versionName "1.0"
36
34
 
37
35
  }
38
36
 
@@ -4,4 +4,9 @@
4
4
 
5
5
  RCT_EXPORT_VIEW_PROPERTY(color, NSString)
6
6
 
7
+ + (BOOL)requiresMainQueueSetup
8
+ {
9
+ return YES;
10
+ }
11
+
7
12
  @end
@@ -37,26 +37,24 @@ function Certification({
37
37
  callback
38
38
  }) {
39
39
  const [isWebViewLoaded, setIsWebViewLoaded] = (0, _react.useState)(false);
40
- const webview = (0, _react.useRef)();
41
- const validation = new _Validation.Validation(userCode, loading);
40
+ const webview = /*#__PURE__*/(0, _react.createRef)();
41
+ const validation = new _Validation.Validation(userCode, loading, callback, data);
42
+ let redirectUrl = _constants.IMPConst.M_REDIRECT_URL;
43
+
44
+ if (data.m_redirect_url !== undefined && data.m_redirect_url.trim() !== '') {
45
+ redirectUrl = data.m_redirect_url;
46
+ } else {
47
+ data.m_redirect_url = redirectUrl;
48
+ }
42
49
 
43
50
  if (validation.getIsValid()) {
44
51
  const {
45
- wrapper,
46
52
  loadingContainer,
47
53
  webViewContainer
48
54
  } = _styles.default;
49
- return /*#__PURE__*/_react.default.createElement(_reactNative.View, {
50
- style: wrapper
51
- }, /*#__PURE__*/_react.default.createElement(_reactNative.View, {
52
- style: webViewContainer
53
- }, /*#__PURE__*/_react.default.createElement(_reactNativeWebview.WebView, {
54
- ref: ref => {
55
- if (ref !== null) {
56
- webview.current = ref;
57
- }
58
- },
59
- useWebKit: true,
55
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_reactNativeWebview.WebView, {
56
+ containerStyle: webViewContainer,
57
+ ref: webview,
60
58
  source: {
61
59
  html: _constants.IMPConst.WEBVIEW_SOURCE_HTML
62
60
  },
@@ -90,16 +88,13 @@ function Certification({
90
88
  }
91
89
  },
92
90
  onMessage: e => {
93
- const {
94
- data
95
- } = e.nativeEvent;
96
- let response = data;
91
+ let data = e.nativeEvent.data;
97
92
 
98
- while (decodeURIComponent(response) !== response) {
99
- response = decodeURIComponent(response);
93
+ if (decodeURIComponent(data) !== data) {
94
+ data = decodeURIComponent(data);
100
95
  }
101
96
 
102
- response = JSON.parse(response);
97
+ let response = JSON.parse(data);
103
98
 
104
99
  if (typeof callback === 'function') {
105
100
  callback(response);
@@ -114,7 +109,8 @@ function Certification({
114
109
  onShouldStartLoadWithRequest: request => {
115
110
  const {
116
111
  url
117
- } = request;
112
+ } = request; // console.log('url: ' + url);
113
+
118
114
  const iamportUrl = new _IamportUrl.default(url);
119
115
 
120
116
  if (iamportUrl.isAppUrl()) {
@@ -133,14 +129,14 @@ function Certification({
133
129
  return false;
134
130
  }
135
131
 
136
- if (iamportUrl.isPaymentOver()) {
132
+ if (iamportUrl.isPaymentOver(redirectUrl)) {
137
133
  callback(iamportUrl.getQuery());
138
134
  return false;
139
135
  }
140
136
 
141
137
  return true;
142
138
  }
143
- })));
139
+ }));
144
140
  }
145
141
 
146
142
  return /*#__PURE__*/_react.default.createElement(_ErrorOnParams.default, {
@@ -1 +1 @@
1
- {"version":3,"sources":["index.tsx"],"names":["Certification","userCode","tierCode","data","loading","callback","isWebViewLoaded","setIsWebViewLoaded","webview","validation","Validation","getIsValid","wrapper","loadingContainer","webViewContainer","viewStyles","ref","current","html","IMPConst","WEBVIEW_SOURCE_HTML","injectJavaScript","JSON","stringify","e","nativeEvent","response","decodeURIComponent","parse","request","url","iamportUrl","IamportUrl","isAppUrl","launchApp","catch","code","message","imp_success","error_code","error_msg","isPaymentOver","getQuery","getMessage"],"mappings":"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","sourcesContent":["import React, { useRef, useState } from 'react';\nimport { View } from 'react-native';\nimport { WebView } from 'react-native-webview';\n\nimport Loading from '../Loading';\nimport ErrorOnParams from '../ErrorOnParams';\n\nimport { IMPData, Validation } from '../../utils/Validation';\nimport { IMPConst } from '../../constants';\n\nimport viewStyles from '../../styles';\nimport IamportUrl from '../../utils/IamportUrl';\n\ntype Props = {\n userCode: string;\n tierCode?: string;\n data: IMPData.CertificationData;\n loading: any;\n callback: (response: any) => any;\n};\n\nfunction Certification({ userCode, tierCode, data, loading, callback }: Props) {\n const [isWebViewLoaded, setIsWebViewLoaded] = useState(false);\n const webview = useRef<WebView>();\n\n const validation = new Validation(userCode, loading);\n if (validation.getIsValid()) {\n const { wrapper, loadingContainer, webViewContainer } = viewStyles;\n return (\n <View style={wrapper}>\n <View style={webViewContainer}>\n <WebView\n ref={(ref) => {\n if (ref !== null) {\n webview.current = ref;\n }\n }}\n useWebKit\n source={{ html: IMPConst.WEBVIEW_SOURCE_HTML }}\n onLoadEnd={() => {\n if (!isWebViewLoaded) {\n // html이 load되고 최초 한번만 inject javascript\n if (tierCode) {\n webview.current?.injectJavaScript(`\n setTimeout(function() { IMP.agency(\"${userCode}\", \"${tierCode}\"); });\n `);\n } else {\n webview.current?.injectJavaScript(`\n setTimeout(function() { IMP.init(\"${userCode}\"); });\n `);\n }\n webview.current?.injectJavaScript(`\n setTimeout(function() {\n IMP.certification(${JSON.stringify(data)}, function(response) {\n window.ReactNativeWebView.postMessage(JSON.stringify(response));\n });\n });\n `);\n setIsWebViewLoaded(true);\n }\n }}\n onMessage={(e) => {\n const { data } = e.nativeEvent;\n let response = data;\n while (decodeURIComponent(response) !== response) {\n response = decodeURIComponent(response);\n }\n response = JSON.parse(response);\n\n if (typeof callback === 'function') {\n callback(response);\n }\n }}\n startInLoadingState\n renderLoading={() => (\n <View style={loadingContainer}>{loading || <Loading />}</View>\n )}\n originWhitelist={['*']} // https://github.com/facebook/react-native/issues/19986\n onShouldStartLoadWithRequest={(request) => {\n const { url } = request;\n const iamportUrl = new IamportUrl(url);\n if (iamportUrl.isAppUrl()) {\n /* 3rd-party 앱 오픈 */\n iamportUrl.launchApp().catch((e) => {\n const { code, message } = e;\n callback({\n imp_success: false,\n error_code: code,\n error_msg: message,\n });\n });\n\n return false;\n }\n if (iamportUrl.isPaymentOver()) {\n callback(iamportUrl.getQuery());\n return false;\n }\n\n return true;\n }}\n />\n </View>\n </View>\n );\n }\n\n return <ErrorOnParams message={validation.getMessage()} />;\n}\n\nexport default Certification;\n"]}
1
+ {"version":3,"sources":["index.tsx"],"names":["Certification","userCode","tierCode","data","loading","callback","isWebViewLoaded","setIsWebViewLoaded","webview","validation","Validation","redirectUrl","IMPConst","M_REDIRECT_URL","m_redirect_url","undefined","trim","getIsValid","loadingContainer","webViewContainer","viewStyles","html","WEBVIEW_SOURCE_HTML","current","injectJavaScript","JSON","stringify","e","nativeEvent","decodeURIComponent","response","parse","request","url","iamportUrl","IamportUrl","isAppUrl","launchApp","catch","code","message","imp_success","error_code","error_msg","isPaymentOver","getQuery","getMessage"],"mappings":"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","sourcesContent":["import React, { createRef, useState } from 'react';\nimport { View } from 'react-native';\nimport { WebView } from 'react-native-webview';\n\nimport Loading from '../Loading';\nimport ErrorOnParams from '../ErrorOnParams';\n\nimport { IMPData, Validation } from '../../utils/Validation';\nimport { IMPConst } from '../../constants';\n\nimport viewStyles from '../../styles';\nimport IamportUrl from '../../utils/IamportUrl';\n\ntype Props = {\n userCode: string;\n tierCode?: string;\n data: IMPData.CertificationData;\n loading?: any;\n callback: (response: any) => any;\n};\n\nfunction Certification({ userCode, tierCode, data, loading, callback }: Props) {\n const [isWebViewLoaded, setIsWebViewLoaded] = useState(false);\n const webview = createRef<WebView>();\n const validation = new Validation(userCode, loading, callback, data);\n let redirectUrl = IMPConst.M_REDIRECT_URL;\n if (data.m_redirect_url !== undefined && data.m_redirect_url.trim() !== '') {\n redirectUrl = data.m_redirect_url;\n } else {\n data.m_redirect_url = redirectUrl;\n }\n\n if (validation.getIsValid()) {\n const { loadingContainer, webViewContainer } = viewStyles;\n return (\n <>\n <WebView\n containerStyle={webViewContainer}\n ref={webview}\n source={{ html: IMPConst.WEBVIEW_SOURCE_HTML }}\n onLoadEnd={() => {\n if (!isWebViewLoaded) {\n // html이 load되고 최초 한번만 inject javascript\n if (tierCode) {\n webview.current?.injectJavaScript(`\n setTimeout(function() { IMP.agency(\"${userCode}\", \"${tierCode}\"); });\n `);\n } else {\n webview.current?.injectJavaScript(`\n setTimeout(function() { IMP.init(\"${userCode}\"); });\n `);\n }\n webview.current?.injectJavaScript(`\n setTimeout(function() {\n IMP.certification(${JSON.stringify(data)}, function(response) {\n window.ReactNativeWebView.postMessage(JSON.stringify(response));\n });\n });\n `);\n setIsWebViewLoaded(true);\n }\n }}\n onMessage={(e) => {\n let data = e.nativeEvent.data;\n if (decodeURIComponent(data) !== data) {\n data = decodeURIComponent(data);\n }\n let response = JSON.parse(data);\n\n if (typeof callback === 'function') {\n callback(response);\n }\n }}\n startInLoadingState\n renderLoading={() => (\n <View style={loadingContainer}>{loading || <Loading />}</View>\n )}\n originWhitelist={['*']} // https://github.com/facebook/react-native/issues/19986\n onShouldStartLoadWithRequest={(request) => {\n const { url } = request;\n // console.log('url: ' + url);\n const iamportUrl = new IamportUrl(url);\n if (iamportUrl.isAppUrl()) {\n /* 3rd-party 앱 오픈 */\n iamportUrl.launchApp().catch((e) => {\n const { code, message } = e;\n callback({\n imp_success: false,\n error_code: code,\n error_msg: message,\n });\n });\n\n return false;\n }\n if (iamportUrl.isPaymentOver(redirectUrl)) {\n callback(iamportUrl.getQuery());\n return false;\n }\n\n return true;\n }}\n />\n </>\n );\n }\n\n return <ErrorOnParams message={validation.getMessage()} />;\n}\n\nexport default Certification;\n"]}
@@ -18,29 +18,21 @@ function ErrorOnParams({
18
18
  }) {
19
19
  return /*#__PURE__*/_react.default.createElement(_reactNative.View, {
20
20
  style: styles.container
21
- }, /*#__PURE__*/_react.default.createElement(_reactNative.View, {
22
- style: styles.contents
23
21
  }, /*#__PURE__*/_react.default.createElement(_reactNative.Image, {
24
- style: styles.contents,
25
22
  source: logo
26
23
  }), /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
27
24
  style: styles.text
28
- }, message)));
25
+ }, message));
29
26
  }
30
27
 
31
28
  const styles = _reactNative.StyleSheet.create({
32
29
  container: {
33
- flex: 1,
34
- alignItems: 'center',
35
- flexDirection: 'row',
36
- justifyContent: 'center'
37
- },
38
- contents: {
39
30
  flex: 1,
40
31
  alignItems: 'center',
41
32
  justifyContent: 'center'
42
33
  },
43
34
  text: {
35
+ textAlign: 'center',
44
36
  fontSize: 16,
45
37
  marginTop: 20,
46
38
  lineHeight: 25
@@ -1 +1 @@
1
- {"version":3,"sources":["index.tsx"],"names":["logo","require","ErrorOnParams","message","styles","container","contents","text","StyleSheet","create","flex","alignItems","flexDirection","justifyContent","fontSize","marginTop","lineHeight","button","backgroundColor","color","borderColor","borderWidth","borderRadius","paddingTop","paddingBottom","paddingLeft","paddingRight","fontWeight"],"mappings":";;;;;;;AAAA;;AACA;;;;AAQA,MAAMA,IAAI,GAAGC,OAAO,CAAC,4BAAD,CAApB;;AAIA,SAASC,aAAT,CAAuB;AAAEC,EAAAA;AAAF,CAAvB,EAAgD;AAC9C,sBACE,6BAAC,iBAAD;AAAM,IAAA,KAAK,EAAEC,MAAM,CAACC;AAApB,kBACE,6BAAC,iBAAD;AAAM,IAAA,KAAK,EAAED,MAAM,CAACE;AAApB,kBACE,6BAAC,kBAAD;AAAO,IAAA,KAAK,EAAEF,MAAM,CAACE,QAArB;AAA+B,IAAA,MAAM,EAAEN;AAAvC,IADF,eAEE,6BAAC,iBAAD;AAAM,IAAA,KAAK,EAAEI,MAAM,CAACG;AAApB,KAA2BJ,OAA3B,CAFF,CADF,CADF;AAcD;;AAED,MAAMC,MAAM,GAAGI,wBAAWC,MAAX,CAAkB;AAC/BJ,EAAAA,SAAS,EAAE;AACTK,IAAAA,IAAI,EAAE,CADG;AAETC,IAAAA,UAAU,EAAE,QAFH;AAGTC,IAAAA,aAAa,EAAE,KAHN;AAITC,IAAAA,cAAc,EAAE;AAJP,GADoB;AAO/BP,EAAAA,QAAQ,EAAE;AACRI,IAAAA,IAAI,EAAE,CADE;AAERC,IAAAA,UAAU,EAAE,QAFJ;AAGRE,IAAAA,cAAc,EAAE;AAHR,GAPqB;AAY/BN,EAAAA,IAAI,EAAE;AACJO,IAAAA,QAAQ,EAAE,EADN;AAEJC,IAAAA,SAAS,EAAE,EAFP;AAGJC,IAAAA,UAAU,EAAE;AAHR,GAZyB;AAiB/BC,EAAAA,MAAM,EAAE;AACNC,IAAAA,eAAe,EAAE,MADX;AAENC,IAAAA,KAAK,EAAE,SAFD;AAGNC,IAAAA,WAAW,EAAE,MAHP;AAINC,IAAAA,WAAW,EAAE,CAJP;AAKNC,IAAAA,YAAY,EAAE,CALR;AAMNC,IAAAA,UAAU,EAAE,EANN;AAONC,IAAAA,aAAa,EAAE,EAPT;AAQNC,IAAAA,WAAW,EAAE,EARP;AASNC,IAAAA,YAAY,EAAE,EATR;AAUNZ,IAAAA,QAAQ,EAAE,EAVJ;AAWNC,IAAAA,SAAS,EAAE,EAXL;AAYNY,IAAAA,UAAU,EAAE;AAZN;AAjBuB,CAAlB,CAAf;;eAiCezB,a","sourcesContent":["import React from 'react';\nimport {\n View,\n Image,\n Text,\n // TouchableOpacity,\n StyleSheet,\n} from 'react-native';\n\nconst logo = require('../../img/iamport-logo.png');\n\ntype ErrorProps = { message: string };\n\nfunction ErrorOnParams({ message }: ErrorProps) {\n return (\n <View style={styles.container}>\n <View style={styles.contents}>\n <Image style={styles.contents} source={logo} />\n <Text style={styles.text}>{message}</Text>\n {/*<TouchableOpacity\n style={button}\n onPress={}\n >\n <Text>돌아가기</Text>\n </TouchableOpacity>*/}\n </View>\n </View>\n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n alignItems: 'center',\n flexDirection: 'row',\n justifyContent: 'center',\n },\n contents: {\n flex: 1,\n alignItems: 'center',\n justifyContent: 'center',\n },\n text: {\n fontSize: 16,\n marginTop: 20,\n lineHeight: 25,\n },\n button: {\n backgroundColor: '#fff',\n color: '#ff0000',\n borderColor: '#333',\n borderWidth: 1,\n borderRadius: 3,\n paddingTop: 10,\n paddingBottom: 10,\n paddingLeft: 20,\n paddingRight: 20,\n fontSize: 14,\n marginTop: 20,\n fontWeight: 'bold',\n },\n});\n\nexport default ErrorOnParams;\n"]}
1
+ {"version":3,"sources":["index.tsx"],"names":["logo","require","ErrorOnParams","message","styles","container","text","StyleSheet","create","flex","alignItems","justifyContent","textAlign","fontSize","marginTop","lineHeight","button","backgroundColor","color","borderColor","borderWidth","borderRadius","paddingTop","paddingBottom","paddingLeft","paddingRight","fontWeight"],"mappings":";;;;;;;AAAA;;AACA;;;;AAEA,MAAMA,IAAI,GAAGC,OAAO,CAAC,4BAAD,CAApB;;AAIA,SAASC,aAAT,CAAuB;AAAEC,EAAAA;AAAF,CAAvB,EAAgD;AAC9C,sBACE,6BAAC,iBAAD;AAAM,IAAA,KAAK,EAAEC,MAAM,CAACC;AAApB,kBACE,6BAAC,kBAAD;AAAO,IAAA,MAAM,EAAEL;AAAf,IADF,eAEE,6BAAC,iBAAD;AAAM,IAAA,KAAK,EAAEI,MAAM,CAACE;AAApB,KAA2BH,OAA3B,CAFF,CADF;AAMD;;AAED,MAAMC,MAAM,GAAGG,wBAAWC,MAAX,CAAkB;AAC/BH,EAAAA,SAAS,EAAE;AACTI,IAAAA,IAAI,EAAE,CADG;AAETC,IAAAA,UAAU,EAAE,QAFH;AAGTC,IAAAA,cAAc,EAAE;AAHP,GADoB;AAM/BL,EAAAA,IAAI,EAAE;AACJM,IAAAA,SAAS,EAAE,QADP;AAEJC,IAAAA,QAAQ,EAAE,EAFN;AAGJC,IAAAA,SAAS,EAAE,EAHP;AAIJC,IAAAA,UAAU,EAAE;AAJR,GANyB;AAY/BC,EAAAA,MAAM,EAAE;AACNC,IAAAA,eAAe,EAAE,MADX;AAENC,IAAAA,KAAK,EAAE,SAFD;AAGNC,IAAAA,WAAW,EAAE,MAHP;AAINC,IAAAA,WAAW,EAAE,CAJP;AAKNC,IAAAA,YAAY,EAAE,CALR;AAMNC,IAAAA,UAAU,EAAE,EANN;AAONC,IAAAA,aAAa,EAAE,EAPT;AAQNC,IAAAA,WAAW,EAAE,EARP;AASNC,IAAAA,YAAY,EAAE,EATR;AAUNZ,IAAAA,QAAQ,EAAE,EAVJ;AAWNC,IAAAA,SAAS,EAAE,EAXL;AAYNY,IAAAA,UAAU,EAAE;AAZN;AAZuB,CAAlB,CAAf;;eA4BexB,a","sourcesContent":["import React from 'react';\nimport { View, Image, Text, StyleSheet } from 'react-native';\n\nconst logo = require('../../img/iamport-logo.png');\n\ntype ErrorProps = { message: string };\n\nfunction ErrorOnParams({ message }: ErrorProps) {\n return (\n <View style={styles.container}>\n <Image source={logo} />\n <Text style={styles.text}>{message}</Text>\n </View>\n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n alignItems: 'center',\n justifyContent: 'center',\n },\n text: {\n textAlign: 'center',\n fontSize: 16,\n marginTop: 20,\n lineHeight: 25,\n },\n button: {\n backgroundColor: '#fff',\n color: '#ff0000',\n borderColor: '#333',\n borderWidth: 1,\n borderRadius: 3,\n paddingTop: 10,\n paddingBottom: 10,\n paddingLeft: 20,\n paddingRight: 20,\n fontSize: 14,\n marginTop: 20,\n fontWeight: 'bold',\n },\n});\n\nexport default ErrorOnParams;\n"]}
@@ -16,26 +16,18 @@ const logo = require('../../img/iamport-logo.png');
16
16
  function Loading() {
17
17
  return /*#__PURE__*/_react.default.createElement(_reactNative.View, {
18
18
  style: styles.container
19
- }, /*#__PURE__*/_react.default.createElement(_reactNative.View, {
20
- style: styles.contents
21
19
  }, /*#__PURE__*/_react.default.createElement(_reactNative.Image, {
22
- style: styles.contents,
23
20
  source: logo
24
21
  }), /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
25
22
  style: styles.text
26
- }, "\uC7A0\uC2DC\uB9CC \uAE30\uB2E4\uB824\uC8FC\uC138\uC694...")));
23
+ }, "\uC7A0\uC2DC\uB9CC \uAE30\uB2E4\uB824\uC8FC\uC138\uC694..."));
27
24
  }
28
25
 
29
26
  const styles = _reactNative.StyleSheet.create({
30
- container: { ..._reactNative.StyleSheet.absoluteFillObject,
31
- flex: 1,
32
- alignItems: 'center',
33
- flexDirection: 'row',
34
- justifyContent: 'center'
35
- },
36
- contents: {
27
+ container: {
37
28
  flex: 1,
38
29
  alignItems: 'center',
30
+ flexDirection: 'column',
39
31
  justifyContent: 'center'
40
32
  },
41
33
  text: {
@@ -1 +1 @@
1
- {"version":3,"sources":["index.tsx"],"names":["logo","require","Loading","styles","container","contents","text","StyleSheet","create","absoluteFillObject","flex","alignItems","flexDirection","justifyContent","fontSize","marginTop","lineHeight"],"mappings":";;;;;;;AAAA;;AACA;;;;AAEA,MAAMA,IAAI,GAAGC,OAAO,CAAC,4BAAD,CAApB;;AAEA,SAASC,OAAT,GAAmB;AACjB,sBACE,6BAAC,iBAAD;AAAM,IAAA,KAAK,EAAEC,MAAM,CAACC;AAApB,kBACE,6BAAC,iBAAD;AAAM,IAAA,KAAK,EAAED,MAAM,CAACE;AAApB,kBACE,6BAAC,kBAAD;AAAO,IAAA,KAAK,EAAEF,MAAM,CAACE,QAArB;AAA+B,IAAA,MAAM,EAAEL;AAAvC,IADF,eAEE,6BAAC,iBAAD;AAAM,IAAA,KAAK,EAAEG,MAAM,CAACG;AAApB,kEAFF,CADF,CADF;AAQD;;AAED,MAAMH,MAAM,GAAGI,wBAAWC,MAAX,CAAkB;AAC/BJ,EAAAA,SAAS,EAAE,EACT,GAAGG,wBAAWE,kBADL;AAETC,IAAAA,IAAI,EAAE,CAFG;AAGTC,IAAAA,UAAU,EAAE,QAHH;AAITC,IAAAA,aAAa,EAAE,KAJN;AAKTC,IAAAA,cAAc,EAAE;AALP,GADoB;AAQ/BR,EAAAA,QAAQ,EAAE;AACRK,IAAAA,IAAI,EAAE,CADE;AAERC,IAAAA,UAAU,EAAE,QAFJ;AAGRE,IAAAA,cAAc,EAAE;AAHR,GARqB;AAa/BP,EAAAA,IAAI,EAAE;AACJQ,IAAAA,QAAQ,EAAE,EADN;AAEJC,IAAAA,SAAS,EAAE,EAFP;AAGJC,IAAAA,UAAU,EAAE;AAHR;AAbyB,CAAlB,CAAf;;eAoBed,O","sourcesContent":["import React from 'react';\nimport { View, Image, Text, StyleSheet } from 'react-native';\n\nconst logo = require('../../img/iamport-logo.png');\n\nfunction Loading() {\n return (\n <View style={styles.container}>\n <View style={styles.contents}>\n <Image style={styles.contents} source={logo} />\n <Text style={styles.text}>잠시만 기다려주세요...</Text>\n </View>\n </View>\n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n ...StyleSheet.absoluteFillObject,\n flex: 1,\n alignItems: 'center',\n flexDirection: 'row',\n justifyContent: 'center',\n },\n contents: {\n flex: 1,\n alignItems: 'center',\n justifyContent: 'center',\n },\n text: {\n fontSize: 20,\n marginTop: 20,\n lineHeight: 25,\n },\n});\n\nexport default Loading;\n"]}
1
+ {"version":3,"sources":["index.tsx"],"names":["logo","require","Loading","styles","container","text","StyleSheet","create","flex","alignItems","flexDirection","justifyContent","fontSize","marginTop","lineHeight"],"mappings":";;;;;;;AAAA;;AACA;;;;AAEA,MAAMA,IAAI,GAAGC,OAAO,CAAC,4BAAD,CAApB;;AAEA,SAASC,OAAT,GAAmB;AACjB,sBACE,6BAAC,iBAAD;AAAM,IAAA,KAAK,EAAEC,MAAM,CAACC;AAApB,kBACE,6BAAC,kBAAD;AAAO,IAAA,MAAM,EAAEJ;AAAf,IADF,eAEE,6BAAC,iBAAD;AAAM,IAAA,KAAK,EAAEG,MAAM,CAACE;AAApB,kEAFF,CADF;AAMD;;AAED,MAAMF,MAAM,GAAGG,wBAAWC,MAAX,CAAkB;AAC/BH,EAAAA,SAAS,EAAE;AACTI,IAAAA,IAAI,EAAE,CADG;AAETC,IAAAA,UAAU,EAAE,QAFH;AAGTC,IAAAA,aAAa,EAAE,QAHN;AAITC,IAAAA,cAAc,EAAE;AAJP,GADoB;AAO/BN,EAAAA,IAAI,EAAE;AACJO,IAAAA,QAAQ,EAAE,EADN;AAEJC,IAAAA,SAAS,EAAE,EAFP;AAGJC,IAAAA,UAAU,EAAE;AAHR;AAPyB,CAAlB,CAAf;;eAceZ,O","sourcesContent":["import React from 'react';\nimport { View, Image, Text, StyleSheet } from 'react-native';\n\nconst logo = require('../../img/iamport-logo.png');\n\nfunction Loading() {\n return (\n <View style={styles.container}>\n <Image source={logo} />\n <Text style={styles.text}>잠시만 기다려주세요...</Text>\n </View>\n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n alignItems: 'center',\n flexDirection: 'column',\n justifyContent: 'center',\n },\n text: {\n fontSize: 20,\n marginTop: 20,\n lineHeight: 25,\n },\n});\n\nexport default Loading;\n"]}
@@ -44,6 +44,14 @@ function Payment({
44
44
  const [isInicisTransPaid, setIsInicisTransPaid] = (0, _react.useState)(false);
45
45
  const webview = /*#__PURE__*/(0, _react.createRef)();
46
46
  const smilepayRef = (0, _react.useRef)(false);
47
+ let redirectUrl = _constants.IMPConst.M_REDIRECT_URL;
48
+
49
+ if (data.m_redirect_url !== undefined && data.m_redirect_url.trim() !== '') {
50
+ redirectUrl = data.m_redirect_url;
51
+ } else {
52
+ data.m_redirect_url = redirectUrl;
53
+ }
54
+
47
55
  (0, _react.useEffect)(() => {
48
56
  const {
49
57
  pg
@@ -88,7 +96,7 @@ function Payment({
88
96
  var _webview$current;
89
97
 
90
98
  (_webview$current = webview.current) === null || _webview$current === void 0 ? void 0 : _webview$current.injectJavaScript(`
91
- window.location.href = "${_constants.IMPConst.M_REDIRECT_URL}?${iamportUrl.getInicisTransQuery()}";
99
+ window.location.href = "${redirectUrl}?${iamportUrl.getInicisTransQuery(redirectUrl)}";
92
100
  `);
93
101
  } else {
94
102
  setIsInicisTransPaid(true);
@@ -118,7 +126,7 @@ function Payment({
118
126
  };
119
127
 
120
128
  _reactNative.Linking.addEventListener('url', handleOpenURL);
121
- }, [data, isInicisTransPaid, webview]);
129
+ }, [data, isInicisTransPaid, redirectUrl, webview]);
122
130
 
123
131
  const removeLoadingNeeded = () => {
124
132
  if (showLoading && _reactNative.Platform.OS === 'android') {
@@ -159,23 +167,17 @@ function Payment({
159
167
 
160
168
  if (validation.getIsValid()) {
161
169
  const {
162
- wrapper,
163
170
  loadingContainer,
164
171
  webViewContainer
165
172
  } = _styles.default;
166
- return /*#__PURE__*/_react.default.createElement(_reactNative.View, {
167
- style: wrapper
168
- }, /*#__PURE__*/_react.default.createElement(_reactNative.View, {
169
- style: webViewContainer
170
- }, /*#__PURE__*/_react.default.createElement(_reactNativeWebview.default, {
173
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_reactNativeWebview.default, {
174
+ containerStyle: webViewContainer,
171
175
  ref: webview,
172
176
  source: webviewSource,
173
177
  onLoadEnd: () => {
174
178
  if (!isWebViewLoaded) {
175
179
  var _webview$current5;
176
180
 
177
- data.m_redirect_url = _constants.IMPConst.M_REDIRECT_URL;
178
-
179
181
  if (data.pg.startsWith('eximbay')) {
180
182
  data.popup = false;
181
183
  }
@@ -212,25 +214,19 @@ function Payment({
212
214
  /* PG사가 callback을 지원하는 경우, 결제결과를 받아 callback을 실행한다 */
213
215
  ,
214
216
  onMessage: e => {
215
- const {
216
- data
217
- } = e.nativeEvent;
218
217
  /**
219
218
  * [v1.6.0] 다날의 경우 response에 주문명(name)이 포함되어 있는데
220
219
  * 주문명에 %가 들어갈 경우, decodeURIComponent시 URI malformed 에러가 발생하는 것 대비해
221
220
  * 우선 encodeURIComponent를 한 후, decodeURIComponent가 끝나면
222
221
  * 최종적으로 decodeURIComponent를 한 번 더 한다
223
222
  */
223
+ const encoded = encodeURIComponent(e.nativeEvent.data);
224
+ const decoded = decodeURIComponent(encoded);
225
+ const response = JSON.parse(decoded);
224
226
 
225
- let response = encodeURIComponent(data);
226
-
227
- while (decodeURIComponent(response) !== data) {
228
- response = decodeURIComponent(response);
227
+ if (typeof callback === 'function') {
228
+ callback(response);
229
229
  }
230
-
231
- response = decodeURIComponent(response);
232
- response = JSON.parse(response);
233
- callback(response);
234
230
  },
235
231
  originWhitelist: ['*'] // https://github.com/facebook/react-native/issues/19986
236
232
  ,
@@ -238,7 +234,8 @@ function Payment({
238
234
  onShouldStartLoadWithRequest: request => {
239
235
  const {
240
236
  url
241
- } = request;
237
+ } = request; // console.log(`url: ${url}`);
238
+
242
239
  const iamportUrl = new _IamportUrl.default(url);
243
240
 
244
241
  if (iamportUrl.isAppUrl()) {
@@ -257,8 +254,11 @@ function Payment({
257
254
  return false;
258
255
  }
259
256
 
260
- if (iamportUrl.isPaymentOver()) {
261
- callback(iamportUrl.getQuery());
257
+ if (iamportUrl.isPaymentOver(redirectUrl)) {
258
+ if (typeof callback === 'function') {
259
+ callback(iamportUrl.getQuery());
260
+ }
261
+
262
262
  return false;
263
263
  }
264
264
 
@@ -273,7 +273,7 @@ function Payment({
273
273
 
274
274
  return true;
275
275
  }
276
- })), showLoading && /*#__PURE__*/_react.default.createElement(_reactNative.View, {
276
+ }), showLoading && /*#__PURE__*/_react.default.createElement(_reactNative.View, {
277
277
  style: loadingContainer
278
278
  }, loading || /*#__PURE__*/_react.default.createElement(_Loading.default, null)));
279
279
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["index.tsx"],"names":["Payment","userCode","tierCode","data","loading","callback","webviewSource","setWebviewSource","html","IMPConst","WEBVIEW_SOURCE_HTML","isWebViewLoaded","setIsWebViewLoaded","showLoading","setShowLoading","isInicisTransPaid","setIsInicisTransPaid","webview","smilepayRef","pg","startsWith","Platform","OS","current","baseUrl","SMILEPAY_BASE_URL","handleOpenURL","event","pay_method","iamportUrl","IamportUrl","url","injectJavaScript","M_REDIRECT_URL","getInicisTransQuery","queryParameters","getQuery","scheme","niceTransRedirectionUrl","app_scheme","toLowerCase","callbackparam1","getStringifiedQuery","Linking","addEventListener","removeLoadingNeeded","isIframeWayPayment","customer_uid","validation","ValidationForPayment","getIsValid","wrapper","loadingContainer","webViewContainer","viewStyles","m_redirect_url","popup","JSON","stringify","e","nativeEvent","response","encodeURIComponent","decodeURIComponent","parse","request","isAppUrl","launchApp","catch","code","message","imp_success","error_code","error_msg","isPaymentOver","isIframeLoaded","getMessage"],"mappings":"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","sourcesContent":["import React, { createRef, useEffect, useRef, useState } from 'react';\nimport type { IMPData } from '../../utils/Validation';\nimport ValidationForPayment from '../../utils/ValidationForPayment';\nimport ErrorOnParams from '../ErrorOnParams';\nimport { Linking, Platform, View } from 'react-native';\nimport { IMPConst } from '../../constants';\nimport IamportUrl from '../../utils/IamportUrl';\nimport WebView from 'react-native-webview';\nimport viewStyles from '../../styles';\nimport Loading from '../Loading';\nimport type { WebViewSource } from 'react-native-webview/lib/WebViewTypes';\n\ntype Props = {\n userCode: string;\n tierCode?: string;\n data: IMPData.PaymentData;\n loading: any;\n callback: (response: any) => any;\n};\n\nfunction Payment({ userCode, tierCode, data, loading, callback }: Props) {\n const [webviewSource, setWebviewSource] = useState<WebViewSource>({\n html: IMPConst.WEBVIEW_SOURCE_HTML,\n });\n const [isWebViewLoaded, setIsWebViewLoaded] = useState(false);\n const [showLoading, setShowLoading] = useState(true);\n const [isInicisTransPaid, setIsInicisTransPaid] = useState(false);\n const webview = createRef<WebView>();\n const smilepayRef = useRef(false);\n\n useEffect(() => {\n const { pg } = data;\n if (\n pg.startsWith('smilepay') &&\n Platform.OS === 'ios' &&\n !smilepayRef.current\n ) {\n /**\n * [feature/smilepay] IOS - 스마일페이 대비 코드 작성\n * 스마일페이 결제창을 iframe 방식으로 띄우기 때문에 WKWebView에서 서드 파티 쿠키가 허용되지 않아\n * WKWebView의 baseUrl을 강제로 스마일페이 URL로 적용\n */\n setWebviewSource({\n ...webviewSource,\n baseUrl: IMPConst.SMILEPAY_BASE_URL,\n });\n smilepayRef.current = true;\n }\n }, [data, webviewSource]);\n\n useEffect(() => {\n const handleOpenURL = (event: { url: string }) => {\n const { pg, pay_method } = data;\n if (pay_method === 'trans') {\n const iamportUrl = new IamportUrl(event.url);\n /**\n * [IOS] 웹 표준 이니시스 - 실시간 계좌이체 대비\n * 아래 로직대로 동작해야 최종적으로 결제가 승인된 후 콜백 함수가 호출됨\n * 1. 사파리 앱에서 복귀(app_scheme://imp_uid=%26merchant_uid=%26m_redirect_url=)\n * 2. 최종 결제 승인을 위해 이니시스가 HTTP 리퀘스트 호출\n * 3. \"다음\" 버튼이 있는 최종 화면으로 이동\n * 4. \"다음\" 버튼을 클릭\n * 5. 1번과 마찬가지로 app_scheme://imp_uid=%26merchant_uid=%26m_redirect_url=로 HTTP 리퀘스트 호출\n * 6. 콜백 함수 호출\n * 따라서 현재 handleOpenURL이 트리거 되는 사유가 1번 때문인지 5번 때문인지 구분이 필요하여\n * 이를 위한 isInicisTransPaid 플래그 추가\n */\n if (pg.startsWith('html5_inicis') && Platform.OS === 'ios') {\n if (isInicisTransPaid) {\n webview.current?.injectJavaScript(`\n window.location.href = \"${\n IMPConst.M_REDIRECT_URL\n }?${iamportUrl.getInicisTransQuery()}\";\n `);\n } else {\n setIsInicisTransPaid(true);\n }\n }\n\n /* 나이스 - 실시간 계좌이체 대비 */\n if (pg.startsWith('nice')) {\n const queryParameters = iamportUrl.getQuery();\n const scheme = iamportUrl.scheme;\n let niceTransRedirectionUrl;\n if (scheme === data.app_scheme?.toLowerCase()) {\n if (queryParameters.callbackparam1 != null) {\n niceTransRedirectionUrl = queryParameters.callbackparam1;\n }\n }\n webview.current?.injectJavaScript(`\n window.location.href = \"${niceTransRedirectionUrl}?${iamportUrl.getStringifiedQuery()}\";\n `);\n }\n }\n };\n Linking.addEventListener('url', handleOpenURL);\n }, [data, isInicisTransPaid, webview]);\n\n const removeLoadingNeeded = () => {\n if (showLoading && Platform.OS === 'android') {\n // 로딩상태. 안드로이드 플랫폼\n if (isWebViewLoaded) {\n // 웹뷰 로드 끝. 리디렉션 방식\n return true;\n }\n return isIframeWayPayment();\n }\n // IOS\n return false;\n };\n\n const isIframeWayPayment = () => {\n const { pg, pay_method, customer_uid } = data;\n if (pg.startsWith('html5_inicis') && customer_uid) {\n // 이니시스 빌링결제\n return true;\n }\n if (pg.startsWith('mobilians') && pay_method === 'phone') {\n // 모빌리언스 휴대폰 소액결제\n return true;\n }\n return (\n pg.startsWith('danal') ||\n pg.startsWith('danal_tpay') ||\n pg.startsWith('smilepay') ||\n pg.startsWith('payco') ||\n pg.startsWith('bluewalnut')\n );\n };\n\n const validation = new ValidationForPayment(\n userCode,\n loading,\n callback,\n data\n );\n if (validation.getIsValid()) {\n const { wrapper, loadingContainer, webViewContainer } = viewStyles;\n return (\n <View style={wrapper}>\n <View style={webViewContainer}>\n <WebView\n ref={webview}\n source={webviewSource}\n onLoadEnd={() => {\n if (!isWebViewLoaded) {\n data.m_redirect_url = IMPConst.M_REDIRECT_URL;\n if (data.pg.startsWith('eximbay')) {\n data.popup = false;\n }\n\n if (tierCode) {\n webview.current?.injectJavaScript(`\n setTimeout(function() { IMP.agency(\"${userCode}\", \"${tierCode}\"); });\n `);\n } else {\n webview.current?.injectJavaScript(`\n setTimeout(function() { IMP.init(\"${userCode}\"); });\n `);\n }\n webview.current?.injectJavaScript(`\n setTimeout(function() {\n IMP.request_pay(${JSON.stringify(\n data\n )}, function(response) {\n window.ReactNativeWebView.postMessage(JSON.stringify(response));\n });\n });\n `);\n setIsWebViewLoaded(true);\n }\n\n // only for Android\n if (removeLoadingNeeded()) {\n setShowLoading(false);\n }\n }}\n /* PG사가 callback을 지원하는 경우, 결제결과를 받아 callback을 실행한다 */\n onMessage={(e) => {\n const { data } = e.nativeEvent;\n /**\n * [v1.6.0] 다날의 경우 response에 주문명(name)이 포함되어 있는데\n * 주문명에 %가 들어갈 경우, decodeURIComponent시 URI malformed 에러가 발생하는 것 대비해\n * 우선 encodeURIComponent를 한 후, decodeURIComponent가 끝나면\n * 최종적으로 decodeURIComponent를 한 번 더 한다\n */\n let response = encodeURIComponent(data);\n while (decodeURIComponent(response) !== data) {\n response = decodeURIComponent(response);\n }\n response = decodeURIComponent(response);\n response = JSON.parse(response);\n callback(response);\n }}\n originWhitelist={['*']} // https://github.com/facebook/react-native/issues/19986\n sharedCookiesEnabled={true}\n onShouldStartLoadWithRequest={(request) => {\n const { url } = request;\n const iamportUrl = new IamportUrl(url);\n if (iamportUrl.isAppUrl()) {\n /* 3rd-party 앱 오픈 */\n iamportUrl.launchApp().catch((e) => {\n const { code, message } = e;\n callback({\n imp_success: false,\n error_code: code,\n error_msg: message,\n });\n });\n\n return false;\n }\n if (iamportUrl.isPaymentOver()) {\n callback(iamportUrl.getQuery());\n return false;\n }\n if (\n isWebViewLoaded &&\n showLoading &&\n iamportUrl.isIframeLoaded()\n ) {\n /**\n * only for IOS\n * iframe이 load되면(url이 about:blank 또는 https://service.iamport.kr이 아니면)\n * webview의 loading 상태를 해제한다\n */\n setShowLoading(false);\n }\n return true;\n }}\n />\n </View>\n {showLoading && (\n <View style={loadingContainer}>{loading || <Loading />}</View>\n )}\n </View>\n );\n }\n\n return <ErrorOnParams message={validation.getMessage()} />;\n}\n\nexport default Payment;\n"]}
1
+ {"version":3,"sources":["index.tsx"],"names":["Payment","userCode","tierCode","data","loading","callback","webviewSource","setWebviewSource","html","IMPConst","WEBVIEW_SOURCE_HTML","isWebViewLoaded","setIsWebViewLoaded","showLoading","setShowLoading","isInicisTransPaid","setIsInicisTransPaid","webview","smilepayRef","redirectUrl","M_REDIRECT_URL","m_redirect_url","undefined","trim","pg","startsWith","Platform","OS","current","baseUrl","SMILEPAY_BASE_URL","handleOpenURL","event","pay_method","iamportUrl","IamportUrl","url","injectJavaScript","getInicisTransQuery","queryParameters","getQuery","scheme","niceTransRedirectionUrl","app_scheme","toLowerCase","callbackparam1","getStringifiedQuery","Linking","addEventListener","removeLoadingNeeded","isIframeWayPayment","customer_uid","validation","ValidationForPayment","getIsValid","loadingContainer","webViewContainer","viewStyles","popup","JSON","stringify","e","encoded","encodeURIComponent","nativeEvent","decoded","decodeURIComponent","response","parse","request","isAppUrl","launchApp","catch","code","message","imp_success","error_code","error_msg","isPaymentOver","isIframeLoaded","getMessage"],"mappings":"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","sourcesContent":["import React, { createRef, useEffect, useRef, useState } from 'react';\nimport type { IMPData } from '../../utils/Validation';\nimport ValidationForPayment from '../../utils/ValidationForPayment';\nimport ErrorOnParams from '../ErrorOnParams';\nimport { Linking, Platform, View } from 'react-native';\nimport { IMPConst } from '../../constants';\nimport IamportUrl from '../../utils/IamportUrl';\nimport WebView from 'react-native-webview';\nimport viewStyles from '../../styles';\nimport Loading from '../Loading';\nimport type { WebViewSource } from 'react-native-webview/lib/WebViewTypes';\n\ntype Props = {\n userCode: string;\n tierCode?: string;\n data: IMPData.PaymentData;\n loading?: any;\n callback: (response: any) => any;\n};\n\nfunction Payment({ userCode, tierCode, data, loading, callback }: Props) {\n const [webviewSource, setWebviewSource] = useState<WebViewSource>({\n html: IMPConst.WEBVIEW_SOURCE_HTML,\n });\n const [isWebViewLoaded, setIsWebViewLoaded] = useState(false);\n const [showLoading, setShowLoading] = useState(true);\n const [isInicisTransPaid, setIsInicisTransPaid] = useState(false);\n const webview = createRef<WebView>();\n const smilepayRef = useRef(false);\n let redirectUrl = IMPConst.M_REDIRECT_URL;\n if (data.m_redirect_url !== undefined && data.m_redirect_url.trim() !== '') {\n redirectUrl = data.m_redirect_url;\n } else {\n data.m_redirect_url = redirectUrl;\n }\n\n useEffect(() => {\n const { pg } = data;\n if (\n pg.startsWith('smilepay') &&\n Platform.OS === 'ios' &&\n !smilepayRef.current\n ) {\n /**\n * [feature/smilepay] IOS - 스마일페이 대비 코드 작성\n * 스마일페이 결제창을 iframe 방식으로 띄우기 때문에 WKWebView에서 서드 파티 쿠키가 허용되지 않아\n * WKWebView의 baseUrl을 강제로 스마일페이 URL로 적용\n */\n setWebviewSource({\n ...webviewSource,\n baseUrl: IMPConst.SMILEPAY_BASE_URL,\n });\n smilepayRef.current = true;\n }\n }, [data, webviewSource]);\n\n useEffect(() => {\n const handleOpenURL = (event: { url: string }) => {\n const { pg, pay_method } = data;\n if (pay_method === 'trans') {\n const iamportUrl = new IamportUrl(event.url);\n /**\n * [IOS] 웹 표준 이니시스 - 실시간 계좌이체 대비\n * 아래 로직대로 동작해야 최종적으로 결제가 승인된 후 콜백 함수가 호출됨\n * 1. 사파리 앱에서 복귀(app_scheme://imp_uid=%26merchant_uid=%26m_redirect_url=)\n * 2. 최종 결제 승인을 위해 이니시스가 HTTP 리퀘스트 호출\n * 3. \"다음\" 버튼이 있는 최종 화면으로 이동\n * 4. \"다음\" 버튼을 클릭\n * 5. 1번과 마찬가지로 app_scheme://imp_uid=%26merchant_uid=%26m_redirect_url=로 HTTP 리퀘스트 호출\n * 6. 콜백 함수 호출\n * 따라서 현재 handleOpenURL이 트리거 되는 사유가 1번 때문인지 5번 때문인지 구분이 필요하여\n * 이를 위한 isInicisTransPaid 플래그 추가\n */\n if (pg.startsWith('html5_inicis') && Platform.OS === 'ios') {\n if (isInicisTransPaid) {\n webview.current?.injectJavaScript(`\n window.location.href = \"${redirectUrl}?${iamportUrl.getInicisTransQuery(\n redirectUrl\n )}\";\n `);\n } else {\n setIsInicisTransPaid(true);\n }\n }\n\n /* 나이스 - 실시간 계좌이체 대비 */\n if (pg.startsWith('nice')) {\n const queryParameters = iamportUrl.getQuery();\n const scheme = iamportUrl.scheme;\n let niceTransRedirectionUrl;\n if (scheme === data.app_scheme?.toLowerCase()) {\n if (queryParameters.callbackparam1 != null) {\n niceTransRedirectionUrl = queryParameters.callbackparam1;\n }\n }\n webview.current?.injectJavaScript(`\n window.location.href = \"${niceTransRedirectionUrl}?${iamportUrl.getStringifiedQuery()}\";\n `);\n }\n }\n };\n Linking.addEventListener('url', handleOpenURL);\n }, [data, isInicisTransPaid, redirectUrl, webview]);\n\n const removeLoadingNeeded = () => {\n if (showLoading && Platform.OS === 'android') {\n // 로딩상태. 안드로이드 플랫폼\n if (isWebViewLoaded) {\n // 웹뷰 로드 끝. 리디렉션 방식\n return true;\n }\n return isIframeWayPayment();\n }\n // IOS\n return false;\n };\n\n const isIframeWayPayment = () => {\n const { pg, pay_method, customer_uid } = data;\n if (pg.startsWith('html5_inicis') && customer_uid) {\n // 이니시스 빌링결제\n return true;\n }\n if (pg.startsWith('mobilians') && pay_method === 'phone') {\n // 모빌리언스 휴대폰 소액결제\n return true;\n }\n return (\n pg.startsWith('danal') ||\n pg.startsWith('danal_tpay') ||\n pg.startsWith('smilepay') ||\n pg.startsWith('payco') ||\n pg.startsWith('bluewalnut')\n );\n };\n\n const validation = new ValidationForPayment(\n userCode,\n loading,\n callback,\n data\n );\n if (validation.getIsValid()) {\n const { loadingContainer, webViewContainer } = viewStyles;\n return (\n <>\n <WebView\n containerStyle={webViewContainer}\n ref={webview}\n source={webviewSource}\n onLoadEnd={() => {\n if (!isWebViewLoaded) {\n if (data.pg.startsWith('eximbay')) {\n data.popup = false;\n }\n\n if (tierCode) {\n webview.current?.injectJavaScript(`\n setTimeout(function() { IMP.agency(\"${userCode}\", \"${tierCode}\"); });\n `);\n } else {\n webview.current?.injectJavaScript(`\n setTimeout(function() { IMP.init(\"${userCode}\"); });\n `);\n }\n webview.current?.injectJavaScript(`\n setTimeout(function() {\n IMP.request_pay(${JSON.stringify(\n data\n )}, function(response) {\n window.ReactNativeWebView.postMessage(JSON.stringify(response));\n });\n });\n `);\n setIsWebViewLoaded(true);\n }\n\n // only for Android\n if (removeLoadingNeeded()) {\n setShowLoading(false);\n }\n }}\n /* PG사가 callback을 지원하는 경우, 결제결과를 받아 callback을 실행한다 */\n onMessage={(e) => {\n /**\n * [v1.6.0] 다날의 경우 response에 주문명(name)이 포함되어 있는데\n * 주문명에 %가 들어갈 경우, decodeURIComponent시 URI malformed 에러가 발생하는 것 대비해\n * 우선 encodeURIComponent를 한 후, decodeURIComponent가 끝나면\n * 최종적으로 decodeURIComponent를 한 번 더 한다\n */\n const encoded = encodeURIComponent(e.nativeEvent.data);\n const decoded = decodeURIComponent(encoded);\n const response = JSON.parse(decoded);\n if (typeof callback === 'function') {\n callback(response);\n }\n }}\n originWhitelist={['*']} // https://github.com/facebook/react-native/issues/19986\n sharedCookiesEnabled={true}\n onShouldStartLoadWithRequest={(request) => {\n const { url } = request;\n // console.log(`url: ${url}`);\n const iamportUrl = new IamportUrl(url);\n if (iamportUrl.isAppUrl()) {\n /* 3rd-party 앱 오픈 */\n iamportUrl.launchApp().catch((e) => {\n const { code, message } = e;\n callback({\n imp_success: false,\n error_code: code,\n error_msg: message,\n });\n });\n\n return false;\n }\n if (iamportUrl.isPaymentOver(redirectUrl)) {\n if (typeof callback === 'function') {\n callback(iamportUrl.getQuery());\n }\n return false;\n }\n if (isWebViewLoaded && showLoading && iamportUrl.isIframeLoaded()) {\n /**\n * only for IOS\n * iframe이 load되면(url이 about:blank 또는 https://service.iamport.kr이 아니면)\n * webview의 loading 상태를 해제한다\n */\n setShowLoading(false);\n }\n return true;\n }}\n />\n {showLoading && (\n <View style={loadingContainer}>{loading || <Loading />}</View>\n )}\n </>\n );\n }\n\n return <ErrorOnParams message={validation.getMessage()} />;\n}\n\nexport default Payment;\n"]}
@@ -8,7 +8,7 @@ let IMPConst;
8
8
  exports.IMPConst = IMPConst;
9
9
 
10
10
  (function (_IMPConst) {
11
- const PG = _IMPConst.PG = ['html5_inicis', 'inicis', 'uplus', 'kcp', 'kcp_billing', 'nice', 'jtnet', 'kakao', 'kakaopay', 'danal', 'danal_tpay', 'kicc', 'settle', 'mobilians', 'payco', 'eximbay', 'paypal', 'naverco', 'naverpay', 'smilepay', 'chai', 'payple', 'alipay', 'bluewalnut', 'tosspay'];
11
+ const PG = _IMPConst.PG = ['html5_inicis', 'inicis', 'uplus', 'kcp', 'kcp_billing', 'nice', 'jtnet', 'kakao', 'kakaopay', 'danal', 'danal_tpay', 'kicc', 'settle', 'mobilians', 'payco', 'eximbay', 'paypal', 'naverco', 'naverpay', 'smilepay', 'chai', 'payple', 'alipay', 'bluewalnut', 'tosspay', 'smartro'];
12
12
  const PAY_METHOD = _IMPConst.PAY_METHOD = ['card', 'trans', 'vbank', 'phone', 'samsung', 'kpay', 'cultureland', 'smartculture', 'happymoney', 'booknlife', 'kakaopay', 'lpay', 'payco', 'ssgpay', 'tosspay', // 엑심베이 전용
13
13
  'unionpay', // 유니온페이
14
14
  'alipay', // 알리페이
@@ -34,7 +34,7 @@ exports.IMPConst = IMPConst;
34
34
  <meta name='viewport' content='width=device-width, initial-scale=1.0'>
35
35
 
36
36
  <script type='text/javascript' src='https://code.jquery.com/jquery-latest.min.js' ></script>
37
- <script type='text/javascript' src='https://cdn.iamport.kr/js/iamport.payment-1.1.8.js'></script>
37
+ <script type='text/javascript' src='https://cdn.iamport.kr/js/iamport.payment-1.2.0.js'></script>
38
38
  </head>
39
39
  <body></body>
40
40
  </html>
@@ -62,12 +62,14 @@ exports.IMPConst = IMPConst;
62
62
  LPAY: 'lpayapp',
63
63
  SSGPAY: 'shinsegaeeasypayment',
64
64
  KPAY: 'kpay',
65
+ KBANKPAY: 'ukbanksmartbanknonloginpay',
65
66
  PAYNOW: 'lguthepay-xpay',
66
67
  WOORIWONCARD: 'com.wooricard.smartapp',
67
68
  LPOINT: 'lmslpay',
68
69
  KTFAUTH: 'ktauthexternalcall',
69
70
  LGTAUTH: 'upluscorporation',
70
- SKTAUTH: 'tauthlink'
71
+ SKTAUTH: 'tauthlink',
72
+ WOORIWONBANK: 'wooribank'
71
73
  };
72
74
  const ANDROID_PACKAGE = _IMPConst.ANDROID_PACKAGE = {
73
75
  PACKAGE_ISP: 'kvp.jjy.MispAndroid320',
@@ -92,12 +94,14 @@ exports.IMPConst = IMPConst;
92
94
  PACKAGE_LPAY: 'com.lotte.lpay',
93
95
  PACKAGE_SSGPAY: 'com.ssg.serviceapp.android.egiftcertificate',
94
96
  PACKAGE_KPAY: 'com.inicis.kpay',
97
+ PACKAGE_KBANKPAY: 'com.kbankwith.smartbank',
95
98
  PACKAGE_PAYNOW: 'com.lguplus.paynow',
96
99
  PACKAGE_WOORIWONCARD: 'com.wooricard.smartapp',
97
100
  PACKAGE_LPOINT: 'com.lottemembers.android',
98
101
  PACKAGE_KTFAUTH: 'com.kt.ktauth',
99
102
  PACKAGE_LGTAUTH: 'com.lguplus.smartotp',
100
- PACKAGE_SKTAUTH: 'com.sktelecom.tauth'
103
+ PACKAGE_SKTAUTH: 'com.sktelecom.tauth',
104
+ PACKAGE_WOORIWONBANK: 'com.wooribank.smart.npib'
101
105
  };
102
106
  })(IMPConst || (exports.IMPConst = IMPConst = {}));
103
107
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["index.ts"],"names":["PG","PAY_METHOD","CURRENCY","LANGUAGE","EN_AVAILABLE_PG","CARRIERS","ANDROID_MARKET_PREFIX","IOS_MARKET_PREFIX","M_REDIRECT_URL","NICE_TRANS_URL","IMP_SDK_URL","SMILEPAY_BASE_URL","WEBVIEW_SOURCE_HTML","ANDROID_APPSCHEME","ISP","BANKPAY","KB_BANKPAY","NH_BANKPAY","MG_BANKPAY","KN_BANKPAY","KAKAOPAY","SMILEPAY","CHAIPAY","PAYCO","HYUNDAICARD","TOSS","SHINHANCARD","HANACARD","SAMSUNGCARD","KBCARD","NHCARD","CITICARD","LOTTECARD","LPAY","SSGPAY","KPAY","PAYNOW","WOORIWONCARD","LPOINT","KTFAUTH","LGTAUTH","SKTAUTH","ANDROID_PACKAGE","PACKAGE_ISP","PACKAGE_BANKPAY","PACKAGE_KB_BANKPAY","PACKAGE_NH_BANKPAY","PACKAGE_MG_BANKPAY","PACKAGE_KN_BANKPAY","PACKAGE_KAKAOPAY","PACKAGE_SMILEPAY","PACKAGE_CHAIPAY","PACKAGE_PAYCO","PACKAGE_HYUNDAICARD","PACKAGE_TOSS","PACKAGE_SHINHANCARD","PACKAGE_HANACARD","PACKAGE_SAMSUNGCARD","PACKAGE_KBCARD","PACKAGE_NHCARD","PACKAGE_CITICARD","PACKAGE_LOTTECARD","PACKAGE_LPAY","PACKAGE_SSGPAY","PACKAGE_KPAY","PACKAGE_PAYNOW","PACKAGE_WOORIWONCARD","PACKAGE_LPOINT","PACKAGE_KTFAUTH","PACKAGE_LGTAUTH","PACKAGE_SKTAUTH","IMPConst"],"mappings":"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","sourcesContent":["namespace IMPConst {\n export const PG = [\n 'html5_inicis',\n 'inicis',\n 'uplus',\n 'kcp',\n 'kcp_billing',\n 'nice',\n 'jtnet',\n 'kakao',\n 'kakaopay',\n 'danal',\n 'danal_tpay',\n 'kicc',\n 'settle',\n 'mobilians',\n 'payco',\n 'eximbay',\n 'paypal',\n 'naverco',\n 'naverpay',\n 'smilepay',\n 'chai',\n 'payple',\n 'alipay',\n 'bluewalnut',\n 'tosspay',\n ] as const;\n\n export const PAY_METHOD = [\n 'card',\n 'trans',\n 'vbank',\n 'phone',\n 'samsung',\n 'kpay',\n 'cultureland',\n 'smartculture',\n 'happymoney',\n 'booknlife',\n 'kakaopay',\n 'lpay',\n 'payco',\n 'ssgpay',\n 'tosspay',\n // 엑심베이 전용\n 'unionpay', // 유니온페이\n 'alipay', // 알리페이\n 'tenpay', // 텐페이\n 'wechat', // 위챗페이\n 'molpay', // 몰페이\n 'paysbuy', // 태국 paysbuy\n ] as const;\n export const CURRENCY = ['KRW', 'USD', 'EUR', 'JPY'] as const;\n export const LANGUAGE = ['ko', 'en'] as const;\n export const EN_AVAILABLE_PG = [\n 'inicis',\n 'html5_inicis',\n 'uplus',\n 'nice',\n 'eximbay',\n ] as const;\n export const CARRIERS = ['SKT', 'KTF', 'LGT', 'MVNO'] as const;\n\n export const ANDROID_MARKET_PREFIX = 'market://details?id=';\n export const IOS_MARKET_PREFIX = 'https://apps.apple.com/app/';\n export const M_REDIRECT_URL = 'http://detectchangingwebview/iamport/rn';\n export const NICE_TRANS_URL =\n 'https://web.nicepay.co.kr/smart/bank/payTrans.jsp';\n export const IMP_SDK_URL = 'https://service.iamport.kr';\n export const SMILEPAY_BASE_URL = 'https://www.mysmilepay.com';\n\n export const WEBVIEW_SOURCE_HTML = `\n<html>\n <head>\n <meta http-equiv='content-type' content='text/html; charset=utf-8'>\n <meta name='viewport' content='width=device-width, initial-scale=1.0'>\n\n <script type='text/javascript' src='https://code.jquery.com/jquery-latest.min.js' ></script>\n <script type='text/javascript' src='https://cdn.iamport.kr/js/iamport.payment-1.1.8.js'></script>\n </head>\n <body></body>\n</html>\n`;\n\n export const ANDROID_APPSCHEME = {\n ISP: 'ispmobile',\n BANKPAY: 'kftc-bankpay',\n KB_BANKPAY: 'kb-bankpay',\n NH_BANKPAY: 'nhb-bankpay',\n MG_BANKPAY: 'mg-bankpay',\n KN_BANKPAY: 'kn-bankpay',\n KAKAOPAY: 'kakaotalk',\n SMILEPAY: 'smilepayapp',\n CHAIPAY: 'chaipayment',\n PAYCO: 'payco',\n HYUNDAICARD: 'hdcardappcardansimclick',\n TOSS: 'supertoss',\n SHINHANCARD: 'shinhan-sr-ansimclick',\n HANACARD: 'cloudpay',\n SAMSUNGCARD: 'mpocket.online.ansimclick',\n KBCARD: 'kb-acp',\n NHCARD: 'nhallonepayansimclick',\n CITICARD: 'citimobileapp',\n LOTTECARD: 'lotteappcard',\n LPAY: 'lpayapp',\n SSGPAY: 'shinsegaeeasypayment',\n KPAY: 'kpay',\n PAYNOW: 'lguthepay-xpay',\n WOORIWONCARD: 'com.wooricard.smartapp',\n LPOINT: 'lmslpay',\n KTFAUTH: 'ktauthexternalcall',\n LGTAUTH: 'upluscorporation',\n SKTAUTH: 'tauthlink',\n } as const;\n\n export const ANDROID_PACKAGE = {\n PACKAGE_ISP: 'kvp.jjy.MispAndroid320',\n PACKAGE_BANKPAY: 'com.kftc.bankpay.android',\n PACKAGE_KB_BANKPAY: 'com.kbstar.liivbank',\n PACKAGE_NH_BANKPAY: 'com.nh.cashcardapp',\n PACKAGE_MG_BANKPAY: 'kr.co.kfcc.mobilebank',\n PACKAGE_KN_BANKPAY: 'com.knb.psb',\n PACKAGE_KAKAOPAY: 'com.kakao.talk',\n PACKAGE_SMILEPAY: 'com.mysmilepay.app',\n PACKAGE_CHAIPAY: 'finance.chai.app',\n PACKAGE_PAYCO: 'com.nhnent.payapp',\n PACKAGE_HYUNDAICARD: 'com.hyundaicard.appcard',\n PACKAGE_TOSS: 'viva.republica.toss',\n PACKAGE_SHINHANCARD: 'com.shcard.smartpay',\n PACKAGE_HANACARD: 'com.hanaskard.paycla',\n PACKAGE_SAMSUNGCARD: 'kr.co.samsungcard.mpocket',\n PACKAGE_KBCARD: 'com.kbcard.cxh.appcard',\n PACKAGE_NHCARD: 'nh.smart.nhallonepay',\n PACKAGE_CITICARD: 'kr.co.citibank.citimobile',\n PACKAGE_LOTTECARD: 'com.lcacApp',\n PACKAGE_LPAY: 'com.lotte.lpay',\n PACKAGE_SSGPAY: 'com.ssg.serviceapp.android.egiftcertificate',\n PACKAGE_KPAY: 'com.inicis.kpay',\n PACKAGE_PAYNOW: 'com.lguplus.paynow',\n PACKAGE_WOORIWONCARD: 'com.wooricard.smartapp',\n PACKAGE_LPOINT: 'com.lottemembers.android',\n PACKAGE_KTFAUTH: 'com.kt.ktauth',\n PACKAGE_LGTAUTH: 'com.lguplus.smartotp',\n PACKAGE_SKTAUTH: 'com.sktelecom.tauth',\n } as const;\n}\n\nexport { IMPConst };\n"]}
1
+ {"version":3,"sources":["index.ts"],"names":["PG","PAY_METHOD","CURRENCY","LANGUAGE","EN_AVAILABLE_PG","CARRIERS","ANDROID_MARKET_PREFIX","IOS_MARKET_PREFIX","M_REDIRECT_URL","NICE_TRANS_URL","IMP_SDK_URL","SMILEPAY_BASE_URL","WEBVIEW_SOURCE_HTML","ANDROID_APPSCHEME","ISP","BANKPAY","KB_BANKPAY","NH_BANKPAY","MG_BANKPAY","KN_BANKPAY","KAKAOPAY","SMILEPAY","CHAIPAY","PAYCO","HYUNDAICARD","TOSS","SHINHANCARD","HANACARD","SAMSUNGCARD","KBCARD","NHCARD","CITICARD","LOTTECARD","LPAY","SSGPAY","KPAY","KBANKPAY","PAYNOW","WOORIWONCARD","LPOINT","KTFAUTH","LGTAUTH","SKTAUTH","WOORIWONBANK","ANDROID_PACKAGE","PACKAGE_ISP","PACKAGE_BANKPAY","PACKAGE_KB_BANKPAY","PACKAGE_NH_BANKPAY","PACKAGE_MG_BANKPAY","PACKAGE_KN_BANKPAY","PACKAGE_KAKAOPAY","PACKAGE_SMILEPAY","PACKAGE_CHAIPAY","PACKAGE_PAYCO","PACKAGE_HYUNDAICARD","PACKAGE_TOSS","PACKAGE_SHINHANCARD","PACKAGE_HANACARD","PACKAGE_SAMSUNGCARD","PACKAGE_KBCARD","PACKAGE_NHCARD","PACKAGE_CITICARD","PACKAGE_LOTTECARD","PACKAGE_LPAY","PACKAGE_SSGPAY","PACKAGE_KPAY","PACKAGE_KBANKPAY","PACKAGE_PAYNOW","PACKAGE_WOORIWONCARD","PACKAGE_LPOINT","PACKAGE_KTFAUTH","PACKAGE_LGTAUTH","PACKAGE_SKTAUTH","PACKAGE_WOORIWONBANK","IMPConst"],"mappings":"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","sourcesContent":["namespace IMPConst {\n export const PG = [\n 'html5_inicis',\n 'inicis',\n 'uplus',\n 'kcp',\n 'kcp_billing',\n 'nice',\n 'jtnet',\n 'kakao',\n 'kakaopay',\n 'danal',\n 'danal_tpay',\n 'kicc',\n 'settle',\n 'mobilians',\n 'payco',\n 'eximbay',\n 'paypal',\n 'naverco',\n 'naverpay',\n 'smilepay',\n 'chai',\n 'payple',\n 'alipay',\n 'bluewalnut',\n 'tosspay',\n 'smartro',\n ] as const;\n\n export const PAY_METHOD = [\n 'card',\n 'trans',\n 'vbank',\n 'phone',\n 'samsung',\n 'kpay',\n 'cultureland',\n 'smartculture',\n 'happymoney',\n 'booknlife',\n 'kakaopay',\n 'lpay',\n 'payco',\n 'ssgpay',\n 'tosspay',\n // 엑심베이 전용\n 'unionpay', // 유니온페이\n 'alipay', // 알리페이\n 'tenpay', // 텐페이\n 'wechat', // 위챗페이\n 'molpay', // 몰페이\n 'paysbuy', // 태국 paysbuy\n ] as const;\n export const CURRENCY = ['KRW', 'USD', 'EUR', 'JPY'] as const;\n export const LANGUAGE = ['ko', 'en'] as const;\n export const EN_AVAILABLE_PG = [\n 'inicis',\n 'html5_inicis',\n 'uplus',\n 'nice',\n 'eximbay',\n ] as const;\n export const CARRIERS = ['SKT', 'KTF', 'LGT', 'MVNO'] as const;\n\n export const ANDROID_MARKET_PREFIX = 'market://details?id=';\n export const IOS_MARKET_PREFIX = 'https://apps.apple.com/app/';\n export const M_REDIRECT_URL = 'http://detectchangingwebview/iamport/rn';\n export const NICE_TRANS_URL =\n 'https://web.nicepay.co.kr/smart/bank/payTrans.jsp';\n export const IMP_SDK_URL = 'https://service.iamport.kr';\n export const SMILEPAY_BASE_URL = 'https://www.mysmilepay.com';\n\n export const WEBVIEW_SOURCE_HTML = `\n<html>\n <head>\n <meta http-equiv='content-type' content='text/html; charset=utf-8'>\n <meta name='viewport' content='width=device-width, initial-scale=1.0'>\n\n <script type='text/javascript' src='https://code.jquery.com/jquery-latest.min.js' ></script>\n <script type='text/javascript' src='https://cdn.iamport.kr/js/iamport.payment-1.2.0.js'></script>\n </head>\n <body></body>\n</html>\n`;\n\n export const ANDROID_APPSCHEME = {\n ISP: 'ispmobile',\n BANKPAY: 'kftc-bankpay',\n KB_BANKPAY: 'kb-bankpay',\n NH_BANKPAY: 'nhb-bankpay',\n MG_BANKPAY: 'mg-bankpay',\n KN_BANKPAY: 'kn-bankpay',\n KAKAOPAY: 'kakaotalk',\n SMILEPAY: 'smilepayapp',\n CHAIPAY: 'chaipayment',\n PAYCO: 'payco',\n HYUNDAICARD: 'hdcardappcardansimclick',\n TOSS: 'supertoss',\n SHINHANCARD: 'shinhan-sr-ansimclick',\n HANACARD: 'cloudpay',\n SAMSUNGCARD: 'mpocket.online.ansimclick',\n KBCARD: 'kb-acp',\n NHCARD: 'nhallonepayansimclick',\n CITICARD: 'citimobileapp',\n LOTTECARD: 'lotteappcard',\n LPAY: 'lpayapp',\n SSGPAY: 'shinsegaeeasypayment',\n KPAY: 'kpay',\n KBANKPAY: 'ukbanksmartbanknonloginpay',\n PAYNOW: 'lguthepay-xpay',\n WOORIWONCARD: 'com.wooricard.smartapp',\n LPOINT: 'lmslpay',\n KTFAUTH: 'ktauthexternalcall',\n LGTAUTH: 'upluscorporation',\n SKTAUTH: 'tauthlink',\n WOORIWONBANK: 'wooribank',\n } as const;\n\n export const ANDROID_PACKAGE = {\n PACKAGE_ISP: 'kvp.jjy.MispAndroid320',\n PACKAGE_BANKPAY: 'com.kftc.bankpay.android',\n PACKAGE_KB_BANKPAY: 'com.kbstar.liivbank',\n PACKAGE_NH_BANKPAY: 'com.nh.cashcardapp',\n PACKAGE_MG_BANKPAY: 'kr.co.kfcc.mobilebank',\n PACKAGE_KN_BANKPAY: 'com.knb.psb',\n PACKAGE_KAKAOPAY: 'com.kakao.talk',\n PACKAGE_SMILEPAY: 'com.mysmilepay.app',\n PACKAGE_CHAIPAY: 'finance.chai.app',\n PACKAGE_PAYCO: 'com.nhnent.payapp',\n PACKAGE_HYUNDAICARD: 'com.hyundaicard.appcard',\n PACKAGE_TOSS: 'viva.republica.toss',\n PACKAGE_SHINHANCARD: 'com.shcard.smartpay',\n PACKAGE_HANACARD: 'com.hanaskard.paycla',\n PACKAGE_SAMSUNGCARD: 'kr.co.samsungcard.mpocket',\n PACKAGE_KBCARD: 'com.kbcard.cxh.appcard',\n PACKAGE_NHCARD: 'nh.smart.nhallonepay',\n PACKAGE_CITICARD: 'kr.co.citibank.citimobile',\n PACKAGE_LOTTECARD: 'com.lcacApp',\n PACKAGE_LPAY: 'com.lotte.lpay',\n PACKAGE_SSGPAY: 'com.ssg.serviceapp.android.egiftcertificate',\n PACKAGE_KPAY: 'com.inicis.kpay',\n PACKAGE_KBANKPAY: 'com.kbankwith.smartbank',\n PACKAGE_PAYNOW: 'com.lguplus.paynow',\n PACKAGE_WOORIWONCARD: 'com.wooricard.smartapp',\n PACKAGE_LPOINT: 'com.lottemembers.android',\n PACKAGE_KTFAUTH: 'com.kt.ktauth',\n PACKAGE_LGTAUTH: 'com.lguplus.smartotp',\n PACKAGE_SKTAUTH: 'com.sktelecom.tauth',\n PACKAGE_WOORIWONBANK: 'com.wooribank.smart.npib',\n } as const;\n}\n\nexport { IMPConst };\n"]}