今天在做 in-app purchase for Amazon,没有办法只能针对各个市场一个一个地做啦。
错误1:
05-07 15:17:05.967: E/AmazonSDKTester(938): Unable to get item information during purchase
05-07 15:17:05.967: E/AmazonSDKTester(938): com.amazon.testclient.TestClientException: JSON file does not exist on the device's external storage
05-07 15:17:05.967: E/AmazonSDKTester(938): at com.amazon.testclient.discovery.DiscoveryClient.readFile(DiscoveryClient.java:94)
05-07 15:17:05.967: E/AmazonSDKTester(938): at com.amazon.testclient.discovery.DiscoveryClient.getItemData(DiscoveryClient.java:74)
05-07 15:17:05.967: E/AmazonSDKTester(938): at com.amazon.testclient.purchase.PurchaseAction.handlePurchaseFlow(PurchaseAction.java:84)
05-07 15:17:05.967: E/AmazonSDKTester(938): at com.amazon.testclient.KickstartService.onHandleIntent(KickstartService.java:38)
05-07 15:17:05.967: E/AmazonSDKTester(938): at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:59)
05-07 15:17:05.967: E/AmazonSDKTester(938): at android.os.Handler.dispatchMessage(Handler.java:99)
05-07 15:17:05.967: E/AmazonSDKTester(938): at android.os.Looper.loop(Looper.java:130)
05-07 15:17:05.967: E/AmazonSDKTester(938): at android.os.HandlerThread.run(HandlerThread.java:60)
05-07 15:17:05.967: E/AmazonSDKTester(938): Error getting item data for dcc826ec-0eff-4945-8b6d-b2dd5481da9a (com.amazon.buttonclicker.subscription.1mo)
出现原因:
json file位置放置错误,根据 amazon的文档应该放在 /mnt/sdcard/amazon.sdktester.json 这个位置,于是我就在sdcard中创建了这个目录,结果证明我这样做是不正确的,正确的做法直接将amazon.sdktester.json放在sdcard根目录下。
还发现一个问题,当把手机与电脑相连时,无法访问sd card,这是因为你打开了debug调试,对sd card采用了所谓的“硬盘模式”而导致的。如果不打开debug调试就无法跟踪logcat里面的日志信息。这个问题的解决方法就是----- 改变手机与电脑的连接方式。
menu--->Settings ---->PC/Sync Settings(under System tab) ----> close Mount SD card (use default connection type)
错误2:
05-07 15:33:22.480: E/AmazonSDKTester(938): Unable to get item information during purchase
05-07 15:33:22.480: E/AmazonSDKTester(938): com.amazon.testclient.TestClientException: org.json.JSONException: Value com.amazon.buttonclicker.ten_clicks of type java.lang.String cannot be converted to JSONObject
05-07 15:33:22.480: E/AmazonSDKTester(938): at com.amazon.testclient.discovery.DiscoveryClient.readFile(DiscoveryClient.java:138)
05-07 15:33:22.480: E/AmazonSDKTester(938): at com.amazon.testclient.discovery.DiscoveryClient.getItemData(DiscoveryClient.java:74)
05-07 15:33:22.480: E/AmazonSDKTester(938): at com.amazon.testclient.purchase.PurchaseAction.handlePurchaseFlow(PurchaseAction.java:84)
05-07 15:33:22.480: E/AmazonSDKTester(938): at com.amazon.testclient.KickstartService.onHandleIntent(KickstartService.java:38)
05-07 15:33:22.480: E/AmazonSDKTester(938): at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:59)
05-07 15:33:22.480: E/AmazonSDKTester(938): at android.os.Handler.dispatchMessage(Handler.java:99)
05-07 15:33:22.480: E/AmazonSDKTester(938): at android.os.Looper.loop(Looper.java:130)
05-07 15:33:22.480: E/AmazonSDKTester(938): at android.os.HandlerThread.run(HandlerThread.java:60)
05-07 15:33:22.480: E/AmazonSDKTester(938): Caused by: org.json.JSONException: Value com.amazon.buttonclicker.ten_clicks of type java.lang.String cannot be converted to JSONObject
05-07 15:33:22.480: E/AmazonSDKTester(938): at org.json.JSON.typeMismatch(JSON.java:107)
05-07 15:33:22.480: E/AmazonSDKTester(938): at org.json.JSONObject.<init>(JSONObject.java:158)
05-07 15:33:22.480: E/AmazonSDKTester(938): at org.json.JSONObject.<init>(JSONObject.java:171)
05-07 15:33:22.480: E/AmazonSDKTester(938): at com.amazon.testclient.discovery.DiscoveryClient.readFile(DiscoveryClient.java:100)
05-07 15:33:22.480: E/AmazonSDKTester(938): ... 7 more
05-07 15:33:22.480: E/AmazonSDKTester(938): Error getting item data for 89350660-aac2-461b-9b22-16ecdfa09c41 (com.amazon.buttonclicker.subscription.1mo)
出现原因:
暂时不清楚: Error getting item data for 89350660-aac2-461b-9b22-16ecdfa09c41 (com.amazon.buttonclicker.subscription.1mo) 为什么出现这个?
此时所用的json文件内容如下:
# Creating the JSON Data File
#
# The SDK Tester Uses a JavaScript Object Notation (JSON) text file to contain
# the IAP item information used to respond to IAP API calls. This file resides
# on the device containing the app under test and the SDK Tester. Once created,
# the file needs to reside on the device's file system under the path:
#
# /mnt/sdcard/amazon.sdktester.json
#
# The contents of the file is a list of JSON objects that should have the same
# properties as the IAP items that you entered into the Developer Portal. This
# ensures you are testing with the same item attributes that will be available
# in the live environment.
#
# The overall format of the JSON file is (note the commas!):
#
# { IAP Item Definition 1 },
# { IAP Item Definition 2 },
# .
# .
# .
# { IAP Item Definition n }
#
# Where "IAP Item Defintion" is:
#
# {
# SKU_1:{IAP_Item_1_Description},
# SKU_2:{IAP_Item_2_Description},
# .
# .
# .
# SKU_n:{IAP_Item_n_Description}
# }
#
# Format for ENTITLED and CONSUMABLE Items:
#
# "SKU":{
# "itemType": "ENTITLED|CONSUMABLE",
# "price": item_price,
# "title": item_title,
# "description": item_description,
# "smallIconUrl": "http://path_to_image",
# }
#
# examples:
"com.amazon.buttonclicker.ten_clicks" : {
"itemType": "CONSUMABLE",
"price": 0.99,
"title": "More Clicks!",
"description": "Click your button ten more times!",
"smallIconUrl": "http://some/image.jpg"
}
"com.amazon.buttonclicker.blue_button" : {
"itemType": "ENTITLED",
"price": 0.99,
"title": "Blue Button",
"description": "Button Clicker - Now in Blue!",
"smallIconUrl": "http://some/image.jpg"
}
#
# Format for Subscription Items:
#
# "SKU":{
# "itemType": "ENTITLED|CONSUMABLE",
# "price": item_price,
# "title": item_title,
# "description": item_description,
# "smallIconUrl": "http://path_to_image",
# "subscriptionParent": "parentSKU"
# }
#
# example:
#
"com.amazon.buttonclicker.subscription.1mo" : {
"itemType" : "SUBSCRIPTION",
"price" : 3.99,
"title": "Button Clicker",
"description": "Click your button!",
"smallIconUrl": "http://some/image.jpg",
"subscriptionParent": "com.amazon.buttonclicker.subscription"
}
不知道格式有什么错误!
经过不断测试发现,json文件书写有问题:整体格式应该是 {"SKU1":{},"SKU2":{},"SKU3":{}} 注意它们之间的逗号
{
"com.amazon.buttonclicker.ten_clicks" : {
"itemType": "CONSUMABLE",
"price": 0.99,
"title": "More Clicks!",
"description": "Click your button ten more times!",
"smallIconUrl": "http://some/image.jpg"
},
"com.amazon.buttonclicker.blue_button" : {
"itemType": "ENTITLED",
"price": 0.99,
"title": "Blue Button",
"description": "Button Clicker - Now in Blue!",
"smallIconUrl": "http://some/image.jpg"
},
"com.amazon.buttonclicker.purple_button" : {
"itemType": "ENTITLED",
"price": 0.99,
"title": "Purple Button",
"description": "Button Clicker - Now in Purple!",
"smallIconUrl": "http://some/image.jpg"
},
"com.amazon.buttonclicker.green_button" : {
"itemType": "ENTITLED",
"price": 0.99,
"title": "Green Button",
"description": "Button Clicker - Now in Green!",
"smallIconUrl": "http://some/image.jpg"
},
"com.amazon.buttonclicker.subscription.1mo" : {
"itemType" : "SUBSCRIPTION",
"price" : 3.99,
"title": "Button Clicker",
"description": "Click your button!",
"smallIconUrl": "http://some/image.jpg",
"subscriptionParent": "com.amazon.buttonclicker.subscription"
}
}
如上所示就是正确的json文件格式!经测试是完全正确的!
参考资料:
https://developer.amazon.com/sdk/in-app-purchasing.html