Merge pull request #3 from suzujun/master

Add Validator for Purchase Product token (GooglePlay)
This commit is contained in:
Junpei Tsuji
2015-02-13 22:36:10 +09:00
3 changed files with 39 additions and 1 deletions

View File

@@ -62,7 +62,7 @@ func main() {
# ToDo # ToDo
- [x] Validator for In App Purchase Receipt (AppStore) - [x] Validator for In App Purchase Receipt (AppStore)
- [x] Validator for Subscription token (GooglePlay) - [x] Validator for Subscription token (GooglePlay)
- [ ] Validator for Purchase Product token (GooglePlay) - [x] Validator for Purchase Product token (GooglePlay)
- [ ] More Tests - [ ] More Tests

View File

@@ -122,6 +122,23 @@ func (c *Client) VerifySubscription(
return result, err return result, err
} }
// VerifyProduct Verifies product status
func (c *Client) VerifyProduct(
packageName string,
productID string,
token string,
) (*androidpublisher.ProductPurchase, error) {
service, err := androidpublisher.New(c.httpClient)
if err != nil {
return nil, err
}
ps := androidpublisher.NewPurchasesProductsService(service)
result, err := ps.Get(packageName, productID, token).Do()
return result, err
}
func dialTimeout(network, addr string) (net.Conn, error) { func dialTimeout(network, addr string) (net.Conn, error) {
return net.DialTimeout(network, addr, defaultTimeout) return net.DialTimeout(network, addr, defaultTimeout)
} }

View File

@@ -105,3 +105,24 @@ func TestVerifySubscription(t *testing.T) {
// TODO Nomal scenario // TODO Nomal scenario
} }
func TestVerifyProduct(t *testing.T) {
Init()
// Exception scenario
token := &oauth.Token{
AccessToken: "accessToken",
RefreshToken: "refreshToken",
Expiry: time.Unix(1234567890, 0).UTC(),
}
client := New(token)
expected := "Get https://www.googleapis.com/androidpublisher/v2/applications/package/purchases/products/productID/tokens/purchaseToken?alt=json: OAuthError: updateToken: Unexpected HTTP status 400 Bad Request"
_, err := client.VerifyProduct("package", "productID", "purchaseToken")
if err.Error() != expected {
t.Errorf("got %v", err)
}
// TODO Nomal scenario
}