Thursday, August 18, 2011

Test in-app purchase測試你的內部應用程式購買機制

在使用測試in-app purchase時,
有以下幾點需注意︰
1.官方強調︰測試in-app purchase(以下簡稱iap)請勿使用模擬器!
2.如果你要測試的是預保留產品ID(reserved product IDs),那就不需要使用測試帳號。如︰android.test.purchased這組預設ID是讓你拿來測試購買後會發生哪些回傳值。
3.確認你裝置上的Android Market版本是否適合運行iap


真實測試你的iap物品
1.需要在軟體發佈網站裡記錄一組測試帳號

2.上傳的apk不需要被發佈,但是iap內的物品必須被發佈!
注意︰Android Market上面這個未發佈的apk的版本編號以及簽章(Signature)需以裝置上的版本一致
3.購買時帳目會真實被記進tester的Google checkout裡,
之後user跟開發者提出退費請求(可能寄e-mail或什麼的),
開發者就可以在Google Checkout Merchant account使用退費機制(refund)。

此時Google checkout會寄出該user已經退費的訊息給Android Market,
Android Market再寄出訊息給user手上的應用程式。
如果你的應用程式當初有寫收到退費的訊息時要做什麼處置,
那麼程式就會在這個時候開始動作。
譬如︰沒收紅藥水、魔法藥水。


4.請用釋出版本的signature,而非debug的signature
5.將一臺裝置的帳號設成測試帳號

  1. Open Settings on your device.打開裝置裡的設定
  2. Touch Privacy.點擊隱私設定
  3. Touch Factory data reset.點擊重設為原廠設定
  4. Touch Reset phone.點擊重設手機按鈕
Note: The only way to change the primary account on a device is to do a factory reset, making sure you log on with your primary account first.
將測試帳號設為主帳號的唯一方式,就是使用重設為原廠設定。
這樣做才能確保你是用主帳號登入Android Market

========實測結果=========
1.當你真的去買了iap內的東西,測試帳號裡的Google Checkout裡會有消費記錄
2.若馬上移除掉apk,這筆iap消費記錄也會馬上被退款(未免也太迅速了吧⋯)
3.若你要重新購買時,Android Market的iap視窗會回應你︰系統正在處理您的訂單,稍候幾分鐘即可取得您的商品。

4.後來,過了40分鐘,才能又購買這筆iap的產品

3 comments:

  1. 07-13 14:53:33.768: E/Volley(10194): [16] BasicNetwork.performRequest: Unexpected response code 500 for https://android.clients.google.com/fdfe/completePurchase
    07-13 14:53:33.778: W/Finsky(10194): [1] CheckoutPurchase.onErrorResponse: DisplayErrorMessage[系统无法处理您的订单,请重试。]
    07-13 14:53:33.778: E/Finsky(10194): [1] CheckoutPurchase.setError: type=UNKNOWN, code=-1, message=系统无法处理您的订单,请重试。
    07-13 14:53:33.868: D/Finsky(10194): [1] CarrierProvisioningAction.run: No need to fetch provisioning from carrier.

    你好,我测试应用程式内付费时总是返回以上信息,请问你有遇见这种现象吗?在google给的样例中需要修改或注意哪些细节,期待你的帮助,谢谢。

    ReplyDelete
  2. 您好,我在測試iap的時候,發現android.test.purchased , android.test.canceled ,
    android.test.refuned ,
    都會有正常的反應,但是執行potion 或是 sword 的交易在按下接受且付款之後
    他會顯示"完成中" 接著就會跳出一個錯誤視窗 "無法處理您的訂單,請再試一次"
    可是再試幾次都是這樣呢,請問您知道這是什麼問題嗎?
    ps. 手機的prime account跟發佈app的帳號一樣,只是把這個帳號加入倒test account裡面,不知道這樣是否可測試,要不然沒有另外一個google帳號有google checkout的帳號

    期待您的幫助與謝謝您的回應

    ReplyDelete