[IAP] 3. 결제 요청

arkive dev·2024년 9월 2일

IAP(in-app-purchase)

목록 보기
3/4

유저가 구입할 상품을 선택했을 때, 결제 요청 보내기

2. Requesting purchase


a. Store에 결제 요청을 보낸다.

유저가 결제하기 버튼을 누르면, 클라이언트는 buyConsumable() 함수를 통해 Store에 결제 요청을 보냅니다.
유저를 조금 더 명확하게 식별하기 위해 applicationUserName 데이터를 지정해줍니다.
지정하지 않으면 나중에 서버에서 거래 내역을 찾거나 유저를 식별할 때, 조금 번거로울 수 있습니다.
parameter 타입은 PurchaseParam 입니다.

b. 결제 상태에 대한 알림을 수신 받습니다.

[Frontend]

스토어에서 트랜잭션 업데이트를 수신하고, 이를 핸들링하기 위해 trandsaction listener를 등록합니다.

listener 를 통해 결제 상태를 수신합니다.

[결제 Status]

PurchaseStatus.purchased //결제 완료
PurchaseStatus.canceled  //결제 취소
PurchaseStatus.error     //결제 오류
PurchaseStatus.restored  // 결제 복원

정상적으로 구매가 완료되었다면, 결제 상태는 PurchaseStatus.purchased로 수신됩니다.
결제 완료 후, 클라이언트는 서버로 영수증 검증 요청을 보내야 합니다.



[Backend]

백엔드는 결제 정보에 대한 알림을 server notification API 를 통해 수신 받습니다.
결제가 진행될 때, 서버는 두 가지 일을 병행해야 합니다.

1. 클라이언트로부터 영수증 정보를 받는다.
2. Store로부터 해당 거래에 대한 정보가 담긴 알림을 수신 받는다.

영수증 정보에 담긴 originalTransactionId (원거래 ID)로 Store에 검증 요청을 보낸 후, 검증 결과를 클라이언트에 전달합니다.
해당 내용은 '영수증 검증' 단계에서 다시 다루겠습니다.





작성자: Leo


[참고 문서]
https://pub.dev/packages/in_app_purchase
https://developer.apple.com/documentation/appstoreservernotifications/app_store_server_notifications_v2
https://eunjo-princess.tistory.com/19

0개의 댓글