/** * @param array $attributes * @return PaytrailProduct */ public static function create(array $attributes) { $model = new PaytrailProduct(); $model->attributes = $attributes; if (!$model->save()) { throw new CException('Failed to save paytrail product.'); } return $model; }
/** * @param PaymentTransaction $transaction */ public function prepareTransaction(PaymentTransaction $transaction) { $attributes = array(); foreach (array('success', 'failure', 'notification', 'pending') as $attribute) { if (isset($this->{$attribute . 'Route'})) { $attributes[$attribute . 'Url'] = Yii::app()->createAbsoluteUrl($this->{$attribute . 'Route'}); } } $urlset = PaytrailUrlset::create($attributes); $address = PaytrailAddress::create(array('streetAddress' => $transaction->shippingContact->streetAddress, 'postalCode' => $transaction->shippingContact->postalCode, 'postOffice' => $transaction->shippingContact->postOffice, 'countryCode' => $this->normalizeCountry($transaction->shippingContact->countryCode))); $contact = PaytrailContact::create(array('firstName' => $transaction->shippingContact->firstName, 'lastName' => $transaction->shippingContact->lastName, 'email' => $transaction->shippingContact->email, 'phoneNumber' => $transaction->shippingContact->phoneNumber, 'mobileNumber' => $transaction->shippingContact->mobileNumber, 'companyName' => $transaction->shippingContact->companyName, 'addressId' => $address->id)); $payment = PaytrailPayment::create(array('orderNumber' => $transaction->orderIdentifier, 'referenceNumber' => $transaction->referenceNumber, 'description' => $transaction->description, 'contactId' => $contact->id, 'urlsetId' => $urlset->id, 'locale' => $this->normalizeLocale($transaction->locale))); foreach ($transaction->items as $item) { PaytrailProduct::create(array('paymentId' => $payment->id, 'title' => $item->description, 'code' => $item->code, 'quantity' => (double) $item->quantity, 'price' => $item->price, 'vat' => $item->vat, 'discount' => $item->discount, 'type' => Product::TYPE_NORMAL)); } $this->_payment = $payment; }