정채은
정채은2y ago

안드로이드 SDK 사용 관련 문의드립니다

build.gradle에 implementation 'com.github.tosspayments:payment-sdk-android:0.1.2' 의존성을 추가해주고 settings.gradle파일의 repositories{} 내부에 maven { url "https://jitpack.io" } 을 추가해주었습니다. 현재 activity는 PaymentActivity에서
private lateinit var paymentWidget: PaymentWidget

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
...
paymentWidget = PaymentWidget(
activity = APPCOMPAT_ACTIVITY,
clientKey = CLIENT_KEY,
customerKey = CUSTOMER_KEY,
options = PaymentWidgetOptions.Builder()
.brandPayOption(redirectUrl = REDIRECT_URL)
.build()
)
}
private lateinit var paymentWidget: PaymentWidget

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
...
paymentWidget = PaymentWidget(
activity = APPCOMPAT_ACTIVITY,
clientKey = CLIENT_KEY,
customerKey = CUSTOMER_KEY,
options = PaymentWidgetOptions.Builder()
.brandPayOption(redirectUrl = REDIRECT_URL)
.build()
)
}
이 형식대로 작성해주었고 xml 파일에는 frameLayout 내부에
<com.tosspayments.paymentsdk.view.PaymentMethodWidget
android:id="@+id/payment_widget"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp" />
<com.tosspayments.paymentsdk.view.PaymentMethodWidget
android:id="@+id/payment_widget"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp" />
이 위젯을 넣어주었습니다. 이렇게 구현해본 결과 화면에 아무런 반응이 없는 상태입니다 ㅜㅜ 혹시 몰라서 PaymentActivity에서 버튼을 눌러 TosspayActivity로 이동하게 하고, 새로운 액티비티와 레이아웃파일에 위 코드들을 작성해줬는데도 아무런 반응이 없습니다. 혹시 제가 빠트린 부분이 있을까요!!
37 Replies
토스페이먼츠 BOT
⏳ 잠시만 기다려주세요! 곧 답변드리겠습니다
오류 문의일 경우 아래 정보를 미리 전달해주시면, 빠른 답변에 도움이 됩니다.
- 주문번호(orderId) : - 문의 내용 :
(img를 함께 첨부해주시면 도움이됩니다)
* 계약관련 내용은 1544-7772로 문의주세요. * 주말/공휴일에는 답변이 늦을 수 있어요.
이실장
이실장2y ago
GitHub
GitHub - tosspayments/payment-sdk-android
Contribute to tosspayments/payment-sdk-android development by creating an account on GitHub.
이실장
이실장2y ago
샘플앱도 같이 빌드해보실 수 있는데요. 한번 비교해보시겠어요?
정채은
정채은OP2y ago
네네 해당 샘플앱을 빌드해서 같이 보고있는데 tosspayment의 안드로이드 sdk 연동 과정을 모두 한것같은데 혹시 추가해야할 부분이 있을지 문의드립니다
이실장
이실장2y ago
샘플앱은 이상없이 동작하나요?
정채은
정채은OP2y ago
샘플앱은 다른 기능은 잘 동작하는 것 같은데 결제위젯 에서 결제하기가 이어지지 않는 상태입니다!
이실장
이실장2y ago
결제위젯에서 위젯 영역은 렌더링이 되었나요?
정채은
정채은OP2y ago
No description
정채은
정채은OP2y ago
No description
정채은
정채은OP2y ago
No description
정채은
정채은OP2y ago
이런 상태입니다..! Customer Key와 주문 ID에 랜덤값을 넣고 다음을 누르면 결제하기 버튼만 뜬채로 아무 작동이 되지 않습니다
이실장
이실장2y ago
No description
이실장
이실장2y ago
안드로이드 스튜디오 에서 빌드하실 때, liveDebug로 빌드 중인지 확인가능할까요
정채은
정채은OP2y ago
devDebug 상태로 되어있었는데 libeDebug로 바꾸고 다시 실행하였더니 결제 위젯이 잘 실행되었습니다..! 그럼 제 프로젝트에서도 liveDebug를 사용하면 될까요??
이실장
이실장2y ago
프로젝트에는 어차피 의존성 추가로 가져다 쓰시는거라.. debug와는 상관없을 것 같아요! 혹시 자체 project에 사용 중인 clientKey가 어떻게 되나요?
정채은
정채은OP2y ago
test_ck_k6bJXmgo28em0BeWYEA8LAnGKWx4 토스페이먼츠에 가입해서 발급받은 테스트 클라이언트키입니다!
이실장
이실장2y ago
아직 계약 전이시군요..
토스페이먼츠 BOT
토스페이먼츠 결제연동팀
빠르고 정확한 결제연동 경험을 위해, 디스코드에서는 기술 문의만 받고 있습니다. 계약 및 운영 관련 문의는 1544-7772나 홈페이지 상담을 이용해주세요. 감사합니다.
토스페이먼츠 BOT
토스페이먼츠 결제연동팀
계약 전 결제위젯 테스트 안내
현재 결제위젯은 계약이 완료된 이후에 사용이 가능합니다. 계약 이전에는 아래 Key를 이용해 테스트 가능합니다.
clientKey : test_ck_D5GePWvyJnrK0W0k6q8gLzN97Eoq
secretKey : test_sk_zXLkKEypNArWmo50nX3lmeaxYG5R
clientKey : test_ck_D5GePWvyJnrK0W0k6q8gLzN97Eoq
secretKey : test_sk_zXLkKEypNArWmo50nX3lmeaxYG5R
admin은 아래 링크에서 체험해 보실 수 있어요! (위 apiKey와 연동되지 않습니다) https://consumer.tosspayments.com/ex/payment-widget?device=MOBILE
정채은
정채은OP2y ago
헉 ㅜㅜ 그 부분을 놓쳤었네요..!
package com.example.festo.customer_ui.home

