9

Tôi đang triển khai kịch bản đăng ký tự động tái tạo, nơi xác thực biên nhận sẽ được xử lý bởi mã phía máy chủ của tôi. Theo sau documentation của Apple, tôi sẽ lấy dữ liệu biên nhận từ NSBundle và chuyển dữ liệu đó đến máy chủ của tôi, liên hệ với Apple để xác thực biên lai và thông báo cho ứng dụng về kết quả.Đăng ký tự động tái tạo iOS: luồng xác thực biên nhận

Bây giờ câu hỏi của tôi có liên quan đến dòng cần thiết liên quan đến xác nhận nhận:

  1. Nếu người dùng mua một thuê bao, tiếp nhận của tôi sẽ được tự động cập nhật các thông tin từ mua đó? Nếu vậy, có cần phải xác thực rằng biên nhận ngay sau khi mua hàng hoặc tôi có nên "mở khóa" ứng dụng ngay lập tức không?

  2. Trong trường hợp nào biên nhận của tôi bị thiếu trong số NSBundle? Nếu điều đó xảy ra, tôi cho rằng tôi nên sử dụng SKReceiptRefreshRequest để làm mới biên nhận và gửi cho máy chủ để xác thực.

  3. Nếu người dùng cài đặt ứng dụng trong một thiết bị khác và khôi phục các giao dịch mua của mình restoreCompletedTransactions tôi có tự động nhận được biên lai cùng một lúc không? Tôi cho rằng tôi cần xác thực biên nhận sau khi khôi phục để đảm bảo có đăng ký đang hoạt động, đúng không?

  4. Khi máy chủ của tôi cố gắng xác thực biên nhận và biên nhận đó không hợp lệ, điều gì sẽ xảy ra ở phía ứng dụng? Làm mới biên nhận (sẽ yêu cầu người dùng xác thực) và chuyển nó tới máy chủ một lần nữa để xác thực lại mới?

+0

Rui, bạn đã tìm ra những điểm yếu trong điều này chưa? Sẽ tốt hơn nếu bạn (hoặc ai đó khác) có thể cung cấp câu trả lời cho câu hỏi này. –

Trả lời

7

Nếu người dùng mua một thuê bao, tiếp nhận của tôi sẽ được tự động cập nhật các thông tin từ mua đó?

Có, biên nhận về bản chất là tệp được lưu trữ trên thiết bị, sau khi mua tệp biên nhận được cập nhật và nối với giao dịch mới nhất.

Nếu có, cần xác thực biên lai đó ngay sau khi mua hàng hoặc tôi có nên "mở khóa" ứng dụng ngay lập tức không?

Điều này tùy thuộc vào mức độ liên quan của bạn với gian lận. Có rất nhiều công cụ có sẵn để bẻ khóa mua hàng trong ứng dụng trên các thiết bị bị hỏng và không xác thực có thể cho phép người dùng truy cập nội dung của bạn miễn phí. Nếu đây là sự cố, hãy xác thực biên lai của bạn trước khi mở khóa nội dung.

Trong trường hợp nào biên nhận của tôi bị thiếu trong NSBundle?

Nếu ở giữa giao dịch mua người dùng mất kết nối, dữ liệu biên nhận có thể không tải xuống hoàn toàn, để lại cho bạn biên nhận chưa hoàn chỉnh. Tôi nghi ngờ có những tình huống khác, nhưng tôi đã không đi qua bất kỳ của bản thân mình.

Nếu điều đó xảy ra, tôi cho rằng tôi nên sử dụng SKReceiptRefreshRequest để làm mới biên nhận và gửi đến máy chủ để xác thực.

Có, tuy nhiên, hãy nhớ điều này sẽ chỉ cập nhật tệp nhận, sau đó bạn sẽ cần gọi lại appStoreReceiptURL để nhận biên lai từ tệp.

Nếu người dùng cài đặt ứng dụng trong một thiết bị khác và khôi phục mua hàng của mình khôi phụcCompletedTransactions Tôi có tự động nhận được biên lai cùng một lúc không?

Tệp biên nhận sẽ được cập nhật nhưng bạn cần phải gọi appStoreReceiptURL để nhận biên nhận.

Tôi cho rằng tôi cần xác thực biên lai sau khi khôi phục để đảm bảo có đăng ký đang hoạt động, đúng không?

Yup, ý tưởng hay.

Khi máy chủ của tôi cố gắng xác thực biên nhận và biên nhận đó không hợp lệ, điều gì sẽ xảy ra ở phía ứng dụng? Làm mới biên nhận (sẽ yêu cầu người dùng xác thực) và chuyển nó tới máy chủ một lần nữa để xác thực lại mới?

Tôi sẽ thông báo cho người dùng rằng bạn không cho rằng biên nhận hợp lệ và cung cấp tùy chọn thử lại. Gọi số SKReceiptRefreshRequest, gửi lại biên nhận đến máy chủ của bạn. Hiển thị lại tùy chọn nếu nó không thành công.

Nếu người dùng đã mua hàng gian lận, tôi nghi ngờ họ sẽ phàn nàn với bạn hoặc Apple.

Các vấn đề liên quan