2015-06-30 21 views
7

Tôi đang phát triển một ứng dụng iOS sử dụng dịch vụ mua hàng trong ứng dụng của Apple. Tôi cũng đang phát triển một dịch vụ phụ trợ PHP, khi mua, nhận được chuỗi nhận được mã hóa, xác nhận hợp lệ với các máy chủ xác thực của Apple và lưu bản ghi mua hàng trong DB.iOS + PHP - Trích xuất tổng số tiền từ Apple IAP

Tôi muốn biết, từ phía máy chủ, giá của sản phẩm hoặc tổng số tiền mà người dùng thực sự đã trả cho sản phẩm.

Tôi muốn nhận được kết quả bằng USD, nhưng bất kỳ đơn vị tiền tệ nào cũng sẽ tuyệt vời miễn là tôi có thể biết được loại tiền tệ nào (tức là ký hiệu tiền tệ như một phần của chuỗi).

Đối tượng JSON trả về từ quá trình xác thực không chứa tổng số tiền đã được thanh toán trong giao dịch hoặc giá của sản phẩm. Có cách nào để nhận thông tin này từ chuỗi nhận không? Hoặc có lẽ từ ID sản phẩm hoặc ID giao dịch (cả hai có thể được trích xuất từ ​​biên nhận)? Hay thông tin này phải được cung cấp bởi ứng dụng?

Cảm ơn !!

Trả lời

0

Chỉ trong trường hợp có ai quan tâm, sau khi một số chi tiết đào bới xung quanh internet - có vẻ như không thể ...

Vì vậy, tôi chỉ cần gửi mức giá mà được trả bởi người sử dụng (được lưu trữ trong đối tượng SKProduct), bằng nội tệ, cùng với biên lai, tới máy chủ. Trên máy chủ, tôi chuyển đổi giá đã gửi sang USD và lưu nó.

Một phương pháp khác mà tôi đã xem xét là lưu trữ JSON trên máy chủ với tất cả ID sản phẩm làm khóa và giá của chúng bằng USD dưới dạng giá trị. Sau đó, khi nhận được xác thực, tôi có thể lấy ID sản phẩm từ biên nhận và giá từ JSON. Xin lưu ý rằng giải pháp này có thể không cung cấp cho bạn số tiền chính xác mà người dùng thực sự đã thanh toán, bởi vì giá sản phẩm và thuế có thể hơi khác nhau giữa các cửa hàng ứng dụng ở các quốc gia khác nhau. Giải pháp này chỉ tốt cho việc ước tính giá.

Hy vọng điều này sẽ hữu ích!

0

Theo như tôi biết, số tiền thực tế được thanh toán không được bao gồm trong biên nhận (các khóa được liệt kê here).

Tuy nhiên, giá được bao gồm trong đối tượng SKProduct và mã nhận diện sản phẩm có sẵn trong biên lai, vì vậy bạn có thể gửi tất cả giá đến máy chủ của mình khi bạn gửi biên lai và sử dụng mã nhận diện sản phẩm trong biên lai để nhận giá tương ứng.

- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response { 

    NSMutableDictionary *prices = [NSMutableDictionary dictionary]; 
    for (SKProduct *product in [response products]) { 

     NSString *productIdentifier = [product productIdentifier]; 
     NSDecimalNumber *price = [product price]; 
     NSLocale *priceLocale = [product priceLocale]; 

     prices[productIdentifier] = @[price, priceLocale]; 
    } 

    // keep these in memory and send them with the receipt 
} 
+0

Tôi đã thực sự nghĩ về một cái gì đó như thế này - lưu trữ giá bằng USD trong cấu hình máy chủ JSON. Một giải pháp như thế này có vẻ hơi cẩu thả ở quy mô. Quá nhiều dữ liệu được truyền, quá nhiều bản sao của cùng một dữ liệu, quá nhiều tìm kiếm trong mảng/băm, v.v ... Tôi hiện chỉ gửi số tiền đã được thanh toán từ khách hàng (bằng nội tệ) và chuyển đổi nó trên máy chủ. – orenk86

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