public function testRetrieve()
 {
     self::authorizeFromEnv();
     $c = $this->createDisputedCharge();
     $d = Dispute::retrieve($c->dispute->id);
     $this->assertSame($d->id, $c->dispute->id);
 }
 protected function _initialize($attributes)
 {
     $this->_attributes = $attributes;
     if (isset($attributes['subject']['apiErrorResponse'])) {
         $wrapperNode = $attributes['subject']['apiErrorResponse'];
     } else {
         $wrapperNode = $attributes['subject'];
     }
     if (isset($wrapperNode['subscription'])) {
         $this->_set('subscription', Subscription::factory($attributes['subject']['subscription']));
     }
     if (isset($wrapperNode['merchantAccount'])) {
         $this->_set('merchantAccount', MerchantAccount::factory($wrapperNode['merchantAccount']));
     }
     if (isset($wrapperNode['transaction'])) {
         $this->_set('transaction', Transaction::factory($wrapperNode['transaction']));
     }
     if (isset($wrapperNode['disbursement'])) {
         $this->_set('disbursement', Disbursement::factory($wrapperNode['disbursement']));
     }
     if (isset($wrapperNode['partnerMerchant'])) {
         $this->_set('partnerMerchant', PartnerMerchant::factory($wrapperNode['partnerMerchant']));
     }
     if (isset($wrapperNode['dispute'])) {
         $this->_set('dispute', Dispute::factory($wrapperNode['dispute']));
     }
     if (isset($wrapperNode['accountUpdaterDailyReport'])) {
         $this->_set('accountUpdaterDailyReport', AccountUpdaterDailyReport::factory($wrapperNode['accountUpdaterDailyReport']));
     }
     if (isset($wrapperNode['errors'])) {
         $this->_set('errors', new Error\ValidationErrorCollection($wrapperNode['errors']));
         $this->_set('message', $wrapperNode['message']);
     }
 }
 /**
  * sets instance properties from an array of values
  *
  * @ignore
  * @access protected
  * @param array $transactionAttribs array of transaction data
  * @return void
  */
 protected function _initialize($transactionAttribs)
 {
     $this->_attributes = $transactionAttribs;
     if (isset($transactionAttribs['applePay'])) {
         $this->_set('applePayCardDetails', new Transaction\ApplePayCardDetails($transactionAttribs['applePay']));
     }
     if (isset($transactionAttribs['androidPayCard'])) {
         $this->_set('androidPayCardDetails', new Transaction\AndroidPayCardDetails($transactionAttribs['androidPayCard']));
     }
     if (isset($transactionAttribs['amexExpressCheckoutCard'])) {
         $this->_set('amexExpressCheckoutCardDetails', new Transaction\AmexExpressCheckoutCardDetails($transactionAttribs['amexExpressCheckoutCard']));
     }
     if (isset($transactionAttribs['venmoAccount'])) {
         $this->_set('venmoAccountDetails', new Transaction\VenmoAccountDetails($transactionAttribs['venmoAccount']));
     }
     if (isset($transactionAttribs['creditCard'])) {
         $this->_set('creditCardDetails', new Transaction\CreditCardDetails($transactionAttribs['creditCard']));
     }
     if (isset($transactionAttribs['coinbaseAccount'])) {
         $this->_set('coinbaseDetails', new Transaction\CoinbaseDetails($transactionAttribs['coinbaseAccount']));
     }
     if (isset($transactionAttribs['europeBankAccount'])) {
         $this->_set('europeBankAccount', new Transaction\EuropeBankAccountDetails($transactionAttribs['europeBankAccount']));
     }
     if (isset($transactionAttribs['usBankAccount'])) {
         $this->_set('usBankAccount', new Transaction\UsBankAccountDetails($transactionAttribs['usBankAccount']));
     }
     if (isset($transactionAttribs['paypal'])) {
         $this->_set('paypalDetails', new Transaction\PayPalDetails($transactionAttribs['paypal']));
     }
     if (isset($transactionAttribs['customer'])) {
         $this->_set('customerDetails', new Transaction\CustomerDetails($transactionAttribs['customer']));
     }
     if (isset($transactionAttribs['billing'])) {
         $this->_set('billingDetails', new Transaction\AddressDetails($transactionAttribs['billing']));
     }
     if (isset($transactionAttribs['shipping'])) {
         $this->_set('shippingDetails', new Transaction\AddressDetails($transactionAttribs['shipping']));
     }
     if (isset($transactionAttribs['subscription'])) {
         $this->_set('subscriptionDetails', new Transaction\SubscriptionDetails($transactionAttribs['subscription']));
     }
     if (isset($transactionAttribs['descriptor'])) {
         $this->_set('descriptor', new Descriptor($transactionAttribs['descriptor']));
     }
     if (isset($transactionAttribs['disbursementDetails'])) {
         $this->_set('disbursementDetails', new DisbursementDetails($transactionAttribs['disbursementDetails']));
     }
     $disputes = [];
     if (isset($transactionAttribs['disputes'])) {
         foreach ($transactionAttribs['disputes'] as $dispute) {
             $disputes[] = Dispute::factory($dispute);
         }
     }
     $this->_set('disputes', $disputes);
     $statusHistory = [];
     if (isset($transactionAttribs['statusHistory'])) {
         foreach ($transactionAttribs['statusHistory'] as $history) {
             $statusHistory[] = new Transaction\StatusDetails($history);
         }
     }
     $this->_set('statusHistory', $statusHistory);
     $addOnArray = [];
     if (isset($transactionAttribs['addOns'])) {
         foreach ($transactionAttribs['addOns'] as $addOn) {
             $addOnArray[] = AddOn::factory($addOn);
         }
     }
     $this->_set('addOns', $addOnArray);
     $discountArray = [];
     if (isset($transactionAttribs['discounts'])) {
         foreach ($transactionAttribs['discounts'] as $discount) {
             $discountArray[] = Discount::factory($discount);
         }
     }
     $this->_set('discounts', $discountArray);
     if (isset($transactionAttribs['riskData'])) {
         $this->_set('riskData', RiskData::factory($transactionAttribs['riskData']));
     }
     if (isset($transactionAttribs['threeDSecureInfo'])) {
         $this->_set('threeDSecureInfo', ThreeDSecureInfo::factory($transactionAttribs['threeDSecureInfo']));
     }
     if (isset($transactionAttribs['facilitatorDetails'])) {
         $this->_set('facilitatorDetails', FacilitatorDetails::factory($transactionAttribs['facilitatorDetails']));
     }
 }