/** * @inheritdoc */ public function get($productId, $token) { $accessToken = $this->getAccessToken(); if (!empty($accessToken)) { $Request = $this->getRequest(self::ENDPOINT_PURCHASES)->addUrlField('applications', $this->getPackage())->addUrlField('purchases', '')->addUrlField($this->getPurchasesUri(), $productId)->addUrlField('tokens', $token)->addGetField('access_token', $accessToken); try { switch ($this->typeCode) { case self::TYPE_PRODUCTS: return ProductResource::initializeByString($Request->send()); case self::TYPE_SUBSCRIPTIONS: return SubscriptionResource::initializeByString($Request->send()); default: throw new RuntimeException(sprintf('type code %s not supported now', $this->typeCode)); } } catch (HttpClientErrorCodeException $Ex) { switch ($Ex->getCode()) { case 401: throw InvalidCredentialsException::initializeByString($Ex->getMessage()); case 404: throw NotFoundException::initializeByString($Ex->getMessage()); default: throw ErrorException::initializeByString($Ex->getMessage()); } } catch (HttpServerErrorCodeException $Ex) { throw ErrorException::initializeByString($Ex->getMessage()); } } else { throw new UnexpectedValueException('access token is empty'); } }
public function testProductsResourceInitialization() { $Resource1 = PurchasesResource::initializeByString('{ "kind": "androidpublisher#productPurchase", "purchaseTimeMillis": "1434571586008", "purchaseState": 0, "consumptionState": 1, "developerPayload": "{\\"codeVersion\\":30700,\\"hash\\":862428815}" }'); $this->assertEquals(PurchasesResource::STATE_CONSUMED, $Resource1->getConsumptionState()); $this->assertEquals('{"codeVersion":30700,"hash":862428815}', $Resource1->getDeveloperPayload()); $this->assertEquals('androidpublisher#productPurchase', $Resource1->getKind()); $this->assertEquals(PurchasesResource::ORDER_PURCHASED, $Resource1->getPurchaseState()); $this->assertSame(1434571586008, $Resource1->getPurchaseTimeMillis()); $this->assertFalse($Resource1->isCancelled()); $this->assertTrue($Resource1->isConsumed()); $this->assertTrue($Resource1->isPurchased()); $this->assertEquals(' consumptionState: consumed developerPayload: {"codeVersion":30700,"hash":862428815} kind: androidpublisher#productPurchase purchaseState: purchased purchaseTimeMillis: 2015-06-17 23:06:26', (string) $Resource1); $Resource2 = PurchasesResource::initializeByString('{ "kind": "androidpublisher#productPurchase", "purchaseTimeMillis": "1434571586008", "purchaseState": 0, "consumptionState": 0, "developerPayload": "{\\"codeVersion\\":30700,\\"hash\\":862428815}" }'); $this->assertEquals(PurchasesResource::STATE_YET_CONSUMED, $Resource2->getConsumptionState()); $this->assertEquals('{"codeVersion":30700,"hash":862428815}', $Resource2->getDeveloperPayload()); $this->assertEquals('androidpublisher#productPurchase', $Resource2->getKind()); $this->assertEquals(PurchasesResource::ORDER_PURCHASED, $Resource2->getPurchaseState()); $this->assertSame(1434571586008, $Resource2->getPurchaseTimeMillis()); $this->assertFalse($Resource2->isCancelled()); $this->assertFalse($Resource2->isConsumed()); $this->assertTrue($Resource2->isPurchased()); $this->assertEquals(' consumptionState: yet to be consumed developerPayload: {"codeVersion":30700,"hash":862428815} kind: androidpublisher#productPurchase purchaseState: purchased purchaseTimeMillis: 2015-06-17 23:06:26', (string) $Resource2); $Resource3 = PurchasesResource::initializeByString('{ "kind": "androidpublisher#productPurchase", "purchaseTimeMillis": "1434571586008", "purchaseState": 1, "consumptionState": 0, "developerPayload": "{\\"codeVersion\\":30700,\\"hash\\":862428815}" }'); $this->assertEquals(PurchasesResource::STATE_YET_CONSUMED, $Resource3->getConsumptionState()); $this->assertEquals('{"codeVersion":30700,"hash":862428815}', $Resource3->getDeveloperPayload()); $this->assertEquals('androidpublisher#productPurchase', $Resource3->getKind()); $this->assertEquals(PurchasesResource::ORDER_CANCELLED, $Resource3->getPurchaseState()); $this->assertSame(1434571586008, $Resource3->getPurchaseTimeMillis()); $this->assertTrue($Resource3->isCancelled()); $this->assertFalse($Resource3->isConsumed()); $this->assertFalse($Resource3->isPurchased()); $this->assertEquals(' consumptionState: yet to be consumed developerPayload: {"codeVersion":30700,"hash":862428815} kind: androidpublisher#productPurchase purchaseState: cancelled purchaseTimeMillis: 2015-06-17 23:06:26', (string) $Resource3); $Resource4 = PurchasesResource::initializeByString('{ "kind": "androidpublisher#productPurchase", "purchaseTimeMillis": "1434571586008", "purchaseState": 1, "consumptionState": 1, "developerPayload": "{\\"codeVersion\\":30700,\\"hash\\":862428815}" }'); $this->assertEquals(PurchasesResource::STATE_CONSUMED, $Resource4->getConsumptionState()); $this->assertEquals('{"codeVersion":30700,"hash":862428815}', $Resource4->getDeveloperPayload()); $this->assertEquals('androidpublisher#productPurchase', $Resource4->getKind()); $this->assertEquals(PurchasesResource::ORDER_CANCELLED, $Resource4->getPurchaseState()); $this->assertSame(1434571586008, $Resource4->getPurchaseTimeMillis()); $this->assertTrue($Resource4->isCancelled()); $this->assertTrue($Resource4->isConsumed()); $this->assertFalse($Resource4->isPurchased()); $this->assertEquals(' consumptionState: consumed developerPayload: {"codeVersion":30700,"hash":862428815} kind: androidpublisher#productPurchase purchaseState: cancelled purchaseTimeMillis: 2015-06-17 23:06:26', (string) $Resource4); }