Search

결제위젯 Native SDK 가이드

Android

라이브러리 적용

최소 요구사항

- minSdk 21
Plain Text
복사

build.gradle(project)

allprojects { repositories { ... mavenCentral() maven { url "https://jitpack.io" } } }
Groovy
복사

build.gradle(app)

dependencies { implementation 'com.github.tosspayments:payment-sdk-android:0.1.0' }
Groovy
복사

PaymentMethodWidget 적용

<?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/white"> ... <com.tosspayments.paymentsdk.view.PaymentMethodWidget android:id="@+id/payment_widget" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="8dp" /> ... </androidx.constraintlayout.widget.ConstraintLayout>
XML
복사
class MainActivity : AppCompatActivity() { private val paymentWidget = PaymentWidget(CLIENT_KEY, CUSTOMER_KEY) private val tossPaymentActivityResult: ActivityResultLauncher<Intent> = PaymentWidget.getPaymentResultLauncher( this@MainActivity, { success: TossPaymentResult.Success -> handlePaymentSuccessResult(success) }, { fail: TossPaymentResult.Fail -> handlePaymentFailResult(fail) }) override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) initViews() ... } private fun initViews() { // 결제 위젯 설정 val methodWidget = findViewById<PaymentMethodWidget>(R.id.payment_widget) paymentWidget.setMethodWidget(methodWidget) ... } // payment widget 렌더링 요청 private fun renderMethodWidget(amount: Long) { paymentWidget.renderPaymentMethodWidget(amount) } // 결제 요청 private fun requestPayment(orderId: String, orderName : String, customerEmail: String?, customerName: String?) { paymentWidget.requestPayment( paymentResultLauncher = tossPaymentActivityResult, orderId = orderId, orderName = orderName, customerEmail = customerEmail, customerName = customerName ) } private fun handlePaymentSuccessResult(success: TossPaymentResult.Success) { // 결제 성공 처리 } private fun handlePaymentFailResult(fail: TossPaymentResult.Fail) { // 결제 실패 처리 } }
Kotlin
복사

주요 클래스

PaymentWidget:<class>

public void
PaymentWidget(String clientKey, String customerKey)
public void
setMethodWidget(PaymentMethodWidget methodWidget)
public void
renderPaymentMethodWidget(long amount)
public void
renderPaymentMethodWidget(float amount)
public void
requestPayment(ActivityResultLauncher<Intent> paymentResultLauncher, String orderId, String orderName, String customerEmail(optional), String customerName(optional))

TossPaymentResult : <sealed class>

TossPaymentResult.Success : <TossPaymentResult>

속성
타입
필수
설명
paymentKey
String
Y
결제 식별자
orderId
String
Y
주문 식별자
amount
Long
Y
결제 금액

TossPaymentResult.Fail : <TossPaymentResult>

속성
타입
필수
설명
errorCode
String
Y
결제 실패코드
errorMessage
String
Y
결제 실패메세지
orderId
String
Y
주문 식별자

iOS

라이브러리 적용

최소 요구사항

iOS 11, Swift 5
Swift
복사

cocoapods

pod 'TossPayments'
Groovy
복사

Swift package manager

.package(url: "https://github.com/tosspayments/payment-sdk-ios.git", from: "0.1.0")
Groovy
복사

PaymentMethodWidget 적용

import UIKit import WebKit import TossPayments public final class PaymentWidgetViewController: ViewController { private lazy var widget: PaymentWidget = PaymentWidget(clientKey: Environment.clientKey) public override func viewDidLoad() { super.viewDidLoad() view.addSubview(widget) widget.amount = 1000 widget.delegate = self widget.widgetUIDelegate = self requestPayments() } // 결제 요청 @objc func requestPayments() { widget.requestPayments( info: DefaultPaymentInfo( amount: 1000, orderId: "주문번호:1234567", orderName: "테스트 결제" ), on: self ) } } extension PaymentWidgetViewController: TossPaymentsDelegate { public func handlePaymentSuccessResult(_ success: TossPaymentsResult.Success) { // 결제 성공 처리 } public func handlePaymentFailResult(_ fail: TossPaymentsResult.Fail) { // 결제 실패 처리 } } extension PaymentWidgetViewController: TossPaymentsWidgetUIDelegate { public func didUpdateHeight(_ widget: PaymentWidget, height: CGFloat) { // 높이 처리 } }
Swift
복사

주요 클래스

class PaymentWidget: WKWebView

결제 수단을 선택할 수 있는 위젯 View
public
PaymentWidget(clientKey: String)
public
weak var delegate: TossPaymentsDelegate?
public
weak var widgetUIDelegate: TossPaymentsWidgetUIDelegate?
public
var amount: Double
public
func requestPayments(info: PaymentInfo, on rootViewController: UIViewController)

protocol TossPaymentsDelegate

requestPayments로 호출한 결제 결과를 알려주는 delegate
public
func handlePaymentSuccessResult(_ success: TossPaymentsResult.Success)
public
func handlePaymentFailResult(_ fail: TossPaymentsResult.Fail)

protocol TossPaymentsWidgetUIDelegate

PaymentWidget View 의 상태 변화를 알려주는 delegate
public
func didUpdateHeight(_ widget: PaymentWidget, height: CGFloat)

protocol PaymentInfo: Codable

결제 요청에 필요한 정보 객체
public
var amount: Double
public
var orderId: String
public
var orderName: String
public
var customerName: String?
public
var customerEmail: String?
public
var taxFreeAmount: Double?

struct DefaultPaymentInfo: PaymentInfo

PaymentInfo protocol 을 따르는 대표 객체
TransferPaymentInfo, CardPaymentInfo, VirtualAccountPaymentInfo, MobilePhonePaymentInfo, GiftCertificatePaymentInfo 등등 제공
추가 parameter가 필요한 경우 직접 PaymentInfo protocol 을 구현한 객체를 선언해서 사용할수도 있음

enum TossPaymentResult:

struct TossPaymentResult.Success

속성
타입
필수
설명
paymentKey
String
Y
결제 식별자
orderId
String
Y
주문 식별자
amount
Double
Y
결제 금액

struct TossPaymentResult.Fail

속성
타입
필수
설명
errorCode
String
Y
결제 실패코드
errorMessage
String
Y
결제 실패메세지
orderId
String
Y
주문 식별자