toss_payment 0.2.7 copy "toss_payment: ^0.2.7" to clipboard
toss_payment: ^0.2.7 copied to clipboard

Toss Payment Flutter Plugin This plugin provides a payments method using toss in ios and android app.

Toss Payments Flutter plugin. #

플러터 앱에서 토스페이먼츠를 사용해서 앱내 결제기능을 구현하고자 하는 분들에게 도움이 되고자 합니다.
토스페이먼츠에 대한 자세한 사항은 "https://docs.tosspayments.com/" 를 참고해주세요.

Features #

  1. 결제창 연동하기 및 웹뷰를 사용한 외부 앱 연동.

Getting started #

외부 앱 연동을 위해서는 각 OS별로 환경 세팅을 해줘야 합니다.

1. IOS #

Info.plist에 외부앱 실행을 위한 Scheme 추가.

<key>LSApplicationQueriesSchemes</key>
<array>
    <string>supertoss</string> <!-- 토스페이 -->
    <string>mpocket.online.ansimclick</string> <!-- 삼성카드앱카드 -->
    <string>hdcardappcardansimclick</string> <!-- 현대카드앱카드 -->
    <string>smhyundaiansimclick</string> <!-- 현대카드공인인증서 -->
    <string>wooripay</string> <!-- 우리카드앱카드 -->
    <string>shinhan-sr-ansimclick</string> <!-- 신한카드앱카드 -->
    <string>smshinhanansimclick</string> <!-- 신한카드공인인증서 -->
    <string>kb-acp</string> <!-- 국민카드앱카드 -->
    <string>lottesmartpay</string> <!-- 롯데카드모바일결제 -->
    <string>lotteappcard</string> <!-- 롯데카드앱카드 -->
    <string>cloudpay</string> <!-- 하나카드앱카드 -->
    <string>nhappvardansimclick</string> <!-- 농협카드-앱카드 -->
    <string>nonghyupcardansimclick</string> <!-- 농협카드공인인증서 -->
    <string>citispay</string> <!-- 씨티카드앱카드 -->
    <string>citicardappkr</string> <!-- 씨티카드공인인증서 -->
    <string>ispmobile</string> <!-- ISP모바일 -->
</array>

3. Android #

a. 안드로이드 Min SDK 를 20 이상으로 설정해주세요.

android/app/build.gradle에 defaultConfig

defaultConfig {
    ...
    minSdkVersion 20
    ...
}

b. manifest에 외부앱 실행을 위한 scheme 및 permission을 추가해주세요.

android/app/main/AndroidManifest.xml

<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" />
<queries>
    <!-- 토스 -->
    <package android:name="viva.republica.toss" />
    <intent>
        <action android:name="android.intent.action.VIEW" />
        <data android:scheme="supertoss" />
    </intent>
    <!-- 삼성카드 -->
    <package android:name="kr.co.samsungcard.mpocket" />
    <intent>
        <action android:name="android.intent.action.VIEW" />
        <data android:scheme="mpocket.online.ansimclick" />
    </intent>
    <!-- 현대카드 -->
    <package android:name="com.hyundaicard.appcard" />
    <intent>
        <action android:name="android.intent.action.VIEW" />
        <data android:scheme="hdcardappcardansimclick" />
    </intent>
    <!-- 현대카드공인인증서 -->
    <intent>
        <action android:name="android.intent.action.VIEW" />
        <data android:scheme="smhyundaiansimclick" />
    </intent>
    <!-- 우리카드앱카드 -->
    <intent>
        <action android:name="android.intent.action.VIEW" />
        <data android:scheme="wooripay" />
    </intent>
    <!-- 신한카드앱카드 -->
    <intent>
        <action android:name="android.intent.action.VIEW" />
        <data android:scheme="shinhan-sr-ansimclick" />
    </intent>
    <!-- 신한카드공인인증서 -->
    <intent>
        <action android:name="android.intent.action.VIEW" />
        <data android:scheme="smshinhanansimclick" />
    </intent>
    <!-- 국민카드앱카드 -->
    <intent>
        <action android:name="android.intent.action.VIEW" />
        <data android:scheme="kb-acp" />
    </intent>
    <!-- 롯데카드모바일결제 -->
    <intent>
        <action android:name="android.intent.action.VIEW" />
        <data android:scheme="lottesmartpay" />
    </intent>
    <!-- 롯데카드앱카드 -->
    <intent>
        <action android:name="android.intent.action.VIEW" />
        <data android:scheme="lotteappcard" />
    </intent>
    <!-- 하나카드앱카드 -->
    <intent>
        <action android:name="android.intent.action.VIEW" />
        <data android:scheme="cloudpay" />
    </intent>
    <!-- 농협카드-앱카드 -->
    <intent>
        <action android:name="android.intent.action.VIEW" />
        <data android:scheme="nhappvardansimclick" />
    </intent>
    <!-- 농협카드공인인증서 -->
    <intent>
        <action android:name="android.intent.action.VIEW" />
        <data android:scheme="nonghyupcardansimclick" />
    </intent>
    <!-- 씨티카드공인인증서 -->
    <intent>
        <action android:name="android.intent.action.VIEW" />
        <data android:scheme="citicardappkr" />
    </intent>
    <!-- ISP모바일 -->
    <intent>
        <action android:name="android.intent.action.VIEW" />
        <data android:scheme="ispmobile" />
    </intent>
</queries>

추가 팁 #

a. 안드로이드 웹에 접근되지 않을 때

usesCleartextTraffic 세팅을 true로 해주세요.

android/app/main/AndroidManifest.xml

<application
  ...
  android:usesCleartextTraffic="true">
...
</application>

b. 안드로이드 12 이상에서 앱이 설치 혹은 실행되지 않을 때

android:exported 를 "true"로 세팅해주세요.

android/app/main/AndroidManifest.xml

<activity
  android:name=".MainActivity"
  ...
  android:exported="true">
...
</activity>

Usage #

"PaymentWebView" 을 통해서 결제창과 연동할 수 있습니다.

PaymentWebView(title: "결제 페이지 타이틀", paymentRequestUrl: Uri.parse("결제 웹 페이지 주소"))

Additional information #

!!Notice!!

  • example 앱 내에 Mock Server를 사용해 Web Page 구현해 두었습니다. 실제로 사용하실 때는 Web Page를 작성하셔서 사용해야 합니다.
Roadmap

a. Test Code.

b. Etc.

15
likes
130
points
51
downloads

Publisher

unverified uploader

Weekly Downloads

Toss Payment Flutter Plugin This plugin provides a payments method using toss in ios and android app.

Repository (GitHub)
View/report issues

Documentation

API reference

License

BSD-3-Clause (license)

Dependencies

flutter, url_launcher, webview_flutter

More

Packages that depend on toss_payment