paymentMethod
[VERBOSE-2:dart_vm_initializer.cc(41)] Unhandled Exception: PlatformException(evaluateJavaScript_failed, Failed evaluating JavaScript, JavaScript string was: ' var clientKey = 'test_sk_5OWRapdA8dYQN4z20vP3o1zEqZKL';
var tossPayments = TossPayments(clientKey);
tossPayments.requestPayment('카드', {"paymentMethod":"카드","amount":100,"orderId":"tosspayments-202303210239","orderName":"toss t-shirt","successUrl":"tosspayments://payment/flutter/success","failUrl":"tosspayments://payment/flutter/fail","customerName":"김토스","customerEmail":"toss@toss-payments.co.kr"});
'
Error Domain=WKErrorDomain Code=5 "JavaScript execution returned a result of an unsupported type" UserInfo={NSLocalizedDescription=JavaScript execution returned a result of an unsupported type}, null)
#0 StandardMethodCodec.decodeEnvelope
message_codecs.dart:652
#1 MethodChannel._invokeMethod
flutter에서 결제 화면한번보는게 소원인데 이런 에러가 자꾸 납니다..
왜이러는건가요? 분명히 양식은 다 맞게했는데..
아니면 혹시 sdk도 웹뷰로 띄워야하나요?36 Replies
⏳ 잠시만 기다려주세요! 곧 답변드리겠습니다
오류 문의일 경우 아래 정보를 미리 전달해주시면, 빠른 답변에 도움이 됩니다.
- 주문번호(orderId) :
- 문의 내용 :
(img를 함께 첨부해주시면 도움이됩니다)
* 계약관련 내용은 1544-7772로 문의주세요.
* 주말/공휴일에는 답변이 늦을 수 있어요.
토스페이먼츠 공식 Flutter 가이드를 참조하고 계신가요?
아니면, 단순 연동가이드에 공개된 jsSDK 를 이용하셨나요?
공식 Flutter 가이드인지는 모르겠지만 pub에 있는 readme를 보고 clientkey만 바꾸고 그대로 넣어서 테스트해봤습니다! tosspayments_sdk_flutter: ^0.1.11 를 사용했어요
참고하신 가이드 링크를 공유해 주세요.
Dart packages
tosspayments_sdk_flutter | Flutter Package
This SDK helps you easily link the 'toss payments' payment module on the flutter.
https://pub.dev/packages/tosspayments_sdk_flutter/versions
여기에 가시면 버전 다운로드 할 수 있는데,
다운로드 후에 압축을 풀면 example 폴더가 있습니다.
example 폴더에 구현된 내용 확인 하시면 도움이 되실 듯 합니다.
Dart packages
tosspayments_sdk_flutter package - All Versions
Pub is the package manager for the Dart programming language, containing reusable libraries & packages for Flutter and general Dart programs.
clientKey에 secretKey를 넣으셨네요..
clientKey에는 ck가 포함된 Key를 넣어서 사용해주세요
아 다 해봤는데 안되서 여러번 시도해본거였거든요 한번더 해보겠습니다!
❤️ 기술문의 경험이 어떠셨나요?!
간단히 코멘트 남겨주세요! 제품 발전에 큰 힘이 됩니다.
readme 코드인데 혹시 올려주셨던 example처럼 라우터 설정까지 마쳐야 코드가 돌아가는건가요?
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:tosspayments_sdk_flutter/model/tosspayments_result.dart';
import 'package:tosspayments_sdk_flutter/tosspayments_sdk_flutter.dart';
import 'package:tosspayments_sdk_flutter/model/paymentData.dart';
class Payment extends StatelessWidget {
@override
Widget build(BuildContext context) {
return TossPayments(
apiKey: "##TODO clientKey 입력 ##,"
data: PaymentData(
paymentMethod: '카드',
orderId: 'tosspayments-202303210239',
orderName: 'toss t-shirt',
amount: 50000,
customerName: '김토스',
customerEmail: 'toss@toss-payments.co.kr'
),
success: (Success success) {
Get.back(result: success);
},
fail: (Fail fail) {
Get.back(result: fail);
};
);
}
}
저는 이것만 쳐서 했었거든여라우터설정이라는게 무슨말씀이시죠
지금 어느단계에서 막히시는걸까요?
요렇게까지 다 해야하는건가싶어서요
void main() {
runApp(const TosspaymentsSampleApp());
}
class TosspaymentsSampleApp extends StatelessWidget {
/// Creates a TosspaymentsSampleApp.
const TosspaymentsSampleApp({Key? key}) : super(key: key);
/// Describes the part of the user interface represented by this widget.
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Tosspayments Flutter Sample',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: const TosspaymentsSampleHome(title: 'Tosspayments Flutter Sample'),
);
}
}
class TosspaymentsSampleHome extends StatefulWidget {
const TosspaymentsSampleHome({Key? key, required this.title})
: super(key: key);
final String title;
@override
State<TosspaymentsSampleHome> createState() => _TosspaymentsSampleHomeState();
}
/// Describes the part of the user interface represented by this widget.
///
/// This function returns a [GetMaterialApp] with the [primaryColor] theme.
@override
Widget build(BuildContext context) {
SystemChrome.setSystemUIOverlayStyle(const SystemUiOverlayStyle(
systemNavigationBarColor: Colors.transparent,
statusBarColor: Colors.transparent,
));
SystemChrome.setEnabledSystemUIMode(SystemUiMode.edgeToEdge);
return GetMaterialApp(
initialRoute: '/',
theme: ThemeData(
primaryColor: primaryColor,
),
getPages: [
GetPage(name: '/', page: () => const Home()),
GetPage(name: '/result', page: () => const Result())
],
);
}
}`
저는 아까 거기서 막혀있습니다..
clientKey를 넣었는데 안되서 알아보는중이에요
example앱은 실행되셨죠?
프로젝트여니깐 이렇게 되길래.. 일단 읽고만 있었어요

계약은 완료되셨을까요?
추가로 flutter 개발이 처음이실까요?
example앱 다시 다운받아서 flutter get 하니 잘됩니다!
궁금한게 있습니다 저희 서비스에서 자체 쿠폰이나 포인트가 존재하는데 이건 payment객체로 전달하지않는건가요? 쿠폰이나 포인트는 어떤식으로 가맹점서버까지 전달되는지 궁금합니다!
결제 요청시 가격에서 차감해서 요청하시면 됩니다.
결제 요청 할 때 가맹점 쪽 세션 같은데에 자체 쿠폰/포인트 사용 정보를 저장해 두고 사용하셔야 할거에요
아 그럼 토스페이먼츠와 관계없이 가맹점 서버에서 관련api가 있어야 하겠군요?
네 그런것으로 알고있습니다.
리액트 프로젝트를 봤는데 혹시 이건 뭔지 아시나요?

결제 가격의 변동이 생겼을 때 그 사유를 지정하는 부분입니다.
GitHub
payment-widget-sample/react/src/pages/Checkout.tsx at main · tosspa...
토스페이먼츠 결제위젯 샘플 앱입니다. . Contribute to tosspayments/payment-widget-sample development by creating an account on GitHub.
@개미는뚠뚠
그럼 사진속 객체는 가맹점 서버까지 넘어가는 데이터는 아닌거고 토스페이먼츠 내에 결제내역에 찍히게되는 데이터인가요?
저렇게 사유를 지정하면 후에 어떻게 쓰이는지 궁금합니다!
후에 결제 데이터 analyse 등 통계 자료로 쓰이는 것으로 알고있습니다 (확실하진 않습니다)
deprecated된 기능입니다! docs 기준으로 parameter확인해주세요
아 감사합니다!

혹시 요기 ui 커스텀에 관한 문서가 있나요..? 아니면 커스텀이 불가능 한건가요?
결제창은 커스텀 불가합니다.
커스텀 하시려면 결제위젯을 사용하세요~
flutter는 현재 결제창으로만 연동 제공하고 있으니
참고바랍니다.
여기서 먼저 결제수단을 결정 -> 결제창 이런 식인데 혹시 이 화면에서 국민카드를 선택하고 바로 카드사 결제로 가도록 할순없는건가요?



카드사 및 간편결제 자체창 바로 열기 | 토스페이먼츠 개발자센터
카드사 및 간편결제 자체창을 연동하는 방법을 알아봅니다.
이거 참고하셔서 개발하시면 됩니다
우와 감사합니다!!