// 카스텀 웹뷰 widget을 포함하는 widget
class TossPayment extends StatelessWidget {
final Widget? initialChild;
final String clientKey;
final PaymentData? data;
final callback;
final Set<Factory<OneSequenceGestureRecognizer>>? gestureRecognizers;
TossPayment({
Key? key,
this.initialChild,
required this.clientKey,
required this.data,
required this.callback,
this.gestureRecognizers,
}) : super(key: key);
@override
Widget build(BuildContext context) {
var redirectUrl = UrlData.redirectUrl;
return TossPaymentsWebView(
type: ActionType.payment,
initialChild: this.initialChild,
gestureRecognizers: this.gestureRecognizers,
executeJS: (WebViewController controller) {
controller.runJavascript('''
var tossPayments = TossPayments("${this.clientKey}");
tossPayments.requestPayment("카드", ${jsonEncode(this.data?.toJson())})
''');
},
customPGAction: (WebViewController controller) {
return null;
},
useQueryData: (Map<String, String> data) {
this.callback(data);
},
isPaymentOver: (String url) {
if (url.startsWith(redirectUrl)) {
return true;
}
return false;
},
);
}
}
// 카스텀 웹뷰 widget을 포함하는 widget
class TossPayment extends StatelessWidget {
final Widget? initialChild;
final String clientKey;
final PaymentData? data;
final callback;
final Set<Factory<OneSequenceGestureRecognizer>>? gestureRecognizers;
TossPayment({
Key? key,
this.initialChild,
required this.clientKey,
required this.data,
required this.callback,
this.gestureRecognizers,
}) : super(key: key);
@override
Widget build(BuildContext context) {
var redirectUrl = UrlData.redirectUrl;
return TossPaymentsWebView(
type: ActionType.payment,
initialChild: this.initialChild,
gestureRecognizers: this.gestureRecognizers,
executeJS: (WebViewController controller) {
controller.runJavascript('''
var tossPayments = TossPayments("${this.clientKey}");
tossPayments.requestPayment("카드", ${jsonEncode(this.data?.toJson())})
''');
},
customPGAction: (WebViewController controller) {
return null;
},
useQueryData: (Map<String, String> data) {
this.callback(data);
},
isPaymentOver: (String url) {
if (url.startsWith(redirectUrl)) {
return true;
}
return false;
},
);
}
}