flutter
bootpay flutter 결제 연동
이나주니
2025. 1. 3. 11:20
반응형
순서
개발 진행 -> PG 심사 -> 카드사 심사(2주~3주소요)
참고로 개발을 하다 중단이 된 상태다
이유 : 기부 목적으로 기능을 만듬, 비영리 단체가 아닌이상 기부 서비스 심사가 거절됨 (기부영수증 발행이 가능해야함)
카드사에서 배네핏을 보고 심사를해줌 (실물 상품) - 멤버십도 어려울수 있음
그렇게 인앱 결제로 전환 하기로함
일단 개발까지 한것만 기록하려고 함
회원가입
PG사 선택
참고로 나이스 페이를 신청시 카카오가 안되기 때문에 카카로 따로 신청해야함
화면에서는 카카오페이가 지원되는것으로 보이지만 사실은 아닌듯 (상담사가 따로 신청하라고함)
void bootpayTest(BuildContext context) {
Payload payload = getPayload();
if (kIsWeb) {
payload.extra?.openType = "iframe";
}
Bootpay().requestSubscription(
context: context,
payload: payload,
showCloseButton: false,
onCancel: (String data) {
print('------- onCancel: $data');
},
onError: (String data) {
print('------- onCancel: $data');
},
onClose: () {
print('------- onClose');
Bootpay().dismiss(context); //명시적으로 부트페이 뷰 종료 호출
//TODO - 원하시는 라우터로 페이지 이동
},
onIssued: (String data) {
print('------- onIssued: $data');
},
onConfirm: (String data) {
/**
1. 바로 승인하고자 할 때
return true;
**/
/***
2. 비동기 승인 하고자 할 때
checkQtyFromServer(data);
return false;
***/
/***
3. 서버승인을 하고자 하실 때 (클라이언트 승인 X)
return false; 후에 서버에서 결제승인 수행
*/
// checkQtyFromServer(data);
return true;
},
onDone: (String data) {
print('------- onDone: $data');
},
);
}
Payload getPayload() {
Payload payload = Payload();
Item item1 = Item();
item1.name = "후원"; // 주문정보에 담길 상품명
item1.qty = 1; // 해당 상품의 주문 수량
item1.id = "donation"; // 해당 상품의 고유 키
item1.price = 500; // 상품의 가격
Item item2 = Item();
item2.name = "키보드"; // 주문정보에 담길 상품명
item2.qty = 1; // 해당 상품의 주문 수량
item2.id = "ITEM_CODE_KEYBOARD"; // 해당 상품의 고유 키
item2.price = 500; // 상품의 가격
List<Item> itemList = [item1, item2];
payload.androidApplicationId = '67763....'; // android application id
payload.iosApplicationId = '677....'; // ios application id
payload.pg = 'nicepay';
payload.methods = ['card', 'phone', 'vbank', 'bank', 'kakao'];
payload.orderName = "후원"; //결제할 상품명
payload.orderId = DateTime.now().millisecondsSinceEpoch.toString();
payload.metadata = {
"callbackParam1": "value12",
"callbackParam2": "value34",
"callbackParam3": "value56",
"callbackParam4": "value78",
}; // 전달할 파라미터, 결제 후 되돌려 주는 값
payload.items = itemList; // 상품정보 배열
User user = User(); // 구매자 정보
user.username = "사용자 이름";
user.email = "user@gmail.com";
Extra extra = Extra(); // 결제 옵션
extra.appScheme = 'FlutterExample';
extra.cardQuota = '3';
// extra.openType = 'popup';
payload.user = user;
payload.extra = extra;
return payload;
}
반응형