2016-01-05 12 views
5

Chúng tôi đang sử dụng xác thực phía máy chủ để xác minh iTunes của chúng tôi khi mua ứng dụng. Khi một giao dịch được gửi đến SKPaymentTransactionObserver, chúng tôi lấy biên nhận từ appStoreReceiptURL để xác thực nó.Cách sử dụng một appStoreReceiptURL duy nhất để xác minh nhiều giao dịch StoreKit?

if let receiptPath = NSBundle.mainBundle().appStoreReceiptURL?.path where 
    NSFileManager.defaultManager().fileExistsAtPath(receiptPath), 
    let receiptData = NSData(contentsOfURL:NSBundle.mainBundle().appStoreReceiptURL!) { 
    return receiptData 
} 

Nhưng trong một số trường hợp, chẳng hạn như khi chúng ta đang khôi phục mua hàng, nhận được nhiều giao dịch với phương pháp:

public func paymentQueue(queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) 

Có vẻ như khá kỳ quặc để sử dụng các dữ liệu nhận cùng để xác minh từng giao dịch. Biên lai đơn có chứa dữ liệu về mỗi giao dịch không?

Trả lời

9

Hoá đơn có chứa dữ liệu về từng giao dịch không?

Có. Biên nhận được truy cập từ appStoreReceiptURL là một biên nhận duy nhất cho tất cả giao dịch có thể tồn tại cho người dùng và ứng dụng.

Docs on In-app purchase receipt

Các trong ứng dụng hoá đơn mua hàng cho một sản phẩm tiêu hao sẽ được thêm vào hóa đơn khi mua hàng được thực hiện. Nó được giữ trong biên lai cho đến khi ứng dụng của bạn hoàn tất giao dịch đó. Sau thời điểm đó, nó sẽ bị xóa khỏi biên nhận vào lần tiếp theo biên lai được cập nhật — ví dụ: khi người dùng thực hiện giao dịch mua khác hoặc nếu ứng dụng của bạn làm mới hóa đơn một cách rõ ràng.

Biên lai mua hàng trong ứng dụng cho sản phẩm không tiêu hao, đăng ký tự động gia hạn, đăng ký không gia hạn hoặc đăng ký miễn phí vẫn còn trong biên nhận vô thời hạn.

I.e. tất cả các giao dịch mua trong ứng dụng bao gồm gia hạn đăng ký và mua hàng đã được khôi phục và không bao gồm giao dịch mua đã tiêu dùng tạo giao dịch mới và được lưu trữ trong biên nhận.

Docs on Working with Subscriptions:

Sau một thuê bao được gia hạn thành công, Cửa hàng Kit cho biết thêm một giao dịch cho công cuộc đổi mới vào hàng đợi giao dịch. Ứng dụng của bạn kiểm tra hàng đợi giao dịch khi khởi chạy và xử lý việc gia hạn giống như bất kỳ giao dịch nào khác.

Docs on Restoring Purchased Products:

Khôi phục giao dịch hoàn thành sẽ tạo ra một giao dịch mới cho mỗi giao dịch hoàn tất việc sử dụng thực hiện.

Lưu ý rằng original transaction id sẽ giống nhau cho các lần mua hàng đã được khôi phục và gia hạn đăng ký.

Biên nhận về cơ bản là tệp được lưu trữ trên thiết bị mà ứng dụng cập nhật khi có giao dịch mới được thêm vào.

+0

Trên ghi chú có liên quan, cách chúng tôi theo dõi đăng ký tự động tái tạo trên các thiết bị? Đó là nếu người dùng đã mua đăng ký trên iPad, họ có nhận được giao dịch cập nhật trên iPhone của họ không? Hay họ sẽ phải khôi phục việc mua hàng? –

+0

Bạn sẽ cần phải cung cấp tùy chọn mua lại khôi phục (dù sao đi nữa, đây cũng là yêu cầu của Apple).Sau khi khôi phục ứng dụng trên thiết bị mới sẽ có biên nhận. –

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