asheslife / marketbilling Goto Github PK
View Code? Open in Web Editor NEWAutomatically exported from code.google.com/p/marketbilling
Automatically exported from code.google.com/p/marketbilling
STEPS TO REPRODUCE:
1. Not happening in my tests, but multiple errors reported by live applications
via ACRA
EXPECTED OUTPUT:
Calling IMarketBillingService.sendBillingRequest() should return without error.
ACTUAL OUTPUT:
NullPointerException in some cases (different OS versions)
AFFECTED ORDER IDS (IF RELEVANT): N/A
OS VERSION:
2.2.1
3.0.1
2.1-update1
1.6
2.3.4
2.2.1
MARKET/MYAPPS VERSION: N/A
DEVICE:
HTC Wildfire
A500
MB525
U20i
HTC HD2
GT-S5660
OUTPUT FROM ADB BUGREPORT ATTACHED:
Stacktrace from ACRA:
java.lang.NullPointerException
at android.os.Parcel.readException(Parcel.java:1253)
at android.os.Parcel.readException(Parcel.java:1235)
at com.android.vending.billing.IMarketBillingService$Stub$Proxy.sendBillingRequest(IMarketBillingService.java:100)
NOTES:
The 'Upgrade' button that calls sendBillingRequest() is only enabled if
CHECK_BILLING_SUPPORTED returns RESULT_OK.
Original issue reported on code.google.com by [email protected]
on 23 May 2011 at 11:29
NTT DoCoMo and KDDI's direct carrier billing doesn't function for the In-app
Billing system.
STEPS TO REPRODUCE:
1. Start In-app billing.
2. Choose the direct carrier billing as a payment method.
3. Push the 'Buy now' button.
4. Input the security password.
EXPECTED OUTPUT:
The billing is executed.
ACTUAL OUTPUT:
Nothing is executed.
It immediately returns to the screen of the app. The purchase request is
completely disregarded.
AFFECTED ORDER IDS (IF RELEVANT):
OS VERSION:
2.2.1
MARKET/MYAPPS VERSION:
2.3.6
DEVICE:
IS05, Galaxy S
OUTPUT FROM ADB BUGREPORT ATTACHED:
Attached.
NOTES:
Followings are the Logcat messages immediately after the 'Buy now' button was
pushed.
INFO/ActivityManager(295): Starting activity: Intent {
cmp=com.android.vending/.billing.CarrierPasswordActivity (has extras) }
WARN/InputManagerService(295): Starting input on non-focused client
com.android.internal.view.IInputMethodClient$Stub$Proxy@460f2c70 (uid=10089
pid=1250)
INFO/BillingService(1250): handleCommand() action:
com.android.vending.billing.RESPONSE_CODE
DEBUG/BillingService(1250): RequestPurchase: RESULT_USER_CANCELED
DEBUG/Dungeons(1250): potion_001: RESULT_USER_CANCELED
INFO/Dungeons(1250): user canceled purchase
INFO/ActivityManager(295): Displayed activity
com.android.vending/.billing.CarrierPasswordActivity: 368 ms (total 368 ms)
It seems that the purchase request has been canceled at the same time as the
CarrierPasswordActivity's being displayed.
Original issue reported on code.google.com by [email protected]
on 12 May 2011 at 6:35
Attachments:
The Problem:
"You cannot use your developer account to test the complete in-app purchase
process because Google Checkout does not let you buy items from yourself."
Why is this a problem:
I only have one android phone, which is both my day-to-day phone and the phone
I use for testing. A factory reset every time I want to test a purchase is a
big hurdle.
Basic fix/enhancement:
Allow a developer to buy from himself.
Preferred enhancement:
Allow a developer to buy from himself, but don't charge the Credit Card used
and make these test purchases identifiable in the Google Checkout Merchant
account.
Original issue reported on code.google.com by [email protected]
on 19 May 2011 at 11:56
I've got an app on the market that uses in-app billing to unlock advanced
features. This morning I noticed a FULL PAGE of cancelled transactions followed
by a bad reviews saying my app never got a response from their market purchase.
Now I'm seeing double-billed orders on a managed product and transaction going
through on failed orders. A few customers have contacted me and I've refunded
their purchases after many failed attempts to fix this, but I fear I'll be
getting lots of angry emails from the ones who will only notice the error on
their credit card bill.
The app has been working just fine for weeks prior to today's events and SOME
users have been able to unlock the features just fine today so I know it's not
happening to EVERYONE.
What's going on Google?
There is an item on today's known issues pages stating some app orders are not
being charged, but my issue sounds different as people are being charged
without receiving the product.
I've seen issue #14, but this isn't a few random transactions, I've had no
problems before and today has been almost nothing but errors and incorrect
billing?
I have a few order numbers if that will help.
Original issue reported on code.google.com by [email protected]
on 14 Jun 2011 at 7:13
Unable to uninstall an application with in-app billing using Market. The
uninstall process get to the "please tell us why you removed this item", but
the application stays installed.
I had a few reports from users about this, but didn't believe it until seeing
it myself.
1 - Starting position: application with in-app billing installed, an order for
paid features successfully processed, paid features activated.
2 - Now the order is canceled in Google Checkout, no notificaiton received
within about an hour.
3 - To facilitate further testing, the application is uninstalled with Market.
4 - While uninstalling, the order cancelation notification comes through, shown
in the phone's notification bar.
5 - The application is not uninstalled, stays installed on the phone.
6 - After this, repeated attempts to uninstall the application do nothing.
Market gets to the point where it asks why I removed the application ("don't
need" / "need space" / "malicious", etc.), but the application stays installed.
Removing with "adb uninstall" worked.
Environment: Motorola Milestone 2.1u1, Market 2.3.6, good WiFi connection (70
Mbit/s at the router).
This device used to be set up as a test account at some point, but no longer so
for a few days prior to this test.
Order number: 818650514066933
Logcat output (nothing useful, really):
I/ActivityManager( 1278): Starting activity: Intent {
act=android.intent.action.VIEW cmp=com.android.vending/.AssetInfoActivity (has
extras) }
D/dalvikvm( 1477): GC freed 3609 objects / 197744 bytes in 87ms
I/ActivityManager( 1278): Displayed activity
com.android.vending/.AssetInfoActivity: 412 ms (total 412 ms)
I/ActivityManager( 1278): Starting activity: Intent {
act=android.intent.action.VIEW cmp=com.android.vending/.UninstallActivity (has
extras) }
I/ActivityManager( 1278): Displayed activity
com.android.vending/.UninstallActivity: 329 ms (total 329 ms)
W/BatteryStatsImpl( 1278): Couldn't get kernel wake lock stats
D/WifiService( 1278): ACTION_BATTERY_CHANGED pluggedType: 2
D/dalvikvm( 1619): GC freed 1747 objects / 85728 bytes in 114ms
D/dalvikvm( 1355): GC freed 4510 objects / 246952 bytes in 130ms
D/OpenSSLSessionImpl( 1355): Freeing OpenSSL session
Original issue reported on code.google.com by [email protected]
on 29 Apr 2011 at 12:00
While making an in-app purchase on a newly configured test phone:
E/WindowManager(16621): Activity
com.android.vending.billing.InAppBuyPageActivity has leaked window com.androi
d.internal.policy.impl.PhoneWindow$DecorView@48342980 that was originally added
here
E/WindowManager(16621): android.view.WindowLeaked: Activity
com.android.vending.billing.InAppBuyPageActivity h
as leaked window
com.android.internal.policy.impl.PhoneWindow$DecorView@48342980 that was
originally added her
e
E/WindowManager(16621): at
android.view.ViewRoot.<init>(ViewRoot.java:247)
E/WindowManager(16621): at
android.view.WindowManagerImpl.addView(WindowManagerImpl.java:148)
E/WindowManager(16621): at
android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
E/WindowManager(16621): at
android.view.Window$LocalWindowManager.addView(Window.java:424)
E/WindowManager(16621): at android.app.Dialog.show(Dialog.java:241)
E/WindowManager(16621): at
com.android.vending.billing.InAppBuyPageActivity.initDialogViews(InAppBuyPa
geActivity.java:457)
E/WindowManager(16621): at
com.android.vending.billing.InAppBuyPageActivity.onRestart(InAppBuyPageActi
vity.java:282)
E/WindowManager(16621): at
android.app.Instrumentation.callActivityOnRestart(Instrumentation.java:1139
)
E/WindowManager(16621): at
android.app.Activity.performRestart(Activity.java:3805)
E/WindowManager(16621): at
android.app.Activity.performResume(Activity.java:3816)
E/WindowManager(16621): at
android.app.ActivityThread.performResumeActivity(ActivityThread.java:3118)
E/WindowManager(16621): at
android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3143)
E/WindowManager(16621): at
android.app.ActivityThread$H.handleMessage(ActivityThread.java:2059)
E/WindowManager(16621): at
android.os.Handler.dispatchMessage(Handler.java:99)
E/WindowManager(16621): at android.os.Looper.loop(Looper.java:123)
E/WindowManager(16621): at
android.app.ActivityThread.main(ActivityThread.java:4627)
E/WindowManager(16621): at java.lang.reflect.Method.invokeNative(Native
Method)
E/WindowManager(16621): at
java.lang.reflect.Method.invoke(Method.java:521)
E/WindowManager(16621): at
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:
871)
E/WindowManager(16621): at
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:629)
E/WindowManager(16621): at dalvik.system.NativeStart.main(Native Method)
Since this was a new test device, I left the main billing popup window to look
at terms of use and for entering a credit card. Without those extra steps, on
other phones, I don't see the leak.
The device is a Samsung Galaxy S, running 2.2.
Original issue reported on code.google.com by [email protected]
on 11 Apr 2011 at 1:15
I tried the Dungeons sample app with many mobile phones.
The app worked correctly with Android 2.2 phone, however, it cannot work with
Android 1.6 and 2.1 phone.
The result of my trial is shown below. "OK" means that the app works fine and
"N/A" means I cannot buy item.
SHARP IS01 (Android 1.6) N/A
SHARP IS03 (Android 2.1) N/A
TOSHIBA IS04 (Android 2.1) N/A
SHARP IS05 (Android 2.2) OK
Pantech IS06 (Android 2.2) OK
HTC Desire (Android 2.2) OK
HTC Desire HD (Android 2.2) OK
SHARP 003SH (Android 2.2) OK
SHARP 005SH (Andoird 2.2) OK
ZTE Libero (Android 2.2) OK
Dell Streak (Android 2.2) OK
Sony-Ericsson Xperia (Android 2.1) N/A
TOSHIBA T-01C (Android 2.1) N/A
(The version of the market app was 2.3.4 in any phone.)
By using "OK" models I can buy android.test.purchased without trouble, however,
I cannot buy it with "N/A" models that install Android 1.6 or 2.1.
The confirmation dialog of how to buy is displayed, but if I push "buy now"
button, I am made to wait for about one minute and the approving dialog closes
after it. After all, I cannot buy the item.
The sample app seems to have failed to receive IN_APP_NOTIFY intent on N/A case.
Here is the logcat message about when IN_APP_NOTIFY intent is made.
> WARN/GTalkService(1268): [DataMsgMgr] broadcast intent callback:
> result=CANCELLED forIntent { act=android.intent.action.REMOTE_INTENT
> cat=[com.android.vending.billing.IN_APP_NOTIFY] (has extras) }
> WARN/GTalkService(1268): TODO: implement reportNoReceiverError!
Strange to say, it seems that GTalkService steals IN_APP_NOTIFY intent.
Is this a bug of the market app?
Thanks.
Original issue reported on code.google.com by [email protected]
on 11 Apr 2011 at 6:40
Ok, I just updated my application, making some features premium, using in-app
billing.
Got a lot of negative comments from the users, despite having provided clear
description that some of the features now have to be paid for.
While it may be totally possible that nobody paid any attention to the
description, it also may be possible that a lot of the users had automatic
updates enabled for my application, and therefore never had a chance to read
this information.
What would help is if the Market app on the phone would force a manual update
for applications that have the billing permission for the first time.
Original issue reported on code.google.com by [email protected]
on 12 Apr 2011 at 9:58
I'm interested in having a subscription model for advanced features in my app.
Original issue reported on code.google.com by ddumont
on 15 Mar 2011 at 12:01
Dear Sirs,
Our business is producing MMO RPG. We are interested in confirmation ability
of user purchase from our server bypassing game client.
When using PayPal system, PayPal server sends information about purchases made
by a client on indicated «http» adress.
While using itunes you can request the itunes about transaction correctness
with the help of unique key number (2 kilobytes size), which is sent to
customer with every transaction.
Unfortunately, I cannot find such mechanism for Android Market In-app Billing.
Is there such mechanism?
I regret to say, that I could not find this information at web pages
http://developer.android.com/guide/market/billing/billing_best_practices.htm
and http://developer.android.com/guide/market/billing/billing_overview.html.
Original issue reported on code.google.com by [email protected]
on 4 Apr 2011 at 2:16
I'm experiencing unacceptable delays in how the orders are processed.
STEPS TO REPRODUCE:
I order an item in the market dialog that pops up. Once I click the purchase
button and see the "Verifying purchase" progress dialog, I can see an order in
my Checkout account about a second later. The dialog stays open for at least a
minute and once it closes and another few seconds later I see
onRequestPurchaseResponse being called with Now the onRequestPurchaseResponse
RESULT_OK showing "sending purchase request" as a Toast. Then it either takes
at least another minute or so for the onPurchaseStateChange to be called or it
is simply never called at all!
EXPECTED OUTPUT:
All actions should happen in a maximum of like 10 seconds.
ACTUAL OUTPUT:
At least two minutes of waiting and eventual a unrecognized order.
AFFECTED ORDER IDS (IF RELEVANT):
All, i.e.: 153753506523445
OS VERSION:
Android 1.6
MARKET/MYAPPS VERSION:
"version 1002306"
DEVICE:
HTC Dream / HTC Tattoo
Original issue reported on code.google.com by [email protected]
on 28 Apr 2011 at 8:38
STEPS TO REPRODUCE:
1.
2.
3.
EXPECTED OUTPUT:
Broadcast intent RESPONSE_CODE should come before PURCHASE_STATE_CHANGED.
ACTUAL OUTPUT:
I first receive PURCHASE_STATE_CHANGED then RESPONSE_CODE.
AFFECTED ORDER IDS (IF RELEVANT):
OS VERSION:
MARKET/MYAPPS VERSION:
DEVICE:
OUTPUT FROM ADB BUGREPORT ATTACHED:
(Note: The output from "adb bugreport" is required for all bug reports.)
NOTES:
Original issue reported on code.google.com by [email protected]
on 3 May 2011 at 7:53
What steps will reproduce the problem?
1. Upload an application draft to android market, which uses the in-app billing
permission.
2. I want to create in-app purchase products, but there is the ugly message:
"Sorry, applications with the BILLING permission cannot be published at this
time."
3. Now what?
What is the expected output? What do you see instead?
I want to CREATE in-app billing products, but I can't 'cause it shows me this
unexpressive message.
What version of the product are you using? On what operating system?
Android 1.6 and 2.2
Please provide any additional information below.
I don't have any. It seems to be a Google service malfunction.
Original issue reported on code.google.com by [email protected]
on 2 Mar 2011 at 1:14
Attachments:
STEPS TO REPRODUCE:
1. use In-App-Billing with real product Ids (the app is not yet published, the
In-App products are published)
2. make the REQUEST_PURCHASE call (just like in the Dungeons example app)
3. start the buy page Activity with the intent returned (just like in the
Dungeons example app)
EXPECTED OUTPUT:
to see be buy page evertime
ACTUAL OUTPUT:
About 1 in 5 times: a few seconds long the loading screen of the buy page
overlay is displayed, then an alert dialog reports an network error. It does
not matter if we use 3G or WIFI. The Internet is used by the app right before
and after the request is made, the connection is stable and available all of
the time.
In the log file, it says "connection reset by peer":
06-08 11:59:11.073: DEBUG/vending(5754): [1]
BaseBuyPageActivity.onPostResponse(): {PurchaseResult=OK,
PurchaseInfo=PurchaseInfo=, SignupStatus=SIGNED_UP, TId=965567726868130,
ShoppingCart=[ItemPrice=3,99 €, TaxInclusive=, TaxExclusive=,
Total=3,99 €, HasTaxMessage=false, TaxMessage=null, HasFooterMessage=false,
FooterMessage=null], RefundPolicy=<b>Der Betrag für diesen In-App-Kauf kann
nicht erstattet werden.</b> <br/> <a
href="http://market.android.com/support/bin/answer.py?answer=1061913">Weitere
Informationen</a><br/><a
href="http://www.google.com/mobile/android/fsa-notification.html">Geregelt
durch Financial Services Authority (FSA, britische Bankenaufsichtsbehörde),
Großbritannien</a>, Instruments=[[Id=107222246370128, Name=VISA xxx-6482
Invalid=false Type=CREDIT_CARD] ], DefaultBillingInstrument=107222246370128,
ErrorFields=[]}
06-08 11:59:11.138: DEBUG/vending(5754): [1]
BaseBuyPageActivity.shouldAddCarrierBilling(): isProvisioned(): false
isSavedonServer(): false radio available? true
06-08 11:59:11.143: DEBUG/vending(5754): [1]
BaseBuyPageActivity.shouldAddCarrierBilling(): isProvisioned(): false
isSavedonServer(): false radio available? true
06-08 12:01:13.033: WARN/vending(5754): [36]
RequestDispatcher.performRequestsOverNetwork(): IOException while performing
API request: Connection reset by peer
06-08 12:01:13.048: DEBUG/vending(5754): [36] BaseAction.run(): IOException:
java.net.SocketException: Connection reset by peer
06-08 12:01:13.058: ERROR/vending(5754): [36]
BasePurchaseActivity.onPurchasePostError(): PurchasePost error
06-08 12:01:13.073: INFO/vending(5754): [1] BaseAction.displayErrorUi():
Network error in com.android.vending.billing.PurchasePostAction:
java.net.SocketException: Connection reset by peer
AFFECTED ORDER IDS (IF RELEVANT):
OS VERSION:
2.3.3
2.3.4
2.2.2
MARKET/MYAPPS VERSION:
2.3.6
DEVICE:
Samsung Galaxy Spica i5700
Sony Ericsson Arc
Google Nexus S
OUTPUT FROM ADB BUGREPORT ATTACHED:
see attachment.
NOTES:
Original issue reported on code.google.com by [email protected]
on 8 Jun 2011 at 10:31
hi,
while the transaction is in process and my application crashes.So how will get
the information about that transaction.As I am just waiting for the confirm
notification.How can I test this scenario with the Static Values.?
Can any one please help..
thanks
bins
Original issue reported on code.google.com by [email protected]
on 11 Apr 2011 at 7:57
The sample code should only call restoreTransactions() on first install (or if
explicitly forced).
Calling restoreTransactions() too frequently can lead to quota errors -- we
want to discourage behavior that might lead to this.
Original issue reported on code.google.com by [email protected]
on 20 Apr 2011 at 9:18
Currently, implementing a trial period for an application has to be coded
completely by the developer, and requires a server component.
While at it, one has to solve issues caused by application remove / reinstall,
device reset, user moving to a new phone, app data being cleared.
It should be really easy to implement trial period support as a special item
type in In-App Billing.
The user would need to make a special free "purchase" to initiate the trial.
Since Market servers already track managed items, this could be a special
managed item type. The application would then check for this item being in a
"purchased" state to enable trial period features.
This would solve the issues caused by reinstalls, device reset, app data being
cleared, etc., and make trial period support much easier for developers to
implement.
Original issue reported on code.google.com by [email protected]
on 11 Apr 2011 at 9:31
What steps will reproduce the problem?
1) Install Dungeon's Example App
2) Edit the payload
3) buy android.test.purchased Item
4) Log or print the com.android.vending.billing.PURCHASE_STATE_CHANGED response
What is the expected output? What do you see instead?
The DEVELOPER_PAYLOAD shouldn't be empty.
The DEVELOPER_PAYLOAD which was added before the purchase isn't a part of the
reponse.(see attached file - DEVELOPER_PAYLOAD is completely missing)
What version of the product are you using? On what operating system?
Android 2.2 on Galaxy Tab
Using Dungeon example code.
Original issue reported on code.google.com by [email protected]
on 25 May 2011 at 1:30
Attachments:
STEPS TO REPRODUCE:
1. Just did the all the steps of the billing example
2.
3.
EXPECTED OUTPUT:
Everything working
ACTUAL OUTPUT:
Does not connect to the marketbillingservice
OS VERSION:
2.2.1 MIUI
MARKET/MYAPPS VERSION:
DEVICE:
HTC HD2
Log:
D/NetworkLocator( 1252): New location significantly newer than previous.
Reporting it.
D/BillingService( 1266): CheckBillingSupported
I/BillingService( 1266): binding to Market billing service
I/global ( 1252): Default buffer size used in BufferedInputStream constructor.
It would be better to be explicit if an 8k buffer is required.
I/ActivityThread( 1274): Publishing provider
com.android.vending.SuggestionsProvider: com.android.vending.SuggestionsProvider
D/vending ( 1274): [1] VendingApplication.onCreate(): Resetting ServiceLocator
from app
I/ActivityManager( 221): Displayed activity de.test.dungeons/.Dungeons: 363 ms
(total 363 ms)
D/BillingService( 1266): Billing service connected
D/BillingService( 1266): CheckBillingSupported
W/vending ( 1274): [8] 1.getPackageInfo(): cannot find package name: Ü
E/Bundle ( 1266): readBundle: bad magic number
E/Bundle ( 1266): readBundle: trace = java.lang.RuntimeException
E/Bundle ( 1266): at android.os.Bundle.readFromParcelInner(Bundle.java:1580)
E/Bundle ( 1266): at android.os.Bundle.<init>(Bundle.java:82)
E/Bundle ( 1266): at android.os.Parcel.readBundle(Parcel.java:1394)
E/Bundle ( 1266): at android.os.Parcel.readBundle(Parcel.java:1379)
E/Bundle ( 1266): at android.os.Bundle$1.createFromParcel(Bundle.java:1517)
E/Bundle ( 1266): at android.os.Bundle$1.createFromParcel(Bundle.java:1515)
E/Bundle ( 1266): at
com.android.vending.billing.IMarketBillingService$Stub$Proxy.sendBillingRequest(
IMarketBillingService.java:102)
E/Bundle ( 1266): at
de.test.dungeons.BillingService$CheckBillingSupported.run(BillingService.java:19
1)
E/Bundle ( 1266): at
de.test.dungeons.BillingService$BillingRequest.runIfConnected(BillingService.jav
a:120)
E/Bundle ( 1266): at
de.test.dungeons.BillingService.runPendingRequests(BillingService.java:543)
E/Bundle ( 1266): at
de.test.dungeons.BillingService.onServiceConnected(BillingService.java:580)
E/Bundle ( 1266): at
android.app.ActivityThread$PackageInfo$ServiceDispatcher.doConnected(ActivityThr
ead.java:1247)
E/Bundle ( 1266): at
android.app.ActivityThread$PackageInfo$ServiceDispatcher$RunConnection.run(Activ
ityThread.java:1264)
E/Bundle ( 1266): at android.os.Handler.handleCallback(Handler.java:587)
E/Bundle ( 1266): at android.os.Handler.dispatchMessage(Handler.java:92)
E/Bundle ( 1266): at android.os.Looper.loop(Looper.java:123)
E/Bundle ( 1266): at android.app.ActivityThread.main(ActivityThread.java:4627)
E/Bundle ( 1266): at java.lang.reflect.Method.invokeNative(Native Method)
E/Bundle ( 1266): at java.lang.reflect.Method.invoke(Method.java:521)
E/Bundle ( 1266): at
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:870)
E/Bundle ( 1266): at
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:628)
E/Bundle ( 1266): at dalvik.system.NativeStart.main(Native Method)
I/BillingService( 1266): CheckBillingSupported response code: RESULT_OK
I/Dungeons( 1266): supported: true
D/BillingService( 1266): RestoreTransactions
W/vending ( 1274): [7] 1.getPackageInfo(): cannot find package name: ø
E/Bundle ( 1266): readBundle: bad magic number
E/Bundle ( 1266): readBundle: trace = java.lang.RuntimeException
E/Bundle ( 1266): at android.os.Bundle.readFromParcelInner(Bundle.java:1580)
E/Bundle ( 1266): at android.os.Bundle.<init>(Bundle.java:82)
E/Bundle ( 1266): at android.os.Parcel.readBundle(Parcel.java:1394)
E/Bundle ( 1266): at android.os.Parcel.readBundle(Parcel.java:1379)
E/Bundle ( 1266): at android.os.Bundle$1.createFromParcel(Bundle.java:1517)
E/Bundle ( 1266): at android.os.Bundle$1.createFromParcel(Bundle.java:1515)
E/Bundle ( 1266): at
com.android.vending.billing.IMarketBillingService$Stub$Proxy.sendBillingRequest(
IMarketBillingService.java:102)
E/Bundle ( 1266): at
de.test.dungeons.BillingService$RestoreTransactions.run(BillingService.java:324)
E/Bundle ( 1266): at
de.test.dungeons.BillingService$BillingRequest.runIfConnected(BillingService.jav
a:120)
E/Bundle ( 1266): at
de.test.dungeons.BillingService$BillingRequest.runRequest(BillingService.java:97
)
E/Bundle ( 1266): at
de.test.dungeons.BillingService.restoreTransactions(BillingService.java:448)
E/Bundle ( 1266): at
de.test.dungeons.Dungeons.restoreDatabase(Dungeons.java:405)
E/Bundle ( 1266): at de.test.dungeons.Dungeons.access$0(Dungeons.java:401)
E/Bundle ( 1266): at
de.test.dungeons.Dungeons$DungeonsPurchaseObserver.onBillingSupported(Dungeons.j
ava:124)
E/Bundle ( 1266): at
de.test.dungeons.ResponseHandler.checkBillingSupportedResponse(ResponseHandler.j
ava:60)
E/Bundle ( 1266): at
de.test.dungeons.BillingService$CheckBillingSupported.run(BillingService.java:19
8)
E/Bundle ( 1266): at
de.test.dungeons.BillingService$BillingRequest.runIfConnected(BillingService.jav
a:120)
E/Bundle ( 1266): at
de.test.dungeons.BillingService.runPendingRequests(BillingService.java:543)
E/Bundle ( 1266): at
de.test.dungeons.BillingService.onServiceConnected(BillingService.java:580)
E/Bundle ( 1266): at
android.app.ActivityThread$PackageInfo$ServiceDispatcher.doConnected(ActivityThr
ead.java:1247)
E/Bundle ( 1266): at
android.app.ActivityThread$PackageInfo$ServiceDispatcher$RunConnection.run(Activ
ityThread.java:1264)
E/Bundle ( 1266): at android.os.Handler.handleCallback(Handler.java:587)
E/Bundle ( 1266): at android.os.Handler.dispatchMessage(Handler.java:92)
E/Bundle ( 1266): at android.os.Looper.loop(Looper.java:123)
E/Bundle ( 1266): at android.app.ActivityThread.main(ActivityThread.java:4627)
E/Bundle ( 1266): at java.lang.reflect.Method.invokeNative(Native Method)
E/Bundle ( 1266): at java.lang.reflect.Method.invoke(Method.java:521)
E/Bundle ( 1266): at
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:870)
E/Bundle ( 1266): at
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:628)
E/Bundle ( 1266): at dalvik.system.NativeStart.main(Native Method)
E/BillingService( 1266): restoreTransactions received RESULT_OK
D/BillingService( 1266): request id: -1
D/dalvikvm( 221): GC_EXPLICIT freed 30902 objects / 1796432 bytes in 95ms
D/BillingService( 1266): request id: -1
D/dalvikvm( 1274): GC_FOR_MALLOC freed 2410 objects / 156536 bytes in 41ms
D/gmmNlpServiceThread( 1252): reporting
Location[mProvider=network,mTime=1307624131677,mLatitude=31.3156665,mLongitude=1
21.5064518,mHasAltitude=false,mAltitude=0.0,mHasSpeed=false,mSpeed=0.0,mHasBeari
ng=false,mBearing=0.0,mHasAccuracy=true,mAccuracy=686.0,mExtras=Bundle[{networkL
ocationSource=cached, networkLocationType=cell}]]
I/System.out( 1252): [INFO:2092]: g: Running flush
I/System.out( 1252): [INFO:2127]: g: Sending payload [bytes=402]
D/dalvikvm( 1266): GC_FOR_MALLOC freed 4901 objects / 333760 bytes in 36ms
D/Dungeons( 1266): buying: Two-handed sword sku: sword_001
D/BillingService( 1266): RequestPurchase
W/vending ( 1274): [9] 1.getPackageInfo(): cannot find package name: Ą
E/Bundle ( 1266): readBundle: bad magic number
E/Bundle ( 1266): readBundle: trace = java.lang.RuntimeException
E/Bundle ( 1266): at android.os.Bundle.readFromParcelInner(Bundle.java:1580)
E/Bundle ( 1266): at android.os.Bundle.<init>(Bundle.java:82)
E/Bundle ( 1266): at android.os.Parcel.readBundle(Parcel.java:1394)
E/Bundle ( 1266): at android.os.Parcel.readBundle(Parcel.java:1379)
E/Bundle ( 1266): at android.os.Bundle$1.createFromParcel(Bundle.java:1517)
E/Bundle ( 1266): at android.os.Bundle$1.createFromParcel(Bundle.java:1515)
E/Bundle ( 1266): at
com.android.vending.billing.IMarketBillingService$Stub$Proxy.sendBillingRequest(
IMarketBillingService.java:102)
E/Bundle ( 1266): at
de.test.dungeons.BillingService$RequestPurchase.run(BillingService.java:231)
E/Bundle ( 1266): at
de.test.dungeons.BillingService$BillingRequest.runIfConnected(BillingService.jav
a:120)
E/Bundle ( 1266): at
de.test.dungeons.BillingService$BillingRequest.runRequest(BillingService.java:97
)
E/Bundle ( 1266): at
de.test.dungeons.BillingService.requestPurchase(BillingService.java:438)
E/Bundle ( 1266): at de.test.dungeons.Dungeons.onClick(Dungeons.java:464)
E/Bundle ( 1266): at android.view.View.performClick(View.java:2447)
E/Bundle ( 1266): at android.view.View$PerformClick.run(View.java:9025)
E/Bundle ( 1266): at android.os.Handler.handleCallback(Handler.java:587)
E/Bundle ( 1266): at android.os.Handler.dispatchMessage(Handler.java:92)
E/Bundle ( 1266): at android.os.Looper.loop(Looper.java:123)
E/Bundle ( 1266): at android.app.ActivityThread.main(ActivityThread.java:4627)
E/Bundle ( 1266): at java.lang.reflect.Method.invokeNative(Native Method)
E/Bundle ( 1266): at java.lang.reflect.Method.invoke(Method.java:521)
E/Bundle ( 1266): at
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:870)
E/Bundle ( 1266): at
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:628)
E/Bundle ( 1266): at dalvik.system.NativeStart.main(Native Method)
E/BillingService( 1266): Error with requestPurchase
D/BillingService( 1266): request id: -1
D/dalvikvm( 328): GC_EXTERNAL_ALLOC freed 227 objects / 12896 bytes in 35ms
D/dalvikvm( 328): GC_EXTERNAL_ALLOC freed 32 objects / 1312 bytes in 74ms
D/dalvikvm( 328): GC_EXTERNAL_ALLOC freed 10 objects / 312 bytes in 45ms
D/dalvikvm( 328): GC_EXTERNAL_ALLOC freed 34 objects / 1216 bytes in 48ms
I/System.out( 1252): [INFO:7127]: g: Running delayed flush
I/System.out( 1252): [INFO:7137]: g: Running flush
D/dalvikvm( 328): GC_EXPLICIT freed 176 objects / 9544 bytes in 37ms
D/alogcat ( 1231): stopping ...
D/alogcat ( 1231): canceling periodic saves
V/alogcat ( 1231): started
V/alogcat ( 1231): resumed
D/alogcat ( 1231): starting ...
D/dalvikvm( 1252): GC_FOR_MALLOC freed 20502 objects / 774288 bytes in 101ms
D/AndroidRuntime( 1295): Shutting down VM
W/dalvikvm( 1295): threadid=1: thread exiting with uncaught exception
(group=0x4001d808)
NOTES:
Did the sample app tutorial step by step. This is the sample project.
Everything is setup correctly, but I can't get rid of this error.
The onServiceConnected(ComponentName name, IBinder service) procedure is rever
reached, because there is alwas this message:
.getPackageInfo(): cannot find package name: Ġ
The Ġ is often replaced by other strange letters, but the actual package names
doesn't contain any of these letters.
Thanks for your help.
Original issue reported on code.google.com by [email protected]
on 9 Jun 2011 at 1:04
STEPS TO REPRODUCE:
1. Implement the in app billing using the example app
2. Test with the static responses android.test.purchased, this works fine
3. Test with android.test.canceled, this gives an exception, see callstack.
What's going wrong???
EXPECTED OUTPUT:
No exception
ACTUAL OUTPUT:
Exception
AFFECTED ORDER IDS (IF RELEVANT):
OS VERSION:
2.2.3
MARKET/MYAPPS VERSION:
2.3.6
DEVICE:
Nexus One
OUTPUT FROM ADB BUGREPORT ATTACHED:
(Note: The output from "adb bugreport" is required for all bug reports.)
NOTES:
04-20 21:35:22.908 D/BillingService(28634): CheckBillingSupported
04-20 21:35:22.908 I/BillingService(28634): binding to Market billing service
04-20 21:35:22.928 D/BillingService(28634): Billing service connected
04-20 21:35:22.928 D/BillingService(28634): CheckBillingSupported
04-20 21:35:22.938 I/BillingService(28634): CheckBillingSupported response
code: RESULT_OK
04-20 21:35:22.938 I/AutoPilot(28634): supported: true
04-20 21:35:22.938 D/BillingService(28634): request id: -1
04-20 21:35:23.008 I/ActivityManager( 92): Displayed
com.willemstoker.AutoPilot/.EditYourSettingActivity: +253ms
04-20 21:35:25.228 D/AutoPilot(28634): buying
04-20 21:35:25.228 D/BillingService(28634): RequestPurchase
04-20 21:35:25.248 I/ActivityManager( 92): Starting: Intent {
act=android.intent.action.VIEW
cmp=com.android.vending/.billing.InAppBuyPageActivity (has extras) } from pid -1
04-20 21:35:25.258 D/BillingService(28634): request id: 2737388895789349760
04-20 21:35:25.518 I/dalvikvm(28213): Jit: resizing JitTable from 4096 to 8192
04-20 21:35:25.608 I/ActivityManager( 92): Displayed
com.android.vending/.billing.InAppBuyPageActivity: +334ms
04-20 21:35:25.628 D/dalvikvm(28213): GC_CONCURRENT freed 1176K, 53% free
3533K/7367K, external 2905K/3300K, paused 4ms+7ms
04-20 21:35:26.598 D/vending (28213): [1] BaseBuyPageActivity.onPostResponse():
{PurchaseResult=OK, PurchaseInfo=PurchaseInfo=, SignupStatus=SIGNED_UP,
TId=transactionId.android.test.canceled, ShoppingCart=[ItemPrice=$0.99,
TaxInclusive=, TaxExclusive=, Total=$0.99, HasTaxMessage=false,
TaxMessage=null, HasFooterMessage=true, FooterMessage=Dit is geen echte
aankoop.], RefundPolicy=<b>Voor deze aankoop is geen teruggave
mogelijk.</b><br/><a
href="http://market.android.com/support/bin/answer.py?answer=1061913">Beleid
voor teruggaven</a>, Instruments=[[Id=android.test.canceled, Name=VISA xxx-FAKE
Invalid=false Type=CREDIT_CARD] ],
DefaultBillingInstrument=android.test.canceled, ErrorFields=[]}
04-20 21:35:26.608 D/vending (28213): [1]
BaseBuyPageActivity.shouldAddCarrierBilling(): isProvisioned(): false
isSavedonServer(): false radio available? true
04-20 21:35:26.608 D/vending (28213): [1]
BaseBuyPageActivity.shouldAddCarrierBilling(): isProvisioned(): false
isSavedonServer(): false radio available? true
04-20 21:35:30.698 D/dalvikvm(28221): GC_EXPLICIT freed 565K, 54% free
2786K/5959K, external 1625K/2137K, paused 86ms
04-20 21:35:30.878 D/vending (28213): [1]
BaseBuyPageActivity.onOrderResponse(): state: CART_PURCHASE response:
[PurchaseResult=OK]
04-20 21:35:30.958 D/dalvikvm(28213): GC_CONCURRENT freed 1353K, 54% free
3424K/7431K, external 2265K/2801K, paused 7ms+2ms
04-20 21:35:30.978 I/Gmail (27611): MainSyncRequestProto: lowestBkwdConvoId:
0, highestHandledServerOp: 183171, normalSync: true
04-20 21:35:31.208 I/BillingReceiver(28634): notifyId: android.test.canceled
04-20 21:35:31.208 W/ActivityManager( 92): Duplicate finish request for
HistoryRecord{40827cf0 com.android.vending/.billing.InAppBuyPageActivity}
04-20 21:35:31.218 I/BillingService(28634): handleCommand() action:
com.willemstoker.AutoPilot.GET_PURCHASE_INFORMATION
04-20 21:35:31.218 D/BillingService(28634): GetPurchaseInformation
04-20 21:35:31.228 E/BillingService(28634): getPurchaseInformation received
RESULT_OK
04-20 21:35:31.228 D/BillingService(28634): request id: 3656394189988289586
04-20 21:35:31.238 W/InputManagerService( 92): Window already focused,
ignoring focus gain of:
com.android.internal.view.IInputMethodClient$Stub$Proxy@409e0740
04-20 21:35:31.308 I/BillingService(28634): handleCommand() action:
com.android.vending.billing.RESPONSE_CODE
04-20 21:35:31.308 D/BillingService(28634): RequestPurchase: RESULT_OK
04-20 21:35:31.308 D/AutoPilot(28634): android.test.canceled: RESULT_OK
04-20 21:35:31.308 I/AutoPilot(28634): purchase was successfully sent to server
04-20 21:35:31.978 I/BillingService(28634): handleCommand() action:
com.android.vending.billing.PURCHASE_STATE_CHANGED
04-20 21:35:31.978 I/Security(28634): signedData:
{"nonce":6955467956256124291,"orders":[{"notificationId":"android.test.canceled"
,"orderId":"transactionId.android.test.canceled","packageName":"com.willemstoker
.AutoPilot","productId":"android.test.canceled","purchaseTime":1303328261915,"pu
rchaseState":1}]}
04-20 21:35:31.998 D/BillingService(28634): ConfirmNotifications
04-20 21:35:32.008 E/BillingService(28634): confirmNotifications received
RESULT_OK
04-20 21:35:32.008 D/BillingService(28634): request id: 8907712747543870794
04-20 21:35:32.008 I/AutoPilot(28634): onPurchaseStateChange() itemId:
android.test.canceled CANCELED
04-20 21:35:32.018 I/BillingService(28634): handleCommand() action:
com.android.vending.billing.RESPONSE_CODE
04-20 21:35:32.018 D/BillingService(28634): GetPurchaseInformation: RESULT_OK
04-20 21:35:32.028 W/dalvikvm(28213): threadid=11: thread exiting with uncaught
exception (group=0x40015560)
04-20 21:35:32.028 E/AndroidRuntime(28213): FATAL EXCEPTION: Thread-21
04-20 21:35:32.028 E/AndroidRuntime(28213): java.lang.NullPointerException
04-20 21:35:32.028 E/AndroidRuntime(28213): at
com.android.vending.billing.MarketBillingService$BillingNotifier.showStatusBarNo
tifications(MarketBillingService.java:397)
04-20 21:35:32.028 E/AndroidRuntime(28213): at
com.android.vending.billing.MarketBillingService$AsynchPurchaseInformation.doReq
uest(MarketBillingService.java:549)
04-20 21:35:32.028 E/AndroidRuntime(28213): at
com.android.vending.AsynchRequestRunner$RequestRunnable.run(AsynchRequestRunner.
java:37)
04-20 21:35:32.028 E/AndroidRuntime(28213): at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088)
04-20 21:35:32.028 E/AndroidRuntime(28213): at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581)
04-20 21:35:32.028 E/AndroidRuntime(28213): at
java.lang.Thread.run(Thread.java:1019)
04-20 21:35:32.028 E/AndroidRuntime(28213): at
com.android.vending.AsynchRequestRunner$VendingThreadFactory$VendingFactoryThrea
d.run(AsynchRequestRunner.java:118)
Original issue reported on code.google.com by willem.stoker
on 21 Apr 2011 at 8:08
"Purchase completed" state for about 4-6% of in-app orders for my app is never
received by the application on the phone.
My code is based on the Dungeons sample, and it seems to listen for all the
right notifications, and yet, several hours after the order has been processed
the app still doesn't receive the notification.
Removing the app and reinstalling, i.e. making it request "restore transaction
state" resolved the issue every time.
This makes me think that something sometimes goes wrong in the flow of data
from Google Checkout back to the application, to confirm the purchase after
it's processed.
Again, this affects only 4 to 6% of purchases, so overall it's very good, but
having proper retransmits, the way it's supposed to work, would remove the
issue altogether.
Original issue reported on code.google.com by [email protected]
on 12 Apr 2011 at 10:04
What steps will reproduce the problem?
1. User attempts In-App purchase
2. Transaction is cancelled (Credit card problem, time out etc), no charge is
made to the customer.
3. User cannot re-attempts the purchase the message appears "You have already
purchased this item"
What is the expected output? What do you see instead?
A way for the transaction to be reset so the user may purchase the In-App Item,
This facility does not seem to be available on in the DashBoard.
What version of the product are you using? On what operating system?
I'm the Developer of Quota
(https://market.android.com/details?id=com.southfreo) which uses In-App
purchasing to upgrade the Application. The code is based on the Billing sample.
Please provide any additional information below.
It seems the message "You have already purchased this item" is incorrect as the
transaction was cancelled, the transaction should have reset and the user allow
to attempt a repurchase.
Original issue reported on code.google.com by [email protected]
on 1 Apr 2011 at 2:03
Hi,
Starting from yesterday, we have some problems with InApp Billing payments
performed by our customers, every payment have been refused wit the same error
"We could not complete your order in a timely fashion. Please verify your
payment information in Google Checkout and try again later."
STEPS TO REPRODUCE:
1. Pay with InApp Billing in our application
2. User's card get authorization
3. Some time later, the payment is refused with the above error.
EXPECTED OUTPUT:
IN_APP_NOTIFY should notify us that the payment process has completed
ACTUAL OUTPUT:
No IN_APP_NOTIFY received, BillingService never called!!!
AFFECTED ORDER IDS (IF RELEVANT):
OS VERSION:
2.2.1
MARKET/MYAPPS VERSION:
2.3.6
DEVICE:
Samsung Galaxy S
OUTPUT FROM ADB BUGREPORT ATTACHED:
(Note: The output from "adb bugreport" is required for all bug reports.)
NOTES:
Original issue reported on code.google.com by [email protected]
on 10 May 2011 at 3:08
Attachments:
Hi,
I have downloaded the application sample from Google site.
http://developer.android.com/guide/market/billing/billing_integrate.html
I have nexus S.2.3 version.
Android market application 2.3.2.
I was trying run the sample application to understand how does this sample app
working.But i could not the application working.I am India.
when ever The Sample app try to check the market CheckBillingSupported,i
receive the flag as replay "RESULT_BILLING_UNAVAILABLE".Please guide me ,How
can i make this application working.
thanks in advance.
Binil Thomas P R
Original issue reported on code.google.com by [email protected]
on 25 Feb 2011 at 12:05
Attachments:
The In-App Billing sample code (Dungeons) does something really weird to
interact with the in-application billing service.
In Dungeons.onCreate (Dungeons.java):
mBillingService = new BillingService();
mBillingService.setContext(this);
Where setContext calls the framework's AttachBaseContext.
This way of starting a service is not documented anywhere in the SDK (as far as
I can see).
This is confusing to me as a developer. I'd like my application to only use
documented ways of interacting with components. At the same time, I'm wary of
changing this code because it might break the already flakey purchasing process.
Can this be cleaned up please?
One other thing: after starting and closing (with the back button) the Dungeons
activity as attached above, the mBillingService continues to run and show in
Phone's Running Services info screen.
This going to be a support issue for my, or anyone else's application.
Original issue reported on code.google.com by [email protected]
on 11 Apr 2011 at 7:54
Attachments:
The documentation lists three states for a managed purchase: Purchased,
Canceled, Refunded.
The sample code makes a point of treating Refunded as Purchased, commented as
"nice for the user". I agree.
But - I don't see a way to refund an in-app purchase in my Google Checkout
console:
https://checkout.google.com/sell/orders
I can open a particular order, and that only has a button to "Cancel entire
order". Doing this sets purchase state to Canceled (1), not Refunded (2), which
makes sense, since it says "Cancel", not "Refund".
There is a link to "Refund some money", but it's grayed out.
Am I missing something? Is there a way to refund an in-app purchase, distinct
from canceling it?
Is the documentation wrong? Is the sample code wrong?
Original issue reported on code.google.com by [email protected]
on 11 Apr 2011 at 4:16
Attachments:
What steps will reproduce the problem?
1.
A user tries to buy an in-app managed item. His card passes the preliminary
authorization checks, but not the actual charge.
2.
a - Google Checkout sends the user an email asking to enter correct card info,
saying that the order will be completed then.
3.
a - After entering correct data, the order still does not go though.
b - The order is listed in the user's order list on Google Checkout as
"canceled by seller". This is misleading, the seller did not cancel the order,
Google Checkout did.
c - If the user tried to place a new order, it's declined by Android Market,
since the item is managed.
Bottom line - the user is mislead, misinformed, and left confused and unable to
make the purchase.
What is the expected output?
a - The user can enter correct credit card info and complete the existing order.
b - The user is not misinformed that the order was canceled by the seller.
c - The user has some way to purchase the item, either with the old order, or
by placing a new one.
What version of the product are you using?
Android Market with in-app billing support, 2.3+
On what operating system?
Windows Mobile running on a Blackberry :)
Original issue reported on code.google.com by [email protected]
on 20 Apr 2011 at 1:33
I tried to test In-app billing in my application. While I did read the whole
documentation and I believed I did everything right, In-app purchase was not
possible. It always said that the product was unavailable, even if it was
correctly entered and published. My whole problem is described here:
http://groups.google.com/group/android-developers/browse_thread/thread/f242f74c7
803dd4a
Then I modified my test accounts on
https://market.android.com/publish/editProfile to the corresponding @gmail
addresses, and In-app billing suddenly started to work.
My suggestions to solve this issue:
- Do not allow to enter @googlemail.com addresses as test accounts on https://market.android.com/publish/editProfile
- OR: Allow to enter @googlemail.com addresses, but treat them as @gmail.com addresses internally
Thanks a lot for this awesome new Android feature! :-)
Original issue reported on code.google.com by [email protected]
on 26 Mar 2011 at 2:05
What steps will reproduce the problem?
2. Install an APK on the device with a certain version number
1. Upload a APK to the Android Market with a newer version number
3. Attempt to restore transactions or purchase something on the device with the
older app version
What is the expected output? What do you see instead?
When the APK versions match I get PURCHASE_STATE_CHANGED with a valid signature
and signed data.
When they do not match, the user upon attempting to restore transactions gets
PURCHASE_STATE_CHANGED with null signature and signed data. The request returns
with the result RESULT_DEVELOPER_ERROR. If a purchase is attempted, the user
gets the message "This version of the application is not configured for market
billing."
What version of the product are you using? On what operating system?
Android 2.2.2 on Galaxy S (Samsung Vibrant)
Using Dungeon example code.
APK is signed with release certificate.
Please provide any additional information below.
This is unexpected but would be bad if updates to the Market APK break the
ability for older versions of the app to engage in Billing activities.
Original issue reported on code.google.com by [email protected]
on 13 Apr 2011 at 9:40
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.