import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import com.example.festo.R
import com.tosspayments.paymentsdk.PaymentWidget

class TosspayActivity : AppCompatActivity() {
private lateinit var paymentWidget: PaymentWidget

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_tosspay)

paymentWidget = PaymentWidget(
activity = this,
clientKey = "test_ck_D5GePWvyJnrK0W0k6q8gLzN97Eoq",
customerKey = "testtest"
)



}
}
package com.example.festo.customer_ui.home

import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import com.example.festo.R
import com.tosspayments.paymentsdk.PaymentWidget

class TosspayActivity : AppCompatActivity() {
private lateinit var paymentWidget: PaymentWidget

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_tosspay)

paymentWidget = PaymentWidget(
activity = this,
clientKey = "test_ck_D5GePWvyJnrK0W0k6q8gLzN97Eoq",
customerKey = "testtest"
)



}
}
클라이언트키를 바꾸고 다시 실행했는데 여전히 하얀화면만 나옵니다 ㅜ
<?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 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파일은 이렇게 되어있습니다...
이실장
이실장2y ago
확인되는 로그는 없나요? setContentView(R.layout.activity_tosspay) 이게 맞나요? android:id="@+id/payment_widget" 아 해당 부분은 상관없겠군요..
정채은
정채은OP2y ago
네네 로그도 깨끗한것같고 레이아웃도 잘 부르고있는것같습니다 ..ㅜ
이실장
이실장2y ago
js console로 돌아오는 에러는 없나요? 일단 저희도 한번 볼게요.
정채은
정채은OP2y ago
js console을 확인하는 플러그인이 설치가 안되고있어서 다시 한번 해보겠습니다! 바쁘실텐데 감사합니다 ㅜ
이실장
이실장2y ago
Log cat에 JS관련 에러도 보이긴 할거에요 예를 들면 devDebug상태로 저희 샘플앱 빌드하고, 결제위젯 창 접속시 "인증되지 않은 클라이언트 키입니다" 에러가 보일겁니다.
정채은
정채은OP2y ago
openGL을 렌더하는 과정에서 Unable to match the desired swap behavior. 이런 오류가 나오는데 혹시 이 부분이 문제일까요?
이실장
이실장2y ago
렌더링할 때 사용하신 주문번호가 어떻게 되세요 customerKey도 쓰셨으면 같이 전달해주시겠어요
정채은
정채은OP2y ago
주문번호는 쓴적이 없는것같고 customerKey도 지금 testtest 로 아무값이나 작성해주었습니다..!
이실장
이실장2y ago
customerKey 정확히 testtest 를 사용하셨단건가요? 정확한 값을 말해주세요. 요청들어온게 하나도 없네요
정채은
정채은OP2y ago
네네
package com.example.festo.customer_ui.home

