Ejemplo n.º 1
0
 /**
  * @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');
     }
 }
Ejemplo n.º 2
0
    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);
    }