2013-07-11 48 views
5

Tôi đang phát triển một ứng dụng có biên nhận tự động gia hạn và lưu chúng trong máy chủ, tất cả đều hoạt động tốt, cho đến khi người dùng khôi phục các giao dịch mua của họ - điều này gây ra các bản sao.Tiết kiệm/khôi phục biên nhận tự động gia hạn mà không trùng lặp

Trường transaction_id khác với cùng một biên nhận với mọi lần khôi phục và original_transaction_id rõ ràng là giống nhau trên mọi lần gia hạn, vì vậy tôi không thể sử dụng. Trường unique_identifier cũng giống nhau (Tôi không hiểu nó độc đáo như thế nào). Tôi đã sử dụng trường web_order_line_item_id và nó có vẻ tốt, nhưng tôi chỉ thử nghiệm điều này với một tài khoản hoàn toàn mới, và kết thúc với một bản sao, do đó, đó là vô dụng quá.

Tôi thiếu điều gì đó thực sự rõ ràng ở đây? Phải có một trường duy nhất cho mỗi biên nhận, nhưng không thay đổi mỗi khi nó được khôi phục?

+0

Vì bạn lưu biên nhận vào máy chủ của mình, tại sao bạn không chỉ lấy lại biên lai từ máy chủ? – rocky

+0

Tôi làm cho hầu hết các trường hợp sử dụng, nhưng tôi cần cho phép người dùng khôi phục các giao dịch mua trên thiết bị mới hoặc khôi phục. –

+0

Tôi giả sử bạn có một số loại thông tin đăng nhập được liên kết với đăng ký tự động gia hạn của bạn. Và tôi cũng giả sử bạn liên kết thông tin đăng nhập với biên nhận bạn lưu trên máy chủ của mình. Với ý nghĩ đó, nó không quan trọng nếu một thiết bị mới hoặc được khôi phục. Bất cứ khi nào người dùng đăng nhập, bạn có thể truy vấn máy chủ của mình để nhận và gửi lại. Giả định của tôi có sai không? – rocky

Trả lời

3

Rõ ràng original_transaction_idpurchase_date là hai giá trị duy nhất sẽ không thay đổi sau khi khôi phục mua hàng. Bạn cũng có thể dựa trên latest_receipt_info -> web_order_line_item_id vì nó không thay đổi giữa các lần khôi phục (không giống như latest_receipt_info -> transaction_id). Bằng cách kiểm tra latest_receipt_info bạn có thể tìm hiểu expiration_date của đăng ký, mà dường như táo tin là đủ cho bạn.