iamport-react-native 2.0.0-rc.0 → 2.0.0

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 +36 -30
  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 +23 -25
  11. package/lib/commonjs/components/Payment/index.js.map +1 -1
  12. package/lib/commonjs/constants/index.js +14 -4
  13. package/lib/commonjs/constants/index.js.map +1 -1
  14. package/lib/commonjs/utils/IamportUrl.js +36 -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 +36 -29
  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 +23 -25
  27. package/lib/module/components/Payment/index.js.map +1 -1
  28. package/lib/module/constants/index.js +14 -4
  29. package/lib/module/constants/index.js.map +1 -1
  30. package/lib/module/utils/IamportUrl.js +36 -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 +12 -2
  39. package/lib/typescript/utils/IamportUrl.d.ts +2 -2
  40. package/lib/typescript/utils/Validation.d.ts +52 -2
  41. package/lib/typescript/utils/ValidationForPayment.d.ts +0 -1
  42. package/package.json +18 -18
  43. package/src/components/Certification/index.tsx +69 -59
  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 +80 -81
  47. package/src/constants/index.ts +12 -1
  48. package/src/utils/IamportUrl.ts +42 -22
  49. package/src/utils/Validation.ts +142 -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.0](https://github.com/iamport/iamport-react-native/tree/master)입니다.
7
+ 최신버전은 [v2.0.0](https://github.com/iamport/iamport-react-native/tree/v2.0.0)입니다.
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
@@ -21,6 +21,8 @@ var _constants = require("../../constants");
21
21
 
22
22
  var _styles = _interopRequireDefault(require("../../styles"));
23
23
 
24
+ var _IamportUrl = _interopRequireDefault(require("../../utils/IamportUrl"));
25
+
24
26
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
25
27
 
26
28
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
@@ -35,26 +37,22 @@ function Certification({
35
37
  callback
36
38
  }) {
37
39
  const [isWebViewLoaded, setIsWebViewLoaded] = (0, _react.useState)(false);
38
- const webview = (0, _react.useRef)();
39
- 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
+ }
40
47
 
41
48
  if (validation.getIsValid()) {
42
49
  const {
43
- wrapper,
44
50
  loadingContainer,
45
51
  webViewContainer
46
52
  } = _styles.default;
47
- return /*#__PURE__*/_react.default.createElement(_reactNative.View, {
48
- style: wrapper
49
- }, /*#__PURE__*/_react.default.createElement(_reactNative.View, {
50
- style: webViewContainer
51
- }, /*#__PURE__*/_react.default.createElement(_reactNativeWebview.WebView, {
52
- ref: ref => {
53
- if (ref !== null) {
54
- webview.current = ref;
55
- }
56
- },
57
- useWebKit: true,
53
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_reactNativeWebview.WebView, {
54
+ containerStyle: webViewContainer,
55
+ ref: webview,
58
56
  source: {
59
57
  html: _constants.IMPConst.WEBVIEW_SOURCE_HTML
60
58
  },
@@ -88,16 +86,13 @@ function Certification({
88
86
  }
89
87
  },
90
88
  onMessage: e => {
91
- const {
92
- data
93
- } = e.nativeEvent;
94
- let response = data;
89
+ let data = e.nativeEvent.data;
95
90
 
96
- while (decodeURIComponent(response) !== response) {
97
- response = decodeURIComponent(response);
91
+ if (decodeURIComponent(data) !== data) {
92
+ data = decodeURIComponent(data);
98
93
  }
99
94
 
100
- response = JSON.parse(response);
95
+ let response = JSON.parse(data);
101
96
 
102
97
  if (typeof callback === 'function') {
103
98
  callback(response);
@@ -112,23 +107,34 @@ function Certification({
112
107
  onShouldStartLoadWithRequest: request => {
113
108
  const {
114
109
  url
115
- } = request;
116
-
117
- if (url.startsWith('https://itunes.apple.com')) {
118
- _reactNative.Linking.openURL(url);
119
-
110
+ } = request; // console.log('url: ' + url);
111
+
112
+ const iamportUrl = new _IamportUrl.default(url);
113
+
114
+ if (iamportUrl.isAppUrl()) {
115
+ /* 3rd-party 앱 오픈 */
116
+ iamportUrl.launchApp().catch(e => {
117
+ const {
118
+ code,
119
+ message
120
+ } = e;
121
+ callback({
122
+ imp_success: false,
123
+ error_code: code,
124
+ error_msg: message
125
+ });
126
+ });
120
127
  return false;
121
128
  }
122
129
 
123
- if (url.startsWith('market://details')) {
124
- _reactNative.Linking.openURL(url);
125
-
130
+ if (iamportUrl.isPaymentOver(redirectUrl)) {
131
+ callback(iamportUrl.getQuery());
126
132
  return false;
127
133
  }
128
134
 
129
135
  return true;
130
136
  }
131
- })));
137
+ }));
132
138
  }
133
139
 
134
140
  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","startsWith","Linking","openURL","getMessage"],"mappings":"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","sourcesContent":["import React, { useRef, useState } from 'react';\nimport { Linking, 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';\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 if (url.startsWith('https://itunes.apple.com')) {\n Linking.openURL(url);\n return false;\n }\n if (url.startsWith('market://details')) {\n Linking.openURL(url);\n return false;\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":";;;;;;;AAAA;;AACA;;AACA;;AAEA;;AACA;;AAEA;;AACA;;AAEA;;AACA;;;;;;;;AAUA,SAASA,aAAT,CAAuB;AAAEC,EAAAA,QAAF;AAAYC,EAAAA,QAAZ;AAAsBC,EAAAA,IAAtB;AAA4BC,EAAAA,OAA5B;AAAqCC,EAAAA;AAArC,CAAvB,EAA+E;AAC7E,QAAM,CAACC,eAAD,EAAkBC,kBAAlB,IAAwC,qBAAS,KAAT,CAA9C;AACA,QAAMC,OAAO,gBAAG,uBAAhB;AACA,QAAMC,UAAU,GAAG,IAAIC,sBAAJ,CAAeT,QAAf,EAAyBG,OAAzB,EAAkCC,QAAlC,EAA4CF,IAA5C,CAAnB;AACA,MAAIQ,WAAW,GAAGC,oBAASC,cAA3B;;AACA,MAAIV,IAAI,CAACW,cAAL,KAAwBC,SAAxB,IAAqCZ,IAAI,CAACW,cAAL,CAAoBE,IAApB,OAA+B,EAAxE,EAA4E;AAC1EL,IAAAA,WAAW,GAAGR,IAAI,CAACW,cAAnB;AACD;;AAED,MAAIL,UAAU,CAACQ,UAAX,EAAJ,EAA6B;AAC3B,UAAM;AAAEC,MAAAA,gBAAF;AAAoBC,MAAAA;AAApB,QAAyCC,eAA/C;AACA,wBACE,yEACE,6BAAC,2BAAD;AACE,MAAA,cAAc,EAAED,gBADlB;AAEE,MAAA,GAAG,EAAEX,OAFP;AAGE,MAAA,MAAM,EAAE;AAAEa,QAAAA,IAAI,EAAET,oBAASU;AAAjB,OAHV;AAIE,MAAA,SAAS,EAAE,MAAM;AACf,YAAI,CAAChB,eAAL,EAAsB;AAAA;;AACpB;AACA,cAAIJ,QAAJ,EAAc;AAAA;;AACZ,gCAAAM,OAAO,CAACe,OAAR,sEAAiBC,gBAAjB,CAAmC;AACnD,gDAAgDvB,QAAS,OAAMC,QAAS;AACxE,SAFgB;AAGD,WAJD,MAIO;AAAA;;AACL,iCAAAM,OAAO,CAACe,OAAR,wEAAiBC,gBAAjB,CAAmC;AACnD,8CAA8CvB,QAAS;AACvD,SAFgB;AAGD;;AACD,+BAAAO,OAAO,CAACe,OAAR,wEAAiBC,gBAAjB,CAAmC;AACjD;AACA,gCAAgCC,IAAI,CAACC,SAAL,CAAevB,IAAf,CAAqB;AACrD;AACA;AACA;AACA,SANc;AAOAI,UAAAA,kBAAkB,CAAC,IAAD,CAAlB;AACD;AACF,OAzBH;AA0BE,MAAA,SAAS,EAAGoB,CAAD,IAAO;AAChB,YAAIxB,IAAI,GAAGwB,CAAC,CAACC,WAAF,CAAczB,IAAzB;;AACA,YAAI0B,kBAAkB,CAAC1B,IAAD,CAAlB,KAA6BA,IAAjC,EAAuC;AACrCA,UAAAA,IAAI,GAAG0B,kBAAkB,CAAC1B,IAAD,CAAzB;AACD;;AACD,YAAI2B,QAAQ,GAAGL,IAAI,CAACM,KAAL,CAAW5B,IAAX,CAAf;;AAEA,YAAI,OAAOE,QAAP,KAAoB,UAAxB,EAAoC;AAClCA,UAAAA,QAAQ,CAACyB,QAAD,CAAR;AACD;AACF,OApCH;AAqCE,MAAA,mBAAmB,MArCrB;AAsCE,MAAA,aAAa,EAAE,mBACb,6BAAC,iBAAD;AAAM,QAAA,KAAK,EAAEZ;AAAb,SAAgCd,OAAO,iBAAI,6BAAC,gBAAD,OAA3C,CAvCJ;AAyCE,MAAA,eAAe,EAAE,CAAC,GAAD,CAzCnB,CAyC0B;AAzC1B;AA0CE,MAAA,4BAA4B,EAAG4B,OAAD,IAAa;AACzC,cAAM;AAAEC,UAAAA;AAAF,YAAUD,OAAhB,CADyC,CAEzC;;AACA,cAAME,UAAU,GAAG,IAAIC,mBAAJ,CAAeF,GAAf,CAAnB;;AACA,YAAIC,UAAU,CAACE,QAAX,EAAJ,EAA2B;AACzB;AACAF,UAAAA,UAAU,CAACG,SAAX,GAAuBC,KAAvB,CAA8BX,CAAD,IAAO;AAClC,kBAAM;AAAEY,cAAAA,IAAF;AAAQC,cAAAA;AAAR,gBAAoBb,CAA1B;AACAtB,YAAAA,QAAQ,CAAC;AACPoC,cAAAA,WAAW,EAAE,KADN;AAEPC,cAAAA,UAAU,EAAEH,IAFL;AAGPI,cAAAA,SAAS,EAAEH;AAHJ,aAAD,CAAR;AAKD,WAPD;AASA,iBAAO,KAAP;AACD;;AACD,YAAIN,UAAU,CAACU,aAAX,CAAyBjC,WAAzB,CAAJ,EAA2C;AACzCN,UAAAA,QAAQ,CAAC6B,UAAU,CAACW,QAAX,EAAD,CAAR;AACA,iBAAO,KAAP;AACD;;AAED,eAAO,IAAP;AACD;AAjEH,MADF,CADF;AAuED;;AAED,sBAAO,6BAAC,sBAAD;AAAe,IAAA,OAAO,EAAEpC,UAAU,CAACqC,UAAX;AAAxB,IAAP;AACD;;eAEc9C,a","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 }\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,12 @@ 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
+ }
52
+
47
53
  (0, _react.useEffect)(() => {
48
54
  const {
49
55
  pg
@@ -88,7 +94,7 @@ function Payment({
88
94
  var _webview$current;
89
95
 
90
96
  (_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()}";
97
+ window.location.href = "${redirectUrl}?${iamportUrl.getInicisTransQuery(redirectUrl)}";
92
98
  `);
93
99
  } else {
94
100
  setIsInicisTransPaid(true);
@@ -118,7 +124,7 @@ function Payment({
118
124
  };
119
125
 
120
126
  _reactNative.Linking.addEventListener('url', handleOpenURL);
121
- }, [data, isInicisTransPaid, webview]);
127
+ }, [data, isInicisTransPaid, redirectUrl, webview]);
122
128
 
123
129
  const removeLoadingNeeded = () => {
124
130
  if (showLoading && _reactNative.Platform.OS === 'android') {
@@ -159,23 +165,17 @@ function Payment({
159
165
 
160
166
  if (validation.getIsValid()) {
161
167
  const {
162
- wrapper,
163
168
  loadingContainer,
164
169
  webViewContainer
165
170
  } = _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, {
171
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_reactNativeWebview.default, {
172
+ containerStyle: webViewContainer,
171
173
  ref: webview,
172
174
  source: webviewSource,
173
175
  onLoadEnd: () => {
174
176
  if (!isWebViewLoaded) {
175
177
  var _webview$current5;
176
178
 
177
- data.m_redirect_url = _constants.IMPConst.M_REDIRECT_URL;
178
-
179
179
  if (data.pg.startsWith('eximbay')) {
180
180
  data.popup = false;
181
181
  }
@@ -212,25 +212,19 @@ function Payment({
212
212
  /* PG사가 callback을 지원하는 경우, 결제결과를 받아 callback을 실행한다 */
213
213
  ,
214
214
  onMessage: e => {
215
- const {
216
- data
217
- } = e.nativeEvent;
218
215
  /**
219
216
  * [v1.6.0] 다날의 경우 response에 주문명(name)이 포함되어 있는데
220
217
  * 주문명에 %가 들어갈 경우, decodeURIComponent시 URI malformed 에러가 발생하는 것 대비해
221
218
  * 우선 encodeURIComponent를 한 후, decodeURIComponent가 끝나면
222
219
  * 최종적으로 decodeURIComponent를 한 번 더 한다
223
220
  */
221
+ const encoded = encodeURIComponent(e.nativeEvent.data);
222
+ const decoded = decodeURIComponent(encoded);
223
+ const response = JSON.parse(decoded);
224
224
 
225
- let response = encodeURIComponent(data);
226
-
227
- while (decodeURIComponent(response) !== data) {
228
- response = decodeURIComponent(response);
225
+ if (typeof callback === 'function') {
226
+ callback(response);
229
227
  }
230
-
231
- response = decodeURIComponent(response);
232
- response = JSON.parse(response);
233
- callback(response);
234
228
  },
235
229
  originWhitelist: ['*'] // https://github.com/facebook/react-native/issues/19986
236
230
  ,
@@ -238,7 +232,8 @@ function Payment({
238
232
  onShouldStartLoadWithRequest: request => {
239
233
  const {
240
234
  url
241
- } = request;
235
+ } = request; // console.log(`url: ${url}`);
236
+
242
237
  const iamportUrl = new _IamportUrl.default(url);
243
238
 
244
239
  if (iamportUrl.isAppUrl()) {
@@ -257,8 +252,11 @@ function Payment({
257
252
  return false;
258
253
  }
259
254
 
260
- if (iamportUrl.isPaymentOver()) {
261
- callback(iamportUrl.getQuery());
255
+ if (iamportUrl.isPaymentOver(redirectUrl)) {
256
+ if (typeof callback === 'function') {
257
+ callback(iamportUrl.getQuery());
258
+ }
259
+
262
260
  return false;
263
261
  }
264
262
 
@@ -273,7 +271,7 @@ function Payment({
273
271
 
274
272
  return true;
275
273
  }
276
- })), showLoading && /*#__PURE__*/_react.default.createElement(_reactNative.View, {
274
+ }), showLoading && /*#__PURE__*/_react.default.createElement(_reactNative.View, {
277
275
  style: loadingContainer
278
276
  }, loading || /*#__PURE__*/_react.default.createElement(_Loading.default, null)));
279
277
  }
@@ -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 }\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,9 +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
- LPOINT: 'lmslpay'
68
+ LPOINT: 'lmslpay',
69
+ KTFAUTH: 'ktauthexternalcall',
70
+ LGTAUTH: 'upluscorporation',
71
+ SKTAUTH: 'tauthlink',
72
+ WOORIWONBANK: 'wooribank'
68
73
  };
69
74
  const ANDROID_PACKAGE = _IMPConst.ANDROID_PACKAGE = {
70
75
  PACKAGE_ISP: 'kvp.jjy.MispAndroid320',
@@ -89,9 +94,14 @@ exports.IMPConst = IMPConst;
89
94
  PACKAGE_LPAY: 'com.lotte.lpay',
90
95
  PACKAGE_SSGPAY: 'com.ssg.serviceapp.android.egiftcertificate',
91
96
  PACKAGE_KPAY: 'com.inicis.kpay',
97
+ PACKAGE_KBANKPAY: 'com.kbankwith.smartbank',
92
98
  PACKAGE_PAYNOW: 'com.lguplus.paynow',
93
99
  PACKAGE_WOORIWONCARD: 'com.wooricard.smartapp',
94
- PACKAGE_LPOINT: 'com.lottemembers.android'
100
+ PACKAGE_LPOINT: 'com.lottemembers.android',
101
+ PACKAGE_KTFAUTH: 'com.kt.ktauth',
102
+ PACKAGE_LGTAUTH: 'com.lguplus.smartotp',
103
+ PACKAGE_SKTAUTH: 'com.sktelecom.tauth',
104
+ PACKAGE_WOORIWONBANK: 'com.wooribank.smart.npib'
95
105
  };
96
106
  })(IMPConst || (exports.IMPConst = IMPConst = {}));
97
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","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","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 } 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 } 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"]}