2013-05-29 28 views
6

Tôi đang làm việc trên một ứng dụng sử dụng Thanh toán trong ứng dụng của Google Play V3 để bán một mặt hàng có giá trị trong một khoảng thời gian nhất định. Sau khi người dùng mua hàng, tôi gửi dữ liệu mua đến máy chủ của chúng tôi và ngay lập tức tiêu thụ nó, nếu thành công. Sau đó, máy chủ cấp quyền truy cập vào dịch vụ bổ sung cho người dùng cụ thể này cho đến khi giai đoạn kết thúc. Lưu ý: Tôi không sử dụng đăng ký trong ứng dụng.Tiêu thụ các giao dịch mua bị hủy trên Thanh toán trong ứng dụng của Google Play

Tôi đang thử nghiệm giao dịch mua hàng với người dùng thử nghiệm ở chế độ hộp cát nơi thanh toán không được thực hiện. Hầu hết trong số họ là thành công và dòng chảy này hoạt động tốt. Tuy nhiên, đôi khi, giao dịch mua của tôi bị Google hủy ngay lập tức. Trong lịch sử đơn hàng trong tài khoản Google Checkout của tôi, tôi thấy dòng:

"Để bảo vệ bạn, Google đã hủy đơn đặt hàng này. Giao dịch là được coi là gian lận".

Ngay cả khi điều này xảy ra, tôi thấy rằng tôi nhận được "purchaseState": 0 trong dữ liệu mua, cho thấy thành công. Ngoài ra, cố gắng tiêu thụ sản phẩm này cũng dẫn đến thành công (gọi số IInAppBillingService.consumePurchase(version, package, token) trả về 0). Truy vấn khoảng không quảng cáo của tôi sau đó cho thấy rằng tôi không có giao dịch mua (và do đó không hoàn tiền/hủy bỏ) và tôi có thể tự do mua lại cùng một mặt hàng. Đây là hành vi tương tự như trong trạng thái bình thường, chưa được kiểm soát.

  1. Google có thường xuyên hủy các đơn đặt hàng giống như cách bên ngoài hộp kiểm không?
  2. Các mặt hàng đã mua và tiêu thụ thành công vẫn có thể bị hủy (ví dụ: tiền được hoàn lại) vì lý do ngoài tầm kiểm soát của nhà phát triển không?
  3. Có thể biết về việc hủy các sản phẩm đã được tiêu thụ không?

Trả lời

1

Google có thường hủy đơn đặt hàng giống như cách bên ngoài hộp kiểm thử không?

Google có hệ thống phát hiện gian lận giúp xác định khoản thanh toán không đáng tin cậy. Ví dụ: nếu ai đó sử dụng thẻ tín dụng bị đánh cắp hoặc cùng một thẻ tín dụng được nhiều tài khoản sử dụng, v.v. Trong trường hợp này, giao dịch thanh toán sẽ dừng ngay cả trước khi nó bắt đầu (trước khi nhà cung cấp dịch vụ thanh toán được liên lạc) với thông báo trong câu hỏi của bạn. Vào tháng 5, hệ thống phát hiện gian lận này không thể phát hiện tài khoản thử nghiệm một cách đáng tin cậy, đó là lý do tại sao bạn có thể thấy thông báo này. Ngày nay nó tốt hơn một chút. Trong thực tế, điều này xảy ra rất hiếm.

Can mặt hàng được mua thành công và tiêu thụ vẫn được hủy (ví dụ: tiền hoàn trả) vì những lý do ngoài tầm kiểm soát của nhà phát triển?

Đây là một câu hỏi khó, bởi vì những gì bị hủy không phải là một mục mà là giao dịch thanh toán được liên kết với mặt hàng này. Về mặt lý thuyết, một giao dịch có thể được hủy bỏ sau đó trong thời gian, nhưng phải có một lý do chính đáng cho điều đó. Ví dụ tương tự với thẻ tín dụng bị đánh cắp có thể hợp lệ tại đây. Trong cuộc sống thực tôi chưa từng thấy trước đây.

Có thể biết về việc hủy các sản phẩm có đã được tiêu thụ chưa?

Mặc dù tôi chưa bao giờ thử bản thân mình, tôi không tin rằng sản phẩm tiêu thụ có thể bị hủy. Như tôi đã nói, một giao dịch thanh toán có liên quan có thể bị hủy, nhưng không phải là một sản phẩm được tiêu thụ. Đó là bởi vì một sản phẩm tiêu thụ có thể được bán một lần nữa và không có kết nối đến một khoản thanh toán nào được nêu ra. Nếu sản phẩm không được tiêu thụ, nếu sẽ được đưa vào trạng thái bị hủy, nếu giao dịch thanh toán được giao cho nó bị hủy.

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

+0

Nếu bạn theo dõi các mặt hàng đã mua trên máy chủ, orderId của giao dịch mua cũng là ID của giao dịch thanh toán. Bạn có thể thực hiện một số loại xác minh ngay cả khi mục đã được sử dụng. – tomrozb

0

Tôi đang thiết lập cùng một loại ứng dụng.
Người dùng có thể mua một mặt hàng, nó sẽ được theo dõi trên máy chủ của tôi và, cuối cùng được tiêu thụ, để người dùng có thể mua lại một mặt hàng tương tự.

Tôi đang theo dõi tất cả thông tin về giao dịch mua và tôi đã cố gắng hủy đơn đặt hàng đã tiêu thụ. Tôi có thể xác nhận rằng trạng thái của đơn đặt hàng sẽ thay đổi (sau 10 phút nhiều hơn hoặc ít hơn, bạn cũng sẽ nhận được email về việc hủy).

Calling url này của PurchaseAPI với productId và purchaseToken của bạn sẽ trở lại thông tin mua hàng:

https://www.googleapis.com/androidpublisher/v2/applications/<app.package.name>/purchases/products/<productId>/tokens/<purchaseToken>?access_token=<myToken> 

Lần đầu tiên bạn sẽ nhận được một câu trả lời tương tự:

{ 
    "kind": "androidpublisher#productPurchase", 
    "purchaseTimeMillis": "1458047931024", 
    "purchaseState": 0, 
    "consumptionState": 1, 
    "developerPayload": "mypurchasetoken" 
} 

và sau khi hủy các purchaseState sẽ thay đổi:

{ 
    "kind": "androidpublisher#productPurchase", 
    "purchaseTimeMillis": "1458047931024", 
    "purchaseState": 1, 
    "consumptionState": 1, 
    "developerPayload": "mypurchasetoken" 
} 

Điều này cũng tương tự GET rằng tôi làm lần đầu tiên để xác minh sản phẩm.
Có thể là khôn ngoan để thiết lập kiểm tra định kỳ trạng thái của các mặt hàng đã mua và, trong trường hợp hủy, hãy cập nhật giao dịch mua trên máy chủ.