@portone/mcp-server 0.15.0 → 0.16.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 (95) hide show
  1. package/assets/docs/help/admin-console/pg-settlement/content30.md +2 -2
  2. package/assets/docs/help/admin-console/pg-settlement-history/content35.md +2 -2
  3. package/assets/docs/help/core-service/channel-setting/danal.md +4 -4
  4. package/assets/docs/help/core-service/channel-setting/daou.md +5 -0
  5. package/assets/docs/help/core-service/channel-setting/galaxia.md +2 -2
  6. package/assets/docs/help/core-service/channel-setting/inicis.md +30 -46
  7. package/assets/docs/help/core-service/channel-setting/kcp_channel.md +25 -13
  8. package/assets/docs/help/core-service/channel-setting/kpn.md +3 -2
  9. package/assets/docs/help/core-service/channel-setting/mobilians.md +22 -27
  10. package/assets/docs/help/core-service/channel-setting/nice.md +4 -4
  11. package/assets/docs/help/core-service/channel-setting/payco.md +5 -3
  12. package/assets/docs/help/core-service/channel-setting/payletter.md +3 -3
  13. package/assets/docs/help/core-service/how-to-use/additional-mobilians.md +15 -21
  14. package/assets/docs/help/core-service/how-to-use/content200009.md +10 -9
  15. package/assets/docs/help/core-service/how-to-use/high-risk-industry.md +2 -0
  16. package/assets/docs/help/core-service/how-to-use/information-pg.md +1 -1
  17. package/assets/docs/help/core-service/how-to-use/mobilians-contract.md +26 -21
  18. package/assets/docs/help/core-service/how-to-use/requirements.md +2 -0
  19. package/assets/docs/help/core-service/how-to-use/test-mode-cancel.md +1 -1
  20. package/assets/docs/help/core-service/how-to-use/wordpress-setting.md +2 -1
  21. package/assets/docs/help/core-service/payment-type/content200047.md +3 -1
  22. package/assets/docs/help/core-service/payment-type/content200052.md +8 -1
  23. package/assets/docs/help/core-service/payment-type/hub-service-fee.md +1 -1
  24. package/assets/docs/help/core-service/payment-type/internationl-high-risk-industry.md +1 -26
  25. package/assets/docs/help/faq/general-inquiry/confirm-process.md +5 -11
  26. package/assets/docs/help/faq/general-inquiry/real-channel-info.md +1 -1
  27. package/assets/docs/help/faq/payment-faq/pg-max-min-amount.md +3 -3
  28. package/assets/docs/help/faq/payment-faq/vbank-service-detail.md +1 -1
  29. package/assets/docs/help/pricing/pg/domestic-and-oversea-fees.md +1 -1
  30. package/assets/docs/help/pricing/portone/portone-pricing.md +2 -0
  31. package/assets/docs/help/procedure/pg-application/content54.md +2 -0
  32. package/assets/docs/help/procedure/pg-application/start.md +2 -0
  33. package/assets/docs/help/procedure/recommendation/package.md +4 -2
  34. package/assets/docs/help/service/pg/pg-service-list.md +8 -6
  35. package/assets/docs/opi/ko/extra/link-pay/readme-v1.md +36 -4
  36. package/assets/docs/opi/ko/extra/mobile-payment/readme-v2.md +610 -0
  37. package/assets/docs/opi/ko/extra/smart-routing/intro.md +1 -1
  38. package/assets/docs/opi/ko/integration/pg/v1/blue.md +36 -0
  39. package/assets/docs/opi/ko/integration/pg/v1/danal.md +134 -4
  40. package/assets/docs/opi/ko/integration/pg/v1/daou/readme.md +103 -53
  41. package/assets/docs/opi/ko/integration/pg/v1/eximbay.md +121 -19
  42. package/assets/docs/opi/ko/integration/pg/v1/galaxia.md +12 -0
  43. package/assets/docs/opi/ko/integration/pg/v1/inicis-jp.md +57 -30
  44. package/assets/docs/opi/ko/integration/pg/v1/inicis.md +177 -0
  45. package/assets/docs/opi/ko/integration/pg/v1/kakaopay.md +128 -2
  46. package/assets/docs/opi/ko/integration/pg/v1/kg-mobilians-v2.md +19 -19
  47. package/assets/docs/opi/ko/integration/pg/v1/kg.md +65 -12
  48. package/assets/docs/opi/ko/integration/pg/v1/kicc.md +115 -2
  49. package/assets/docs/opi/ko/integration/pg/v1/ksnet/readme.md +14 -2
  50. package/assets/docs/opi/ko/integration/pg/v1/naver.md +60 -0
  51. package/assets/docs/opi/ko/integration/pg/v1/newtoss/readme.md +117 -7
  52. package/assets/docs/opi/ko/integration/pg/v1/nhn-kcp/kcp-quickpay.md +21 -32
  53. package/assets/docs/opi/ko/integration/pg/v1/nhn-kcp/readme.md +164 -3
  54. package/assets/docs/opi/ko/integration/pg/v1/nice-v2/billing-api-caution.md +6 -6
  55. package/assets/docs/opi/ko/integration/pg/v1/nice-v2/readme.md +177 -2
  56. package/assets/docs/opi/ko/integration/pg/v1/nice.md +122 -3
  57. package/assets/docs/opi/ko/integration/pg/v1/payco.md +87 -3
  58. package/assets/docs/opi/ko/integration/pg/v1/payletter-global.md +142 -1
  59. package/assets/docs/opi/ko/integration/pg/v1/paymentwall.md +45 -1
  60. package/assets/docs/opi/ko/integration/pg/v1/paypal.md +37 -1
  61. package/assets/docs/opi/ko/integration/pg/v1/readme.md +1 -1
  62. package/assets/docs/opi/ko/integration/pg/v1/rt/readme.md +52 -14
  63. package/assets/docs/opi/ko/integration/pg/v1/settle/mybank.md +138 -56
  64. package/assets/docs/opi/ko/integration/pg/v1/settle/readme.md +50 -0
  65. package/assets/docs/opi/ko/integration/pg/v1/smartro-v2/readme.md +126 -0
  66. package/assets/docs/opi/ko/integration/pg/v1/smartro.md +78 -0
  67. package/assets/docs/opi/ko/integration/pg/v1/smilepay.md +49 -3
  68. package/assets/docs/opi/ko/integration/pg/v1/spb/readme.md +88 -25
  69. package/assets/docs/opi/ko/integration/pg/v1/toss-brandpay/module.md +1 -1
  70. package/assets/docs/opi/ko/integration/pg/v1/toss-brandpay/readme.md +34 -2
  71. package/assets/docs/opi/ko/integration/pg/v1/toss.md +114 -1
  72. package/assets/docs/opi/ko/integration/pg/v1/tosspay-v2/readme.md +74 -15
  73. package/assets/docs/opi/ko/integration/pg/v1/tosspay.md +41 -1
  74. package/assets/docs/opi/ko/integration/pg/v1/welcome/readme.md +12 -0
  75. package/assets/docs/opi/ko/integration/pg/v2/inicis-jp.md +3 -15
  76. package/assets/docs/opi/ko/integration/pg/v2/triple-a.md +1 -0
  77. package/assets/docs/opi/ko/integration/ready/readme.md +14 -46
  78. package/assets/docs/opi/ko/integration/start/v1/non-auth.md +1 -1
  79. package/assets/docs/opi/ko/readme.md +2 -2
  80. package/assets/docs/opi/ko/support/code-info/pg-2.md +1 -1
  81. package/assets/docs/opi/ko/support/code-info/pg-3.md +3 -3
  82. package/assets/docs/opi/ko/support/code-info/pg.md +1 -1
  83. package/assets/docs/release-notes/api-sdk/2023-07-03.md +3 -3
  84. package/assets/docs/schema/v1.openapi.json +239 -3
  85. package/assets/docs/schema/v1.openapi.yml +174 -12
  86. package/assets/docs/schema/v2.openapi.json +225 -11
  87. package/assets/docs/schema/v2.openapi.yml +185 -3
  88. package/assets/docs/sdk/ko/v1-sdk/javascript-sdk/payrq.md +10 -2
  89. package/assets/docs/sdk/ko/v1-sdk/javascript-sdk/payrt.md +1 -1
  90. package/assets/docs/v1-docs-full.md +2892 -388
  91. package/assets/docs/v2-docs-full.md +639 -67
  92. package/assets/docs/website-links.md +4 -3
  93. package/manifest.json +1 -1
  94. package/package.json +1 -1
  95. package/server/index.js +1 -1