import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import com.example.festo.R
import com.tosspayments.paymentsdk.PaymentWidget

class TosspayActivity : AppCompatActivity() {
private lateinit var paymentWidget: PaymentWidget

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_tosspay)

paymentWidget = PaymentWidget(
activity = this,
clientKey = "test_ck_D5GePWvyJnrK0W0k6q8gLzN97Eoq",
customerKey = "testtest"
)



}
}
package com.example.festo.customer_ui.home

import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import com.example.festo.R
import com.tosspayments.paymentsdk.PaymentWidget

class TosspayActivity : AppCompatActivity() {
private lateinit var paymentWidget: PaymentWidget

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_tosspay)

paymentWidget = PaymentWidget(
activity = this,
clientKey = "test_ck_D5GePWvyJnrK0W0k6q8gLzN97Eoq",
customerKey = "testtest"
)



}
}
액티비티에서 paymentWidget을 작성하며 customerKey값으로 testtest를 작성해주었습니다
이실장
이실장2y ago
일단 이상으은 없네요. 보니까.. render함수를 안넣어주셨어요. PaymentWidget은 선언.. 뒤에 setMethodWidget 및 render까지 해주셔야해요
private lateinit var paymentWidget: PaymentWidget

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)

paymentWidget = PaymentWidget(
activity = this@TosspayActivity,
clientKey = "test_ck_D5GePWvyJnrK0W0k6q8gLzN97Eoq",
customerKey = "tosspayment",
)
val methodWidget = findViewById<PaymentMethodWidget>(R.id.payment_widget)

paymentWidget.setMethodWidget(methodWidget)

paymentWidget.renderPaymentMethodWidget(
amount = 1000,
orderId = "toss106923984729847289"
)

}
private lateinit var paymentWidget: PaymentWidget

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)

paymentWidget = PaymentWidget(
activity = this@TosspayActivity,
clientKey = "test_ck_D5GePWvyJnrK0W0k6q8gLzN97Eoq",
customerKey = "tosspayment",
)
val methodWidget = findViewById<PaymentMethodWidget>(R.id.payment_widget)

paymentWidget.setMethodWidget(methodWidget)

paymentWidget.renderPaymentMethodWidget(
amount = 1000,
orderId = "toss106923984729847289"
)

}
@정채은
정채은
정채은OP2y ago
ㅜㅜㅜㅜ드디어 결제위젯이 떴어요!!!!!! 감사합니다 ㅜㅜ
정채은
정채은OP2y ago
No description
정채은
정채은OP2y ago
혹시 여기서는 버튼같은게 더이상 없는걸까요!!
이실장
이실장2y ago
버튼은 직접 구현해주셔야해요. 해서 이벤트 잡아서 requestPayments 메소드 사용해주시면 됩니다.
정채은
정채은OP2y ago
아하 감사합니다 ㅜㅜㅜ 구현해서 꼭 성공시키도록 하겠습니다! 감사합니다!
토스페이먼츠 BOT
❤️ 기술문의 경험이 어떠셨나요?!
간단히 코멘트 남겨주세요! 제품 발전에 큰 힘이 됩니다.

Did you find this page helpful?