Пример #1
0
 protected function _processPlans($payment, $plans)
 {
     $allow_multiples = Mage::getStoreConfigFlag('payment/pagarme_subscriptions/allow_multiples');
     if (count($plans) > 1 && !$allow_multiples) {
         Mage::throwException(Mage::helper('pagarme')->__('Subscription of multiple plans are not allowed!'));
     }
     $api_mode = Mage::getStoreConfig('payment/pagarme_settings/mode');
     $api_key = Mage::getStoreConfig('payment/pagarme_settings/apikey_' . $api_mode);
     Pagarme::setApiKey($api_key);
     $customer_email = $payment->getOrder()->getCustomerEmail();
     $result = null;
     foreach ($plans as $id => $qty) {
         $_plan = Mage::getModel('pagarme/plans')->load($id);
         $subscription = new PagarMe_Subscription(array('plan' => PagarMe_Plan::findById($_plan->getRemoteId()), 'payment_method' => 'boleto', 'customer' => array('email' => $customer_email), 'postback_url' => Mage::getUrl('pagarme/transaction_subscription/postback', array('id' => $payment->getOrder()->getId()))));
         $subscription->create();
         $result = $subscription->current_transaction;
         $transaction = Mage::getModel('pagarme/subscriptions')->setPlanId($_plan->getId())->setRemotePlanId($_plan->getRemoteId())->setRemoteId($subscription->getId())->setTransactionId($result->getId())->setOrderId($payment->getOrder()->getId())->setPaymentMethod($result->getPaymentMethod())->setAmount(intval($result->getAmount()) / 100)->setCost($result->getCost())->setRemoteIP($result->getIp())->setBoletoUrl($result->getBoletoUrl())->setBoletoBarcode($result->getBoletoBarcode())->setBoletoExpirationDate($result->getBoletoExpirationDate())->setStatus($result->getStatus())->setCreatedAt($result->getDateCreated())->setUpdatedAt($result->getDateUpdated())->save();
     }
     // pagar.me info
     $payment->setPagarmeSubscriptionId($subscription->getId())->setPagarmeTransactionId($result->getId())->setPagarmeBoletoUrl($result->getBoletoUrl())->setPagarmeBoletoBarcode($result->getBoletoBarcode())->setPagarmeBoletoExpirationDate($result->getBoletoExpirationDate());
     $payment->setTransactionAdditionalInfo(Mage_Sales_Model_Order_Payment_Transaction::RAW_DETAILS, array('status' => $result->getStatus()));
 }
Пример #2
0
 public function testCreateWithPlan()
 {
     $plan = self::createTestPlan();
     $subscription = self::createTestSubscription();
     $plan->create();
     $subscription->setPlan($plan);
     $subscription->create();
     $this->validateSubscription($subscription);
     $this->assertTrue($subscription->getPlan()->getId());
     $this->assertTrue($plan->getId());
     $subscription2 = PagarMe_Subscription::findById($subscription->getId());
     $this->assertTrue($subscription2->getPlan());
     $this->assertEqual($subscription2->getPlan()->getId(), $plan->getId());
     $card = self::createTestCard();
     $subscription3 = new PagarMe_Subscription(array('customer' => array('email' => '*****@*****.**')));
     $subscription3->setPlan($plan);
     $subscription3->setCard($card);
     $subscription3->create();
     $this->assertTrue($subscription3->getId());
     $card->create();
     $subscription4 = new PagarMe_Subscription(array('customer' => array('email' => '*****@*****.**')));
     $subscription4->setPlan($plan);
     $subscription4->setCard($card);
     $subscription4->create();
     $this->assertTrue($subscription4->getId());
     $subscription4 = new PagarMe_Subscription(array('card' => $card, 'customer' => array('email' => '*****@*****.**')));
     $subscription4->setPlan($plan);
     $subscription4->create();
     $this->assertTrue($subscription4->getId());
 }