@@ -67,6 +67,7 @@
67
67
  - [컨펌 프로세스](https://developers.portone.io/opi/ko/extra/confirm-process/readme-v2): 결제 승인 직전에 고객사 측에 결제 의사를 최종적으로 확인하는 기능입니다.
68
68
  - [본인인증 연동하기](https://developers.portone.io/opi/ko/extra/identity-verification/readme-v2): 포트원을 이용하여 간편하게 본인인증을 연동하는 방법을 확인합니다.
69
69
  - [수동 승인](https://developers.portone.io/opi/ko/extra/manual-confirm/readme-v2): 고객사 서버에서 API를 호출하여 결제를 승인하는 연동 방식입니다.
70
+ - [모바일 앱에서 결제 연동하기](https://developers.portone.io/opi/ko/extra/mobile-payment/readme-v2): 모바일 앱(Android, iOS, Flutter, React Native)에서 포트원 결제를 연동하는 방법을 안내합니다.
70
71
  - [결제취소(환불) 연동하기](https://developers.portone.io/opi/ko/integration/cancel/v2/readme): 포트원 V2 결제취소 API를 이용한 결제취소 방법을 안내합니다.
71
72
  - [다날 본인인증](https://developers.portone.io/opi/ko/integration/pg/v2/danal-identity-verification): 다날 본인인증 연동 방법을 안내합니다.
72
73
  - [엑심베이](https://developers.portone.io/opi/ko/integration/pg/v2/eximbay-v2): 엑심베이 결제 연동 방법을 안내합니다.
@@ -817,6 +818,620 @@ targetVersions:
817
818
  </div>
818
819
 
819
820
 
821
+ # https://developers.portone.io/opi/ko/extra/mobile-payment/readme-v2
822
+
823
+ ---
824
+ title: 모바일 앱에서 결제 연동하기
825
+ description: 모바일 앱(Android, iOS, Flutter, React Native)에서 포트원 결제를 연동하는 방법을 안내합니다.
826
+ targetVersions:
827
+ - v2
828
+ ---
829
+
830
+ 포트원은 Android, iOS, Flutter, React Native용 공식 V2 SDK를 제공하고 있으며,
831
+ V2 SDK가 제공되지 않는 플랫폼이나,
832
+ 앱이 이미 WebView로 구성되어 있는 경우에는 WebView에서 직접 연동할 수 있습니다.
833
+ ([WebView 앱 연동 사례](https://github.com/portone-io/iamport-react-native/blob/HEAD/exampleForWebView/README.md))
834
+
835
+ ## 연동원리
836
+
837
+ 모바일 앱에서 결제를 연동하기 전에, 모바일 결제가 어떻게 동작하는지 이해해야 합니다.
838
+
839
+ ### 왜 WebView를 사용하는가?
840
+
841
+ 대부분의 PG사(카드사, 간편결제 등)는 **웹 기반 결제 UI만 제공**합니다.
842
+ 카드 번호 입력 폼, 3DS 인증, 간편결제 동의 화면은 모두 웹 페이지로 구현되어 있습니다.
843
+
844
+ 따라서 모바일 앱에서도 네이티브 UI가 아닌 **WebView 안에서 결제 UI를 표시**하게 됩니다.
845
+ 포트원의 모바일 SDK는 이 WebView를 자동으로 관리하는 얇은 래퍼이며,
846
+ SDK 없이 연동할 경우 WebView를 직접 구성해야 합니다.
847
+
848
+ ### 결제 흐름
849
+
850
+ 사용자가 앱에서 결제를 시작하면 다음 과정이 진행됩니다.
851
+
852
+ ```markdown
853
+ 1. 앱이 WebView를 열고, 포트원 Browser SDK가 포함된 페이지를 로드
854
+ 2. Browser SDK가 PG 결제 UI를 WebView에 표시
855
+ 3. 사용자가 카드 정보 입력 / 간편결제 인증 진행
856
+ 4. (필요시) 외부 앱 실행 — 은행 앱, 카카오페이 등
857
+ 5. 외부 앱에서 인증 완료 → Deep Link로 앱 복귀
858
+ 6. PG가 결제 결과와 함께 redirectUrl로 리다이렉트
859
+ 7. 앱이 리다이렉트를 가로채서 결과 추출
860
+ 8. 서버에서 결제 검증 후 주문 완료
861
+ ```
862
+
863
+ 포트원 모바일 SDK는 1\~7단계를 자동으로 처리합니다.
864
+
865
+ ### 웹 결제와의 차이점
866
+
867
+ `PortOne.requestPayment()`는 결제창이 뜨기 전에 발생하는 오류(파라미터 형식 오류, 네트워크 통신 실패 등)를 Promise에서 throw합니다.
868
+ 이는 모바일 WebView에서도 동일하지만, 결제 결과는 웹 브라우저와 달리 **리다이렉트 방식**으로 받아야 합니다.
869
+
870
+ ```typescript
871
+ PortOne.requestPayment({
872
+ // ... 결제 파라미터
873
+ redirectUrl: "myapp://payment-complete",
874
+ appScheme: "myapp://",
875
+ });
876
+ ```
877
+
878
+ 1. `redirectUrl`에 결제 완료 후 리다이렉트될 URL을 지정합니다. 결제 내에서 사용하지 않을 URL이면 됩니다.
879
+ 2. `appScheme`에 앱의 URL scheme을 지정합니다. 이 값은 카드사 앱에 전달되어, 인증 완료 후 앱으로 복귀할 때 사용됩니다.
880
+ 3. 결제 완료 시 WebView가 `redirectUrl`로 이동하며, 쿼리 파라미터에 결제 결과가 포함됩니다.
881
+ 4. 앱이 이 URL을 가로채서 쿼리 파라미터에서 결과를 추출합니다.
882
+
883
+ <div class="hint" data-style="info">
884
+
885
+ 모바일 결제에서는 `redirectUrl` 설정이 필수입니다.
886
+ 설정하지 않으면 결제 UI가 정상적으로 표시되지 않을 수 있습니다.
887
+
888
+ </div>
889
+
890
+ <div class="hint" data-style="info">
891
+
892
+ 결제 파라미터에 대한 자세한 내용은 [리다이렉트 방식의 경우](https://developers.portone.io/opi/ko/integration/start/v2/checkout?v=v2#3-1-리다이렉트-방식의-경우) 문서를 참고하세요.
893
+
894
+ </div>
895
+
896
+ ### 외부 앱 처리
897
+
898
+ 결제 도중 PG사의 결제 페이지가 카드사 앱카드, ISP 인증, 계좌이체 앱 등을 실행하기 위해
899
+ `kftc-bankpay://`, `ispmobile://`, `intent://` 같은 URL로 WebView를 이동시키는 경우가 있습니다.
900
+
901
+ **모바일 브라우저**(Safari, Chrome)에서는 이러한 커스텀 URL scheme을 만나면 OS에 자동으로 전달하여 해당 앱을 실행합니다.
902
+ 하지만 **앱 내 WebView는 웹 콘텐츠 렌더링 전용**이므로 이 동작이 기본적으로 지원되지 않습니다.
903
+
904
+ - iOS `WKWebView`: HTTP/HTTPS가 아닌 scheme으로의 네비게이션을 차단합니다.
905
+ - Android `WebView`: 알 수 없는 scheme에 대해 오류 페이지(`ERR_UNKNOWN_URL_SCHEME`)를 표시합니다.
906
+
907
+ 따라서 WebView의 URL 네비게이션 이벤트를 가로채서, 네이티브 코드에서 OS API를 호출하여 외부 앱을 직접 실행해야 합니다.
908
+
909
+ |URL 유형 |예시 |처리 방법 |
910
+ |-------------------|--------------------|--------------------------|
911
+ |일반 웹 URL |`https://...` |WebView에서 정상 로드 |
912
+ |PG/카드사 앱 scheme|`kftc-bankpay://...`|해당 외부 앱 실행 |
913
+ |Android Intent |`intent://...` |Intent URI 파싱 후 앱 실행|
914
+ |커스텀 scheme |`myapp://...` |결제 완료 — 결과 추출 |
915
+
916
+ 포트원 모바일 SDK는 이 URL 인터셉트 및 외부 앱 실행을 자동으로 처리합니다.
917
+
918
+ ## SDK를 사용한 연동
919
+
920
+ 포트원은 Android, iOS, React Native, Flutter용 공식 모바일 SDK를 제공합니다.
921
+ SDK가 위 연동원리에서 설명한 WebView 생성, 외부 앱 실행, 결제 결과 수신을 모두 자동으로 처리하므로 가장 간편한 연동 방식입니다.
922
+
923
+ SDK를 지원하는 플랫폼이라면 SDK를 사용하는 것을 권장합니다.
924
+
925
+ |플랫폼 |SDK |설치 방법 |레퍼런스 |
926
+ |------------|---------------------------|---------------------|--------------------------------------------------------|
927
+ |Android |`android-sdk` |JitPack |[GitHub](https://github.com/portone-io/android-sdk) |
928
+ |iOS |`PortOneSDK` |Swift Package Manager|[GitHub](https://github.com/portone-io/ios-sdk) |
929
+ |React Native|`@portone/react-native-sdk`|npm |[GitHub](https://github.com/portone-io/react-native-sdk)|
930
+ |Flutter |`portone_flutter` |pub.dev |[GitHub](https://github.com/portone-io/portone_flutter) |
931
+
932
+ <div class="hint" data-style="info">
933
+
934
+ 각 SDK의 설치 및 사용법은 [모바일 SDK 레퍼런스](https://developers.portone.io/sdk/ko/v2-mobile-sdk/readme)를 참고하세요.<br />
935
+ 다양한 플랫폼의 연동 예시는 [portone-sample GitHub 저장소](https://github.com/portone-io/portone-sample)에서 확인하실 수 있습니다.
936
+
937
+ </div>
938
+
939
+ ---
940
+
941
+ ## SDK 없이 직접 연동하기
942
+
943
+ V2 SDK가 제공되지 않는 플랫폼이나 WebView를 직접 제어하고 싶은 경우,
944
+ 아래 단계를 따라 연동할 수 있습니다.
945
+
946
+ ### Step 1. 의존성 설치
947
+
948
+ WebView를 표시하고 외부 앱을 실행하기 위한 라이브러리를 설치합니다.
949
+
950
+ <div class="tabs-container">
951
+
952
+ <div class="tabs-content" data-title="Flutter">
953
+
954
+ ```yaml title="pubspec.yaml"
955
+ dependencies:
956
+ flutter_inappwebview: ^6.1.5 # WebView
957
+ url_launcher: ^6.3.1 # 외부 앱 실행
958
+ ```
959
+
960
+ ```shell
961
+ flutter pub get
962
+ ```
963
+
964
+ </div>
965
+
966
+ <div class="tabs-content" data-title="Android (Kotlin)">
967
+
968
+ Android의 `WebView`는 기본 제공되므로 별도 의존성이 필요하지 않습니다.
969
+
970
+ `build.gradle`에서 minSdk 21 이상을 확인하세요.
971
+
972
+ ```kotlin title="build.gradle.kts"
973
+ android {
974
+ defaultConfig {
975
+ minSdk = 21
976
+ }
977
+ }
978
+ ```
979
+
980
+ </div>
981
+
982
+ <div class="tabs-content" data-title="iOS (Swift)">
983
+
984
+ iOS의 `WKWebView`는 WebKit 프레임워크에 기본 포함되어 있으므로 별도 의존성이 필요하지 않습니다.
985
+
986
+ 배포 대상은 iOS 14 이상을 권장합니다.
987
+
988
+ </div>
989
+
990
+ <div class="tabs-content" data-title="React Native">
991
+
992
+ `react-native-webview`로 WebView를 표시하고, `Linking` API로 외부 앱을 실행합니다.
993
+
994
+ ```shell
995
+ npm install react-native-webview
996
+ ```
997
+
998
+ iOS의 경우 추가로 Pod을 설치합니다.
999
+
1000
+ ```shell
1001
+ cd ios && pod install
1002
+ ```
1003
+
1004
+ </div>
1005
+
1006
+ </div>
1007
+
1008
+ ### Step 2. 플랫폼 필수 설정
1009
+
1010
+ 결제 과정에서 은행 앱, 간편결제 앱 등 외부 앱이 실행됩니다.
1011
+ OS 정책상 실행 가능한 외부 앱을 사전에 선언해야 하며, **이 설정이 없으면 외부 앱 실행이 실패합니다.**
1012
+
1013
+ <div class="hint" data-style="info">
1014
+
1015
+ Flutter와 React Native는 크로스 플랫폼 프레임워크이므로 Android와 iOS 설정을 **모두** 적용해야 합니다.
1016
+
1017
+ </div>
1018
+
1019
+ <div class="tabs-container">
1020
+
1021
+ <div class="tabs-content" data-title="Flutter">
1022
+
1023
+ Flutter 프로젝트에서는 각 플랫폼의 네이티브 설정 파일에 직접 추가합니다.
1024
+
1025
+ - **Android**: `android/app/src/main/AndroidManifest.xml` — Android 탭의 `queries` 내용을 추가합니다.
1026
+ - **iOS**: `ios/Runner/Info.plist` — iOS 탭의 `LSApplicationQueriesSchemes`와 `CFBundleURLTypes` 내용을 추가합니다.
1027
+
1028
+ </div>
1029
+
1030
+ <div class="tabs-content" data-title="Android">
1031
+
1032
+ Android 11(API 30) 이상에서는 **패키지 가시성** 정책에 따라 AndroidManifest.xml에 결제 앱 패키지를 선언해야 합니다.
1033
+
1034
+ ```xml title="AndroidManifest.xml"
1035
+ <manifest xmlns:android="http://schemas.android.com/apk/res/android">
1036
+ <queries>
1037
+ <package android:name="com.kftc.bankpay.android" /> <!-- 뱅크페이 -->
1038
+ <package android:name="kvp.jjy.MispAndroid320" /> <!-- ISP / 페이북 -->
1039
+ <package android:name="com.hyundaicard.appcard" /> <!-- 현대카드 -->
1040
+ <package android:name="com.shcard.smartpay" /> <!-- 신한 SOL페이 -->
1041
+ <package android:name="com.shinhan.smartcaremgr" /> <!-- 신한 슈퍼SOL -->
1042
+ <package android:name="com.shinhan.sbanking" /> <!-- 신한 SOL뱅크 -->
1043
+ <package android:name="com.kbcard.cxh.appcard" /> <!-- KB Pay -->
1044
+ <package android:name="com.kbstar.kbbank" /> <!-- KB스타뱅킹 -->
1045
+ <package android:name="kr.co.samsungcard.mpocket" /> <!-- 삼성카드 -->
1046
+ <package android:name="com.samsung.android.spay" /> <!-- Samsung Wallet -->
1047
+ <package android:name="net.ib.android.smcard" /> <!-- monimo -->
1048
+ <package android:name="com.lcacApp" /> <!-- 디지로카 (롯데카드) -->
1049
+ <package android:name="com.lottemembers.android" /> <!-- L.POINT with L.PAY -->
1050
+ <package android:name="com.hanaskcard.paycla" /> <!-- 하나Pay (하나카드) -->
1051
+ <package android:name="nh.smart.nhallonepay" /> <!-- NH Pay -->
1052
+ <package android:name="kr.co.citibank.citimobile" /> <!-- 씨티모바일 -->
1053
+ <package android:name="com.kakao.talk" /> <!-- 카카오톡 (카카오페이) -->
1054
+ <package android:name="com.nhnent.payapp" /> <!-- PAYCO -->
1055
+ <package android:name="com.wooricard.smartapp" /> <!-- 우리카드 우리WON카드 -->
1056
+ <package android:name="com.wooribank.smart.npib" /> <!-- 우리은행 우리WON뱅킹 -->
1057
+ <package android:name="viva.republica.toss" /> <!-- 토스 -->
1058
+ <package android:name="com.nhn.android.search" /> <!-- 네이버 (네이버페이) -->
1059
+ <package android:name="com.kakaobank.channel" /> <!-- 카카오뱅크 -->
1060
+ <package android:name="com.ahnlab.v3mobileplus" /> <!-- V3 Mobile Plus -->
1061
+ <package android:name="com.TouchEn.mVaccine.webs" /> <!-- 터치엔 엠백신 -->
1062
+ <package android:name="com.sktelecom.tauth" /> <!-- PASS by SKT -->
1063
+ <package android:name="com.kt.ktauth" /> <!-- PASS by KT -->
1064
+ <package android:name="com.lguplus.smartotp" /> <!-- PASS by U+ -->
1065
+ <package android:name="com.mysmilepay.app" /> <!-- 스마일페이 -->
1066
+ <package android:name="com.ssg.serviceapp.android.egiftcertificate" /> <!-- SSGPAY -->
1067
+ <package android:name="com.hanabank.mzplatform" /> <!-- 아이부자 -->
1068
+ <package android:name="com.knb.psb" /> <!-- BNK경남은행 -->
1069
+ <package android:name="kr.ac.yonsei.idcard" /> <!-- 연세페이 -->
1070
+ <package android:name="jp.naver.line.android" /> <!-- LINE (LINE Pay) -->
1071
+ <package android:name="com.eg.android.AlipayGphone" /> <!-- Alipay -->
1072
+ <package android:name="hk.alipay.wallet" /> <!-- AlipayHK -->
1073
+ <package android:name="com.tencent.mm" /> <!-- WeChat -->
1074
+ <package android:name="com.globe.gcash.android" /> <!-- GCash -->
1075
+ <package android:name="th.co.truemoney.wallet" /> <!-- TrueMoney -->
1076
+ <intent>
1077
+ <action android:name="android.intent.action.VIEW" />
1078
+ <category android:name="android.intent.category.BROWSABLE" />
1079
+ <data android:scheme="https" />
1080
+ </intent>
1081
+ </queries>
1082
+ </manifest>
1083
+ ```
1084
+
1085
+ 앱이 외부 결제 앱에서 복귀할 수 있도록 커스텀 URL scheme도 등록합니다.
1086
+ 결제를 시작하는 Activity의 `intent-filter`에 앱의 URL scheme을 추가합니다.
1087
+
1088
+ ```xml title="AndroidManifest.xml"
1089
+ <application ...>
1090
+ <activity
1091
+ android:name=".MainActivity"
1092
+ android:launchMode="singleTask"
1093
+ android:exported="true">
1094
+ <intent-filter>
1095
+ <action android:name="android.intent.action.MAIN" />
1096
+ <category android:name="android.intent.category.LAUNCHER" />
1097
+ </intent-filter>
1098
+ <intent-filter>
1099
+ <action android:name="android.intent.action.VIEW" />
1100
+ <category android:name="android.intent.category.DEFAULT" />
1101
+ <category android:name="android.intent.category.BROWSABLE" />
1102
+ <data android:scheme="myapp" />
1103
+ </intent-filter>
1104
+ </activity>
1105
+ </application>
1106
+ ```
1107
+
1108
+ </div>
1109
+
1110
+ <div class="tabs-content" data-title="iOS">
1111
+
1112
+ Info.plist에 `LSApplicationQueriesSchemes`를 등록하여 결제 앱의 URL scheme을 선언해야 합니다.
1113
+ iOS 15 이상에서는 최대 50개까지 등록할 수 있으므로, 필요한 항목만을 추가합니다.
1114
+
1115
+ ```xml title="Info.plist"
1116
+ <key>LSApplicationQueriesSchemes</key>
1117
+ <array>
1118
+ <string>kftc-bankpay</string> <!-- 뱅크페이 -->
1119
+ <string>ispmobile</string> <!-- ISP / 페이북 -->
1120
+ <string>hdcardappcardansimclick</string> <!-- 현대카드 -->
1121
+ <string>shinhan-sr-ansimclick</string> <!-- 신한 SOL페이 -->
1122
+ <string>shinhan-sr-ansimclick-payco</string> <!-- 신한 SOL페이 (PAYCO) -->
1123
+ <string>shinhan-sr-ansimclick-lpay</string> <!-- 신한 SOL페이 (L.PAY) -->
1124
+ <string>kb-acp</string> <!-- KB Pay -->
1125
+ <string>kbbank</string> <!-- KB스타뱅킹 -->
1126
+ <string>mpocket.online.ansimclick</string> <!-- 삼성카드 -->
1127
+ <string>lotteappcard</string> <!-- 디지로카 (롯데카드) -->
1128
+ <string>lmslpay</string> <!-- L.POINT with L.PAY -->
1129
+ <string>cloudpay</string> <!-- 하나Pay (하나카드) -->
1130
+ <string>nhallonepayansimclick</string> <!-- NH Pay -->
1131
+ <string>citimobileapp</string> <!-- 씨티모바일 (씨티카드) -->
1132
+ <string>kakaotalk</string> <!-- 카카오톡 (카카오페이) -->
1133
+ <string>payco</string> <!-- PAYCO -->
1134
+ <string>com.wooricard.wcard</string> <!-- 우리카드 우리WON카드 -->
1135
+ <string>newsmartpib</string> <!-- 우리은행 우리WON뱅킹 -->
1136
+ <string>supertoss</string> <!-- 토스 -->
1137
+ <string>naversearchthirdlogin</string> <!-- 네이버 (네이버페이) -->
1138
+ <string>kakaobank</string> <!-- 카카오뱅크 -->
1139
+ <string>tauthlink</string> <!-- PASS by SKT -->
1140
+ <string>ktauthexternalcall</string> <!-- PASS by KT -->
1141
+ <string>upluscorporation</string> <!-- PASS by U+ -->
1142
+ <string>kn-bankpay</string> <!-- BNK경남은행 -->
1143
+ <string>yonseipay</string> <!-- 연세페이 -->
1144
+ <string>line</string> <!-- LINE (LINE Pay) -->
1145
+ <string>alipays</string> <!-- Alipay -->
1146
+ <string>alipayhk</string> <!-- AlipayHK -->
1147
+ <string>weixin</string> <!-- WeChat -->
1148
+ <string>ascendmoney</string> <!-- TrueMoney -->
1149
+ </array>
1150
+ ```
1151
+
1152
+ 앱이 외부 결제 앱에서 복귀할 수 있도록 커스텀 URL scheme도 등록합니다.
1153
+
1154
+ ```xml title="Info.plist"
1155
+ <key>CFBundleURLTypes</key>
1156
+ <array>
1157
+ <dict>
1158
+ <key>CFBundleURLSchemes</key>
1159
+ <array>
1160
+ <string>myapp</string>
1161
+ </array>
1162
+ </dict>
1163
+ </array>
1164
+ ```
1165
+
1166
+ </div>
1167
+
1168
+ <div class="tabs-content" data-title="React Native">
1169
+
1170
+ React Native 프로젝트에서는 각 플랫폼의 네이티브 설정 파일에 직접 추가합니다.
1171
+
1172
+ - **Android**: `android/app/src/main/AndroidManifest.xml` — Android 탭의 `queries` 내용을 추가합니다.
1173
+ - **iOS**: `ios/<프로젝트명>/Info.plist` — iOS 탭의 `LSApplicationQueriesSchemes`와 `CFBundleURLTypes` 내용을 추가합니다.
1174
+
1175
+ </div>
1176
+
1177
+ </div>
1178
+
1179
+ ### Step 3. WebView에서 결제 페이지 로드
1180
+
1181
+ WebView를 생성하고 포트원 Browser SDK가 포함된 HTML을 로드합니다.
1182
+ `redirectUrl`에 결제 완료 후 리다이렉트될 URL을, `appScheme`에 카드사 앱 등에서 복귀할 때 사용할 앱 URL scheme을 지정합니다.
1183
+
1184
+ <div class="hint" data-style="warning">
1185
+
1186
+ WebView에 HTML 텍스트를 직접 로드하는 경우 `data:` 또는 `file:` 등의 opaque URL이 사용됩니다.
1187
+ 이 상태에서 `postMessage`를 사용하면 [정상 동작하지 않을 수 있으니](https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage#targetorigin) 주의하세요.
1188
+ `baseUrl`을 `https://` URL로 임의 설정하여 해소할 수 있습니다.
1189
+
1190
+ </div>
1191
+
1192
+ ```html
1193
+ <!doctype html>
1194
+ <html>
1195
+ <head>
1196
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
1197
+ <script src="https://cdn.portone.io/v2/browser-sdk.js"></script>
1198
+ <script>
1199
+ PortOne.requestPayment({
1200
+ storeId: "store-...",
1201
+ paymentId: "payment-...",
1202
+ orderName: "주문명",
1203
+ totalAmount: 1000,
1204
+ currency: "KRW",
1205
+ channelKey: "channel-key-...",
1206
+ payMethod: "CARD",
1207
+ redirectUrl: "myapp://payment-complete",
1208
+ appScheme: "myapp://",
1209
+ });
1210
+ </script>
1211
+ </head>
1212
+ </html>
1213
+ ```
1214
+
1215
+ <div class="hint" data-style="info">
1216
+
1217
+ 위 예시는 이해를 돕기 위한 최소 구성입니다.
1218
+ 실제 연동 시에는 [결제대행사별 연동 가이드](https://developers.portone.io/opi/ko/integration/pg/v2/readme?v=v2)및 [브라우저 SDK 요청 형식](https://developers.portone.io/sdk/ko/v2-sdk/payment-request?v=v2)에 따라 파라미터를 추가하세요.
1219
+
1220
+ </div>
1221
+
1222
+ <div class="hint" data-style="warning">
1223
+
1224
+ Android `WebView`는 JavaScript가 기본 비활성화이므로 `settings.javaScriptEnabled = true` 설정이 필요합니다.
1225
+ (iOS `WKWebView`와 Flutter `InAppWebView`는 기본 활성화입니다.)
1226
+
1227
+ 결제 완료 시 WebView가 `redirectUrl`로 이동하므로,
1228
+ 다음 Step의 URL 네비게이션 처리에서 해당 URL을 구분할 수 있어야 합니다.
1229
+
1230
+ </div>
1231
+
1232
+ ### Step 4. URL 네비게이션 처리
1233
+
1234
+ WebView에서 발생하는 URL 네비게이션을 프로토콜별로 분기 처리해야 합니다.
1235
+ 아래 코드는 분기 처리의 핵심 로직만 발췌한 것입니다.
1236
+
1237
+ |URL 프로토콜 |처리 방법 |
1238
+ |------------------------------------------|-------------------------------------------|
1239
+ |`http://`, `https://` |WebView에서 정상 로드 |
1240
+ |커스텀 scheme (`myapp://`) |결제 완료 — URL 쿼리 파라미터에서 결과 추출|
1241
+ |`intent://` (Android) |Intent URI를 파싱하여 해당 앱 실행 |
1242
+ |PG/카드사 앱 scheme (`kftc-bankpay://` 등)|해당 외부 앱 실행 |
1243
+
1244
+ <div class="hint" data-style="info">
1245
+
1246
+ 엑심베이 GCash 결제는 `intent://`나 `gcash://`가 아닌 `https://gcash.onelink.me` URL을 사용하며,
1247
+ 이때 `gcash://com.mynt.gcash/app`을 직접 호출해야 합니다.
1248
+ 자세한 처리는 [React Native SDK의 해당 부분](https://github.com/portone-io/react-native-sdk/blob/03dac55/src/SdkDelegate.tsx#L96-L103)을 참고하세요.
1249
+
1250
+ </div>
1251
+
1252
+ <div class="tabs-container">
1253
+
1254
+ <div class="tabs-content" data-title="Flutter (Dart)">
1255
+
1256
+ `InAppWebView`의 `shouldOverrideUrlLoading` 콜백에서 URL scheme별로 분기합니다.<br />
1257
+ 전체 동작하는 예시는 [portone\_flutter SDK의 portone\_webview.dart](https://github.com/portone-io/portone_flutter/blob/233b101/lib/v2/widget/portone_webview.dart#L114-L151)를 참고하세요.
1258
+
1259
+ ```dart
1260
+ InAppWebView(
1261
+ initialSettings: InAppWebViewSettings(
1262
+ useShouldOverrideUrlLoading: true,
1263
+ resourceCustomSchemes: ["intent"],
1264
+ ),
1265
+ shouldOverrideUrlLoading: (controller, navigateAction) async {
1266
+ // URI 파서는 플랫폼마다 동작이 다를 수 있으므로 (예: 페이북),
1267
+ // rawValue에서 직접 protocol을 추출합니다.
1268
+ final uri = navigateAction.request.url!.rawValue;
1269
+ var protocol = uri.substring(0, uri.indexOf(':'));
1270
+
1271
+ switch (protocol) {
1272
+ case 'http':
1273
+ case 'https':
1274
+ return NavigationActionPolicy.ALLOW;
1275
+ case 'myapp':
1276
+ // 결제 완료 — 쿼리 파라미터에서 결과 추출
1277
+ return NavigationActionPolicy.CANCEL;
1278
+ case 'intent':
1279
+ // intent:// URI에서 scheme을 추출하여 앱 실행
1280
+ // 미설치 시 마켓으로 이동
1281
+ return NavigationActionPolicy.CANCEL;
1282
+ default:
1283
+ // PG/카드사 앱 등 외부 앱 실행
1284
+ if (await canLaunchUrlString(uri)) launchUrlString(uri);
1285
+ return NavigationActionPolicy.CANCEL;
1286
+ }
1287
+ },
1288
+ )
1289
+ ```
1290
+
1291
+ </div>
1292
+
1293
+ <div class="tabs-content" data-title="Android (Kotlin)">
1294
+
1295
+ `WebViewClient`의 `shouldOverrideUrlLoading`에서 URL scheme별로 분기합니다.<br />
1296
+ 전체 구현은 [Android SDK의 PortOneWebView.kt](https://github.com/portone-io/android-sdk/blob/c3aeec4/sdk/src/main/java/io/portone/sdk/android/PortOneWebView.kt#L75-L111)를 참고하세요.
1297
+
1298
+ ```kotlin
1299
+ webView.settings.javaScriptEnabled = true
1300
+
1301
+ webView.webViewClient = object : WebViewClient() {
1302
+ override fun shouldOverrideUrlLoading(
1303
+ view: WebView, request: WebResourceRequest
1304
+ ): Boolean {
1305
+ val url = request.url
1306
+ return when (url.scheme) {
1307
+ "http", "https" -> false // WebView에서 정상 로드
1308
+ "myapp" -> {
1309
+ // 결제 완료 — 쿼리 파라미터에서 결과 추출
1310
+ handlePaymentResult(url)
1311
+ true
1312
+ }
1313
+ "intent" -> {
1314
+ // Intent URI 파싱 후 앱 실행, 미설치 시 마켓 이동
1315
+ launchIntentOrMarket(url)
1316
+ true
1317
+ }
1318
+ else -> {
1319
+ // PG/카드사 앱 등 외부 앱 실행
1320
+ startActivity(Intent(Intent.ACTION_VIEW, url))
1321
+ true
1322
+ }
1323
+ }
1324
+ }
1325
+ }
1326
+ ```
1327
+
1328
+ </div>
1329
+
1330
+ <div class="tabs-content" data-title="iOS (Swift)">
1331
+
1332
+ `WKNavigationDelegate`의 `decidePolicyFor`에서 URL scheme별로 분기합니다.<br />
1333
+ 전체 구현은 [iOS SDK의 PaymentWebView.swift](https://github.com/portone-io/ios-sdk/blob/a88175c/Sources/PortOneSdk/PaymentWebView.swift#L117-L181)를 참고하세요.
1334
+
1335
+ ```swift
1336
+ func webView(
1337
+ _ webView: WKWebView,
1338
+ decidePolicyFor navigationAction: WKNavigationAction,
1339
+ decisionHandler: @escaping (WKNavigationActionPolicy) -> Void
1340
+ ) {
1341
+ guard let url = navigationAction.request.url else {
1342
+ decisionHandler(.allow)
1343
+ return
1344
+ }
1345
+
1346
+ switch url.scheme {
1347
+ case "http", "https":
1348
+ decisionHandler(.allow)
1349
+ case "myapp":
1350
+ // 결제 완료 — 쿼리 파라미터에서 결과 추출
1351
+ handlePaymentResult(url: url)
1352
+ decisionHandler(.cancel)
1353
+ default:
1354
+ // PG/카드사 앱 등 외부 앱 실행
1355
+ UIApplication.shared.open(url)
1356
+ decisionHandler(.cancel)
1357
+ }
1358
+ }
1359
+ ```
1360
+
1361
+ </div>
1362
+
1363
+ <div class="tabs-content" data-title="React Native">
1364
+
1365
+ `react-native-webview`의 `onShouldStartLoadWithRequest`에서 URL scheme별로 분기합니다.<br />
1366
+ 전체 구현은 [React Native SDK의 SdkDelegate.tsx](https://github.com/portone-io/react-native-sdk/blob/deea773/src/SdkDelegate.tsx#L83-L156)를 참고하세요.
1367
+
1368
+ ```tsx
1369
+ import { Linking } from "react-native";
1370
+ import { WebView } from "react-native-webview";
1371
+
1372
+ <WebView
1373
+ source={{ html: paymentHtml }}
1374
+ originWhitelist={["*"]}
1375
+ javaScriptEnabled
1376
+ onShouldStartLoadWithRequest={(request) => {
1377
+ const url = request.url;
1378
+ const protocol = url.split(":", 2)[0];
1379
+
1380
+ switch (protocol) {
1381
+ case "http":
1382
+ case "https":
1383
+ return true;
1384
+ case "myapp":
1385
+ // 결제 완료 — 쿼리 파라미터에서 결과 추출
1386
+ handlePaymentResult(url);
1387
+ return false;
1388
+ case "intent":
1389
+ // intent:// URI에서 scheme을 추출하여 앱 실행
1390
+ // 미설치 시 마켓으로 이동
1391
+ launchIntentOrMarket(url);
1392
+ return false;
1393
+ default:
1394
+ // PG/카드사 앱 등 외부 앱 실행
1395
+ Linking.openURL(url).catch(() => {});
1396
+ return false;
1397
+ }
1398
+ }}
1399
+ />;
1400
+ ```
1401
+
1402
+ </div>
1403
+
1404
+ </div>
1405
+
1406
+ ### Step 5. 결제 결과 처리
1407
+
1408
+ 결제가 완료되면 `redirectUrl`로 리다이렉트되며, 쿼리 파라미터에 결제 결과가 포함됩니다.
1409
+ 파라미터에 대한 자세한 내용은 [리다이렉트 방식의 경우](https://developers.portone.io/opi/ko/integration/start/v2/checkout?v=v2#3-1-리다이렉트-방식의-경우) 문서를 참고하세요.
1410
+
1411
+ <div class="hint" data-style="warning">
1412
+
1413
+ `redirectUrl`로 이동하기 전에 앱이 종료되는 경우도 있습니다.
1414
+ 이 경우 앱이 결제 종료를 서버에 알릴 수 없으므로, 서버에서
1415
+ [웹훅](https://developers.portone.io/opi/ko/integration/start/v2/checkout#5-웹훅-연동하기) 또는 [수동 승인](https://developers.portone.io/opi/ko/integration/start/v2/checkout#3-1-리다이렉트-방식의-경우) 기능을 함께 사용하는 것을 권장합니다.
1416
+
1417
+ </div>
1418
+
1419
+ <div class="hint" data-style="warning">
1420
+
1421
+ 클라이언트 측 결제 결과만으로 주문을 확정하면 안됩니다. 서버에서 [결제 조회 API](https://developers.portone.io/api/rest-v2/payment#get%20%2Fpayments%2F%7BpaymentId%7D)를 호출하여 결제 상태와 금액을 검증해야 합니다.
1422
+
1423
+ </div>
1424
+
1425
+ 서버 측 결제 검증 방법은 [인증 결제 연동하기 - 결제 완료 처리 (서버)](https://developers.portone.io/opi/ko/integration/start/v2/checkout#4-결제-완료-처리-서버)를 참고하세요.
1426
+
1427
+ ## 참고 링크
1428
+
1429
+ - [모바일 SDK 레퍼런스](https://developers.portone.io/sdk/ko/v2-mobile-sdk/readme)
1430
+ - [결제 연동 샘플 프로젝트](https://github.com/portone-io/portone-sample)
1431
+ - [인증 결제 연동하기](https://developers.portone.io/opi/ko/integration/start/v2/checkout) (웹 결제 연동 가이드)
1432
+ - [결제 조회 API](https://developers.portone.io/api/rest-v2/payment#get%20%2Fpayments%2F%7BpaymentId%7D) (서버 측 검증)
1433
+
1434
+
820
1435
  # https://developers.portone.io/opi/ko/integration/cancel/v2/readme
821
1436
 
822
1437
  ---
@@ -3255,7 +3870,7 @@ function requestPayment() {
3255
3870
 
3256
3871
  **구매자 ID**
3257
3872
 
3258
- CBT 유형이 SBPS인 경우 필수 입력입니다. 입력하지 않은 경우 포트원에서 자동 채번된 식별값이 사용됩니다.
3873
+ CBT 유형이 SBPS인 경우 필수 입력이며 최대 30자로 설정해야합니다.
3259
3874
 
3260
3875
  - fullName?: string
3261
3876
 
@@ -3377,21 +3992,9 @@ function requestPayment() {
3377
3992
 
3378
3993
  <details>
3379
3994
 
3380
- <summary>`redirectUrl` 필수 입력입니다.</summary>
3995
+ <summary>`paymentId` 에는 알파벳 대소문자, 숫자 및 일부 특수문자만 허용됩니다.</summary>
3381
3996
 
3382
- 이니시스 일본결제의 경우 PC, 모바일 환경을 구분하지 않고 항상 리디렉션 방식으로 결제창이 동작합니다. 따라서 `redirectUrl` 는 항상 입력해야 합니다.
3383
-
3384
- </details>
3385
-
3386
- <details>
3387
-
3388
- <summary>`paymentId` 에는 ASCII 문자만 허용됩니다.</summary>
3389
-
3390
- `paymentId` 에는 ASCII 문자만으로 이루어진 문자열만 입력할 수 있습니다.
3391
-
3392
- ASCII 문자에 포함되지 않는 한글이나 `♤`, `♡`, `♧` 등의 특수 문자는 허용되지 않습니다.
3393
-
3394
- 입력 가능한 ASCII 문자의 종류는 [링크](http://www.ascii-code.com/) → `ASCII printable characters` 섹션을 참고하세요.
3997
+ 지원되지 않는 언어(ex. 한글) 특수문자(ex. `()`) 사용 결제가 실패할 있습니다.
3395
3998
 
3396
3999
  </details>
3397
4000
 
@@ -14396,6 +14999,7 @@ PortOne.requestPayment({
14396
14999
 
14397
15000
  - ISO 4217 통화 코드
14398
15001
  - [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217)
15002
+ - Triple-A에서 사용 가능한 통화 목록은 [Triple-A 공식 문서](https://developers.triple-a.io/docs/triplea-api-doc/8974dfffa9418-presentment-currencies-for-crypto-payments)에서 확인할 수 있습니다.
14399
15003
 
14400
15004
  - locale?: Locale
14401
15005
 
@@ -25911,7 +26515,7 @@ API 빌링키 발급 요청 시 스마트 라우팅 그룹 아이디를 지정
25911
26515
  - **다날** : 카드 / 실시간 계좌이체 / 가상계좌 / 휴대폰 소액결제
25912
26516
  - **키움페이** : 카드 / 실시간 계좌이체 / 가상계좌
25913
26517
  - **헥토파이낸셜** : 카드 / 실시간 계좌이체 / 가상계좌 / 휴대폰 소액결제
25914
- - **KG모빌리언스** : 카드 / 실시간 계좌이체 / 가상계좌 / 휴대폰 소액결제
26518
+ - **KG파이낸셜** : 카드 / 실시간 계좌이체 / 가상계좌 / 휴대폰 소액결제
25915
26519
  - **KSNET** : 카드 / 실시간 계좌이체 / 가상계좌 / 휴대폰 소액결제
25916
26520
  - **이지페이(KICC)** : 카드 / 실시간 계좌이체 / 가상계좌 / 휴대폰 소액결제
25917
26521
  - **웰컴페이먼츠** : 카드 / 실시간 계좌이체 / 가상계좌 / 휴대폰 소액결제
@@ -26252,9 +26856,9 @@ targetVersions:
26252
26856
 
26253
26857
  <details>
26254
26858
 
26255
- <summary>모빌리언스</summary>
26859
+ <summary>KG파이낸셜</summary>
26256
26860
 
26257
- 포트원 콘솔에서 채널 추가 시 계약 완료 후 모빌리언스로부터 전달받은 \[서비스ID]를 입력한 후 `저장`을 클릭합니다.
26861
+ 포트원 콘솔에서 채널 추가 시 계약 완료 후 KG파이낸셜로부터 전달받은 \[서비스ID]를 입력한 후 `저장`을 클릭합니다.
26258
26862
 
26259
26863
  <div class="hint" data-style="info">
26260
26864
 
@@ -26583,25 +27187,13 @@ DI\_CODE는 12자리로 고객사에서 자체적으로 사이트(서비스)를
26583
27187
 
26584
27188
  (이미지 첨부: KCP 파트너관리자 내 관리용 사설인증서 발급 완료 화면)
26585
27189
 
26586
- 4. \[자동결제]→\[그룹관리]→\[그룹등록]을 클릭합니다.
26587
-
26588
- 5. \[상점정보]→\[사이트코드]에서 그룹등록할 사이트코드를 선택합니다.
26589
-
26590
- 6. \[그룹정보]에서 \[유형3]을 선택한 후 원하는 그룹명을 입력합니다.
26591
-
26592
- 7. \[결제입력 정보]에서 \[결제유형] 및 \[납부유형]을 확인하시고 고객사 유형에 맞게 선택합니다.
27190
+ 4. \[결제관리]→\[자동결제]→\[그룹관리]→\[그룹등록]을 클릭합니다.
26593
27191
 
26594
- 8. \[고지방법]에서 원하시는 고지 방법을 선택한 \[등록하기]를 클릭합니다.
27192
+ 5. 그룹명을 입력 그룹을 생성하고 생성된 그룹아이디를 확인합니다.
26595
27193
 
26596
- (이미지 첨부: KCP 파트너관리자 내 관리용 그룹등록 화면)
26597
-
26598
- 9. \[자동결제]→\[그룹관리]→\[그룹조회]를 클릭합니다.
26599
-
26600
- 10. \[사이트코드]에서 사용한 사이트코드를 선택한 후 \[검색]을 클릭합니다.
26601
-
26602
- (이미지 첨부: KCP 파트너관리자 내 관리용 그룹조회 화면)
27194
+ (이미지 첨부: KCP 파트너관리자 내 관리용 그룹등록 화면)
26603
27195
 
26604
- 11. 포트원 콘솔에서 채널 추가 시 사이트코드, 사이트키, 앞서 발급한 정기자동결제 그룹아이디를 입력한 후 \[저장]을 클릭합니다.
27196
+ 6. 포트원 콘솔에서 채널 추가 시 사이트코드, 사이트키, 앞서 발급한 그룹아이디를 입력한 후 \[저장]을 클릭합니다.
26605
27197
 
26606
27198
  </div>
26607
27199
 
@@ -26619,25 +27211,13 @@ DI\_CODE는 12자리로 고객사에서 자체적으로 사이트(서비스)를
26619
27211
 
26620
27212
  (이미지 첨부: KCP 파트너관리자 내 관리용 사설인증서 발급 완료 화면)
26621
27213
 
26622
- 4. \[자동결제]→\[그룹관리]→\[그룹등록]을 클릭합니다.
27214
+ 4. \[결제관리]→\[자동결제]→\[그룹관리]→\[그룹등록]을 클릭합니다.
26623
27215
 
26624
- 5. \[상점정보]→\[사이트코드]에서 그룹등록할 사이트코드를 선택합니다.
27216
+ 5. 그룹명을 입력 그룹을 생성하고 생성된 그룹아이디를 확인합니다.
26625
27217
 
26626
- 6. \[그룹정보]에서 \[유형3]을 선택한 원하는 그룹명을 입력합니다.
27218
+ (이미지 첨부: KCP 파트너관리자 관리용 그룹등록 화면)
26627
27219
 
26628
- 7. \[결제입력 정보]에서 \[결제유형] \[납부유형]을 확인하시고 고객사 유형에 맞게 선택합니다.
26629
-
26630
- 8. \[고지방법]에서 원하시는 고지 방법을 선택한 후 \[등록하기]를 클릭합니다.
26631
-
26632
- (이미지 첨부: KCP 파트너관리자 내 관리용 그룹등록 화면)
26633
-
26634
- 9. \[자동결제]→\[그룹관리]→\[그룹조회]를 클릭합니다.
26635
-
26636
- 10. \[사이트코드]에서 사용한 사이트코드를 선택한 후 \[검색]을 클릭합니다.
26637
-
26638
- (이미지 첨부: KCP 파트너관리자 내 관리용 그룹조회 화면)
26639
-
26640
- 11. 포트원 콘솔에서 채널 추가 시 사이트코드, 사이트키, 앞서 발급한 정기자동결제 그룹아이디를 입력한 후 \[저장]을 클릭합니다.
27220
+ 6. 포트원 콘솔에서 채널 추가 시 사이트코드, 사이트키, 앞서 발급한 정기자동결제 그룹아이디를 입력한 후 \[저장]을 클릭합니다.
26641
27221
 
26642
27222
  </div>
26643
27223
 
@@ -26702,21 +27282,13 @@ DI\_CODE는 12자리로 고객사에서 자체적으로 사이트(서비스)를
26702
27282
  9. 정기결제를 이용하시는 경우, 아래 절차를 진행해주세요.
26703
27283
 
26704
27284
  1. [KCP 파트너관리자](http://partner.kcp.co.kr/) 접속 후 로그인을 합니다.
26705
- 2. \[자동결제]→\[그룹관리]→\[그룹등록]을 클릭합니다.
26706
- 3. \[상점정보]→\[사이트코드]에서 그룹등록할 사이트코드를 선택합니다.
26707
- 4. \[그룹정보]에서 \[유형3]을 선택한 후 원하는 그룹명을 입력합니다.
26708
- 5. \[결제입력 정보]에서 \[결제유형] 및 \[납부유형]을 확인하시고 고객사 유형에 맞게 선택합니다.
26709
- 6. \[고지방법]에서 원하시는 고지 방법을 선택한 후 \[등록하기]를 클릭합니다.
27285
+ 2. \[결제관리]→\[자동결제]→\[그룹관리]→\[그룹등록]을 클릭합니다.
27286
+ 3. 그룹명을 입력 그룹을 생성하고 생성된 그룹아이디를 확인합니다.
26710
27287
 
26711
27288
  (이미지 첨부: KCP 파트너관리자 내 관리용 그룹등록 화면)
26712
27289
 
26713
- 7. \[자동결제]→\[그룹관리]→\[그룹조회]를 클릭합니다.
26714
- 8. \[사이트코드]에서 사용한 사이트코드를 선택한 후 \[검색]을 클릭합니다.
26715
-
26716
- (이미지 첨부: KCP 파트너관리자 내 관리용 그룹조회 화면)
26717
-
26718
- 9. 포트원 콘솔에서 채널 추가 시 앞서 발급한 \[MID(사이트코드)], \[PG-API 인증서키], \[PG-API 개인키],
26719
- \[개인키 비밀번호], \[정기자동결제 그룹아이디]를 입력한 후 \[저장]을 클릭합니다.
27290
+ 4. 포트원 콘솔에서 채널 추가 시 앞서 발급한 \[MID(사이트코드)], \[PG-API 인증서키], \[PG-API 개인키],
27291
+ \[개인키 비밀번호], \[자동결제 그룹아이디]를 입력한 후 \[저장]을 클릭합니다.
26720
27292
 
26721
27293
  <!-- VERSION-SPECIFIC: V2 ONLY CONTENT END -->
26722
27294
 
@@ -27639,7 +28211,7 @@ targetVersions:
27639
28211
 
27640
28212
  <span>API 문서 바로가기</span>
27641
28213
 
27642
- <i class="i-ic-baseline-chevron-right inline-block text-2xl" />
28214
+ <i class="icon-[ic--baseline-chevron-right] inline-block text-2xl" />
27643
28215
 
27644
28216
  </a>
27645
28217
 
@@ -27651,7 +28223,7 @@ targetVersions:
27651
28223
 
27652
28224
  <span>API 문서 바로가기</span>
27653
28225
 
27654
- <i class="i-ic-baseline-chevron-right inline-block text-2xl" />
28226
+ <i class="icon-[ic--baseline-chevron-right] inline-block text-2xl" />
27655
28227
 
27656
28228
  </a>
27657
28229
 
@@ -31420,11 +31992,11 @@ iOS13 이후 아이패드 기기에서 결제 요청 시 PC 환경의 결제창
31420
31992
 
31421
31993
  ## 기타 수정사항
31422
31994
 
31423
- ### ✔️ KG모빌리언스를 통해 신용카드 결제를 이용할 수 있습니다
31995
+ ### ✔️ KG파이낸셜을 통해 신용카드 결제를 이용할 수 있습니다
31424
31996
 
31425
- KG모빌리언스와 계약을 통해 새로운 결제수단으로 신용카드를 이용할 수 있습니다. 하단의 일반 문의 채널을 통해 관련 문의를 남겨주시면 포트원 고객지원팀이 안내드리겠습니다.
31997
+ KG파이낸셜과 계약을 통해 새로운 결제수단으로 신용카드를 이용할 수 있습니다. 하단의 일반 문의 채널을 통해 관련 문의를 남겨주시면 포트원 고객지원팀이 안내드리겠습니다.
31426
31998
 
31427
- 본 기능 설정을 위한 자세한 내용은 관련 연동가이드를 확인 바랍니다. [→ KG모빌리언스](https://developers.portone.io/docs/ko/pg/payment-gateway/kg)
31999
+ 본 기능 설정을 위한 자세한 내용은 관련 연동가이드를 확인 바랍니다. [→ KG파이낸셜](https://developers.portone.io/docs/ko/pg/payment-gateway/kg)
31428
32000
 
31429
32001
 
31430
32002
  # https://developers.portone.io/release-notes/api-sdk/2023-07-10