IAP (2) Making a purchase

Making a Purchase

Collecting Payment

결재를 위해 어플이 payment object 생성하여 페이먼트 큐에 ‘큐’ 한다. 그림 3-1 참조.
서버에서 paymentQueue:updatedTransaction 을 받음..
Payment 가 생성되면 persistent transaction 생성하여 갖고 있음. 지불한 후에 transaction 이 업데이트 되고 어플에서 이것을 반영하는 옵서버 구현.   옵저버는 사용자에게 구매한 아이템 제공하고 큐에서 transaction제거.

SKPayment

결재는 payment object 에서 시작.  PI와 수량 포함. 같은 객체를 한번 이상 ‘큐’ 가능. 각각은 다른 결재로 인식.
유저는 세팅에서 구매를 비활성 시킬 수 있다. 구매를 큐하기 전에, 어플은 구매가 진행될 수 있는지 확인해야 함.  [paymentQueueu :: canMakePayment] 메서드를 통해.

SKPaymentQueue

앱 스토어와 통신하는 객체. [payment]가 큐에 추가되면 스토어킷은 앱 스토어에 요청 전송. 스토어킷이 사용자가 결재를 확인하는 대화상자 제공. 완성된 결재는 옵서버에 리턴함.

SKPaymentTransaction

구매 시 생성. 어플이 transaction 의 상태를 결정하도록 하는 속성을 갖고 있다. 결재가 성공하면 성공에 관한 디테일 정보를 담는다. 큐에 지연된 액션을 물어볼 수 있지만, 옵서버가 기다리는 게 일반적.

SKPaymentTransactionObserver 프로토콜

어플이 구현하여 옵서버에 등록. 옵서버의 주된 임무는 완성된 액션을 검사하고 구매한 아이템을 유저에게 전달하며 큐에서 제거.
사용자가 아이템 구매를 시도할 때까지 기다리기 보다,  어플 런칭 시 큐와 옵서버와 연결되어 있어야 한다. 어플이 끝날 때 트랜잭션은 잃지 않음. 다음에 런칭할 때 스토어 킷은 트랜잭션 재개.  어플 초기화 시 옵저버 추가는 모든 트랜잭션이 어플에 돌아왔는 지 확인한다.

Restoring Transactions

액션이 진행되서 큐에서 제거되면 다시 볼 수 없다. 하지만, 어플이 결과를 저장해야 할 속성이 있으면 그 인터페이스를 구현해야 한다. 이 인터페이스는 다른 기기에 제품을 추가할 수 있으며, 기기가 지워지면, 원 기기에서 거래를 복구할 수 있다.
스토어킷은 비-소비성 제품, 오토-리뉴어블 구독,  프리-구독 에 대해 빌트-인 복구 기능 지원.
트랜잭션을 복구하려면 당신 어플은 큐의 restoreCompleltedTransactions 메서드 콜. 큐는 앱 스토어에 복구위한 요청을 보냄. 앱스토어는 새로운 트랜잭션 복구를 생성. 복구 트랜잭션 객체의 originalTransaction은 원래의 정보를 담고 있다.  어플에서는 이것을 통해 구매한 아이템을 풀어준다.  스토어킷이 복구를 마친 후 큐 옵서버에 paymentQueueRestoreCompletedTransactionsFinished: 메서드를 보낸다.

유저가 복구가능한 아이템을 구매하려고 하면  (당신이 구현한 복구 인터페이스 대신) 보통 트랜잭션을 받는다. 하지만, 유저는 같은 아이템에 대해 다시 과금 받지는 않는다. 당신 어플은 이 액션을 원래 액션과 똑같이 취급해야 한다.

넌-리뉴잉 구독, 소비성 제품은 복구되지 않는다. 하지만, 넌-리뉴잉은 복구되야 한다. 이것은 당신 서버에서 알아서 해라.

Advertisements

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

%s에 연결하는 중