Code to enable downloadable product?Programtically add files to downloadable productresumable link in...

What major Native American tribes were around Santa Fe during the late 1850s?

Is a file system driver implemented using a kernel module in Linux?

Will adding a BY-SA image to a blog post make the entire post BY-SA?

Gibbs free energy in standard state vs. equilibrium

Is it improper etiquette to ask your opponent what his/her rating is before the game?

Do the concepts of IP address and network interface not belong to the same layer?

Why does Async/Await work properly when the loop is inside the async function and not the other way around?

Varistor? Purpose and principle

Journal losing indexing services

Did US corporations pay demonstrators in the German demonstrations against article 13?

Customize circled numbers

Can someone explain how this makes sense electrically?

What is this type of notehead called?

My friend sent me a screenshot of a transaction hash, but when I search for it I find divergent data. What happened?

Greco-Roman egalitarianism

Fuse symbol on toroidal transformer

How can "mimic phobia" be cured or prevented?

Can I sign legal documents with a smiley face?

Is it possible to have a strip of cold climate in the middle of a planet?

How can Trident be so inexpensive? Will it orbit Triton or just do a (slow) flyby?

How much character growth crosses the line into breaking the character

What's the difference between 違法 and 不法?

THT: What is a squared annular “ring”?

Have I saved too much for retirement so far?



Code to enable downloadable product?


Programtically add files to downloadable productresumable link in downloadable productChange staus of downloadable product in magento after purchase?Magento - Downloadable product link emptyDownloadable product with shippingMagento How to add configurable product while placing order programatically?Help for Downloadable ProductOverride event for downloadable productMagento 2.1 downloadable product linkError when creating downloadable product













0















I have the following custom payment plugin controller. After purchase, it does not enable a downloadable product. I am wondering if there is a simple line of code I could add so that this controller will also make the downloadable product in the order Available.




//Get data from Gateway postback
$data = $this->getRequest()->getPost();
$orderId = $data['orderid'];

if ($data['reasonForDeclineCode'] == '') {
// Payment was successful, so update the order's state, send order email and move to the success page
$order = Mage::getModel('sales/order');
$order->loadByIncrementId($orderId);
$order->setState(Mage_Sales_Model_Order::STATE_PROCESSING, true, 'Gateway has authorized the payment.');
$order->setStatus('processing');
$order->sendNewOrderEmail();
$order->setEmailSent(true);

$order->save();

Mage::getSingleton('checkout/session')->unsQuoteId();

Mage_Core_Controller_Varien_Action::_redirect('checkout/onepage/success', array('_secure'=>true));
} else {
// Payment was declined, so update the order's state, send order email and move to the success page
$order = Mage::getModel('sales/order');
$order->loadByIncrementId($orderId);
$order->setState(Mage_Sales_Model_Order::STATE_CANCELED, true, 'Gateway has declined the payment.');

//$order->sendNewOrderEmail();
//$order->setEmailSent(true);

$order->save();

Mage::getSingleton('checkout/session')->unsQuoteId();

Mage_Core_Controller_Varien_Action::_redirect('checkout/onepage/failed', array('_secure'=>true));
}


I ended up "solving" the problem by adding the following code to invoice successful orders after $order->setStatus('processing'); and before $order->sendNewOrderEmail(); however now I have a problem where every time an order is placed, the status on previous successful orders once again gets updated with processing and complete. This happens many more times. So far it's just an annoyance and bad for my database but not hurting anything. I will look into it later but if someone has a hint.




//create invoice for the order
$invoice = $order->prepareInvoice()
->setTransactionId($order->getId())
->addComment("Invoice created by payment processor plugin.")
->register()
->pay();

$transaction_save = Mage::getModel('core/resource_transaction')
->addObject($invoice)
->addObject($invoice->getOrder());

$transaction_save->save();
//now create shipment
//after creation of shipment, the order auto gets status COMPLETE
$shipment = $order->prepareShipment();
if( $shipment ) {
$shipment->register();
$order->setIsInProcess(true);

$transaction_save = Mage::getModel('core/resource_transaction')
->addObject($shipment)
->addObject($shipment->getOrder())
->save();
}









share|improve this question
















bumped to the homepage by Community 11 mins ago


This question has answers that may be good or bad; the system has marked it active so that they can be reviewed.




















    0















    I have the following custom payment plugin controller. After purchase, it does not enable a downloadable product. I am wondering if there is a simple line of code I could add so that this controller will also make the downloadable product in the order Available.




    //Get data from Gateway postback
    $data = $this->getRequest()->getPost();
    $orderId = $data['orderid'];

    if ($data['reasonForDeclineCode'] == '') {
    // Payment was successful, so update the order's state, send order email and move to the success page
    $order = Mage::getModel('sales/order');
    $order->loadByIncrementId($orderId);
    $order->setState(Mage_Sales_Model_Order::STATE_PROCESSING, true, 'Gateway has authorized the payment.');
    $order->setStatus('processing');
    $order->sendNewOrderEmail();
    $order->setEmailSent(true);

    $order->save();

    Mage::getSingleton('checkout/session')->unsQuoteId();

    Mage_Core_Controller_Varien_Action::_redirect('checkout/onepage/success', array('_secure'=>true));
    } else {
    // Payment was declined, so update the order's state, send order email and move to the success page
    $order = Mage::getModel('sales/order');
    $order->loadByIncrementId($orderId);
    $order->setState(Mage_Sales_Model_Order::STATE_CANCELED, true, 'Gateway has declined the payment.');

    //$order->sendNewOrderEmail();
    //$order->setEmailSent(true);

    $order->save();

    Mage::getSingleton('checkout/session')->unsQuoteId();

    Mage_Core_Controller_Varien_Action::_redirect('checkout/onepage/failed', array('_secure'=>true));
    }


    I ended up "solving" the problem by adding the following code to invoice successful orders after $order->setStatus('processing'); and before $order->sendNewOrderEmail(); however now I have a problem where every time an order is placed, the status on previous successful orders once again gets updated with processing and complete. This happens many more times. So far it's just an annoyance and bad for my database but not hurting anything. I will look into it later but if someone has a hint.




    //create invoice for the order
    $invoice = $order->prepareInvoice()
    ->setTransactionId($order->getId())
    ->addComment("Invoice created by payment processor plugin.")
    ->register()
    ->pay();

    $transaction_save = Mage::getModel('core/resource_transaction')
    ->addObject($invoice)
    ->addObject($invoice->getOrder());

    $transaction_save->save();
    //now create shipment
    //after creation of shipment, the order auto gets status COMPLETE
    $shipment = $order->prepareShipment();
    if( $shipment ) {
    $shipment->register();
    $order->setIsInProcess(true);

    $transaction_save = Mage::getModel('core/resource_transaction')
    ->addObject($shipment)
    ->addObject($shipment->getOrder())
    ->save();
    }









    share|improve this question
















    bumped to the homepage by Community 11 mins ago


    This question has answers that may be good or bad; the system has marked it active so that they can be reviewed.


















      0












      0








      0








      I have the following custom payment plugin controller. After purchase, it does not enable a downloadable product. I am wondering if there is a simple line of code I could add so that this controller will also make the downloadable product in the order Available.




      //Get data from Gateway postback
      $data = $this->getRequest()->getPost();
      $orderId = $data['orderid'];

      if ($data['reasonForDeclineCode'] == '') {
      // Payment was successful, so update the order's state, send order email and move to the success page
      $order = Mage::getModel('sales/order');
      $order->loadByIncrementId($orderId);
      $order->setState(Mage_Sales_Model_Order::STATE_PROCESSING, true, 'Gateway has authorized the payment.');
      $order->setStatus('processing');
      $order->sendNewOrderEmail();
      $order->setEmailSent(true);

      $order->save();

      Mage::getSingleton('checkout/session')->unsQuoteId();

      Mage_Core_Controller_Varien_Action::_redirect('checkout/onepage/success', array('_secure'=>true));
      } else {
      // Payment was declined, so update the order's state, send order email and move to the success page
      $order = Mage::getModel('sales/order');
      $order->loadByIncrementId($orderId);
      $order->setState(Mage_Sales_Model_Order::STATE_CANCELED, true, 'Gateway has declined the payment.');

      //$order->sendNewOrderEmail();
      //$order->setEmailSent(true);

      $order->save();

      Mage::getSingleton('checkout/session')->unsQuoteId();

      Mage_Core_Controller_Varien_Action::_redirect('checkout/onepage/failed', array('_secure'=>true));
      }


      I ended up "solving" the problem by adding the following code to invoice successful orders after $order->setStatus('processing'); and before $order->sendNewOrderEmail(); however now I have a problem where every time an order is placed, the status on previous successful orders once again gets updated with processing and complete. This happens many more times. So far it's just an annoyance and bad for my database but not hurting anything. I will look into it later but if someone has a hint.




      //create invoice for the order
      $invoice = $order->prepareInvoice()
      ->setTransactionId($order->getId())
      ->addComment("Invoice created by payment processor plugin.")
      ->register()
      ->pay();

      $transaction_save = Mage::getModel('core/resource_transaction')
      ->addObject($invoice)
      ->addObject($invoice->getOrder());

      $transaction_save->save();
      //now create shipment
      //after creation of shipment, the order auto gets status COMPLETE
      $shipment = $order->prepareShipment();
      if( $shipment ) {
      $shipment->register();
      $order->setIsInProcess(true);

      $transaction_save = Mage::getModel('core/resource_transaction')
      ->addObject($shipment)
      ->addObject($shipment->getOrder())
      ->save();
      }









      share|improve this question
















      I have the following custom payment plugin controller. After purchase, it does not enable a downloadable product. I am wondering if there is a simple line of code I could add so that this controller will also make the downloadable product in the order Available.




      //Get data from Gateway postback
      $data = $this->getRequest()->getPost();
      $orderId = $data['orderid'];

      if ($data['reasonForDeclineCode'] == '') {
      // Payment was successful, so update the order's state, send order email and move to the success page
      $order = Mage::getModel('sales/order');
      $order->loadByIncrementId($orderId);
      $order->setState(Mage_Sales_Model_Order::STATE_PROCESSING, true, 'Gateway has authorized the payment.');
      $order->setStatus('processing');
      $order->sendNewOrderEmail();
      $order->setEmailSent(true);

      $order->save();

      Mage::getSingleton('checkout/session')->unsQuoteId();

      Mage_Core_Controller_Varien_Action::_redirect('checkout/onepage/success', array('_secure'=>true));
      } else {
      // Payment was declined, so update the order's state, send order email and move to the success page
      $order = Mage::getModel('sales/order');
      $order->loadByIncrementId($orderId);
      $order->setState(Mage_Sales_Model_Order::STATE_CANCELED, true, 'Gateway has declined the payment.');

      //$order->sendNewOrderEmail();
      //$order->setEmailSent(true);

      $order->save();

      Mage::getSingleton('checkout/session')->unsQuoteId();

      Mage_Core_Controller_Varien_Action::_redirect('checkout/onepage/failed', array('_secure'=>true));
      }


      I ended up "solving" the problem by adding the following code to invoice successful orders after $order->setStatus('processing'); and before $order->sendNewOrderEmail(); however now I have a problem where every time an order is placed, the status on previous successful orders once again gets updated with processing and complete. This happens many more times. So far it's just an annoyance and bad for my database but not hurting anything. I will look into it later but if someone has a hint.




      //create invoice for the order
      $invoice = $order->prepareInvoice()
      ->setTransactionId($order->getId())
      ->addComment("Invoice created by payment processor plugin.")
      ->register()
      ->pay();

      $transaction_save = Mage::getModel('core/resource_transaction')
      ->addObject($invoice)
      ->addObject($invoice->getOrder());

      $transaction_save->save();
      //now create shipment
      //after creation of shipment, the order auto gets status COMPLETE
      $shipment = $order->prepareShipment();
      if( $shipment ) {
      $shipment->register();
      $order->setIsInProcess(true);

      $transaction_save = Mage::getModel('core/resource_transaction')
      ->addObject($shipment)
      ->addObject($shipment->getOrder())
      ->save();
      }






      product magento-1 downloadable






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Apr 17 '16 at 7:28









      7ochem

      5,80493768




      5,80493768










      asked Mar 4 '15 at 19:30









      TayKimchiTayKimchi

      11




      11





      bumped to the homepage by Community 11 mins ago


      This question has answers that may be good or bad; the system has marked it active so that they can be reviewed.







      bumped to the homepage by Community 11 mins ago


      This question has answers that may be good or bad; the system has marked it active so that they can be reviewed.
























          1 Answer
          1






          active

          oldest

          votes


















          0














          I've never used downloadable products, but looking at the code, it seems that the downloadable module hooks into the event sales_order_save_commit_after in order to change the status of the download. Since your code calls save on an order object the event itself should be triggered, which means Mage_Downloadable_Model_Observer::setLinkStatus should be called.



          Looking at the code in there, it seems that you can change whether an item is set as available by changing the setting System > Configuration > Catalog > Downloadable Product Options > Order Item Status to Enable Downloads. By default it seems to be Invoiced. Looking at your code it doesn't seem to invoice the order so I'm guessing this is why they don't become available. Changing it to Pending may yield the behaviour you expect.



          Disclaimer: I'm not 100% sure of the repercussions of doing this, but looking at the code I can't imagine there would be anything untoward.






          share|improve this answer
























          • So you could also go with generating a invoice, than it would be just fine.

            – Jeroen
            Mar 4 '15 at 20:27











          • Thank you for taking a look @Cags. The problem with changing Downloadable Availability from Invoiced to Pending is that if the customer manually visits /checkout/onepage/success after being redirected to my payment processors page, the downloads will become available without them needing to pay. @jeroen-boersma When I manually generate an invoice, the downloads do become available. I noticed this a while back and tried to use PlumRocket's Auto Invoice plugin but then the orders would become invoiced without activating downloads. I will look some more but this is driving me nuts... ty again

            – TayKimchi
            Mar 5 '15 at 23:00











          Your Answer








          StackExchange.ready(function() {
          var channelOptions = {
          tags: "".split(" "),
          id: "479"
          };
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function() {
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled) {
          StackExchange.using("snippets", function() {
          createEditor();
          });
          }
          else {
          createEditor();
          }
          });

          function createEditor() {
          StackExchange.prepareEditor({
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: false,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: null,
          bindNavPrevention: true,
          postfix: "",
          imageUploader: {
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          },
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          });


          }
          });














          draft saved

          draft discarded


















          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmagento.stackexchange.com%2fquestions%2f59662%2fcode-to-enable-downloadable-product%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown

























          1 Answer
          1






          active

          oldest

          votes








          1 Answer
          1






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes









          0














          I've never used downloadable products, but looking at the code, it seems that the downloadable module hooks into the event sales_order_save_commit_after in order to change the status of the download. Since your code calls save on an order object the event itself should be triggered, which means Mage_Downloadable_Model_Observer::setLinkStatus should be called.



          Looking at the code in there, it seems that you can change whether an item is set as available by changing the setting System > Configuration > Catalog > Downloadable Product Options > Order Item Status to Enable Downloads. By default it seems to be Invoiced. Looking at your code it doesn't seem to invoice the order so I'm guessing this is why they don't become available. Changing it to Pending may yield the behaviour you expect.



          Disclaimer: I'm not 100% sure of the repercussions of doing this, but looking at the code I can't imagine there would be anything untoward.






          share|improve this answer
























          • So you could also go with generating a invoice, than it would be just fine.

            – Jeroen
            Mar 4 '15 at 20:27











          • Thank you for taking a look @Cags. The problem with changing Downloadable Availability from Invoiced to Pending is that if the customer manually visits /checkout/onepage/success after being redirected to my payment processors page, the downloads will become available without them needing to pay. @jeroen-boersma When I manually generate an invoice, the downloads do become available. I noticed this a while back and tried to use PlumRocket's Auto Invoice plugin but then the orders would become invoiced without activating downloads. I will look some more but this is driving me nuts... ty again

            – TayKimchi
            Mar 5 '15 at 23:00
















          0














          I've never used downloadable products, but looking at the code, it seems that the downloadable module hooks into the event sales_order_save_commit_after in order to change the status of the download. Since your code calls save on an order object the event itself should be triggered, which means Mage_Downloadable_Model_Observer::setLinkStatus should be called.



          Looking at the code in there, it seems that you can change whether an item is set as available by changing the setting System > Configuration > Catalog > Downloadable Product Options > Order Item Status to Enable Downloads. By default it seems to be Invoiced. Looking at your code it doesn't seem to invoice the order so I'm guessing this is why they don't become available. Changing it to Pending may yield the behaviour you expect.



          Disclaimer: I'm not 100% sure of the repercussions of doing this, but looking at the code I can't imagine there would be anything untoward.






          share|improve this answer
























          • So you could also go with generating a invoice, than it would be just fine.

            – Jeroen
            Mar 4 '15 at 20:27











          • Thank you for taking a look @Cags. The problem with changing Downloadable Availability from Invoiced to Pending is that if the customer manually visits /checkout/onepage/success after being redirected to my payment processors page, the downloads will become available without them needing to pay. @jeroen-boersma When I manually generate an invoice, the downloads do become available. I noticed this a while back and tried to use PlumRocket's Auto Invoice plugin but then the orders would become invoiced without activating downloads. I will look some more but this is driving me nuts... ty again

            – TayKimchi
            Mar 5 '15 at 23:00














          0












          0








          0







          I've never used downloadable products, but looking at the code, it seems that the downloadable module hooks into the event sales_order_save_commit_after in order to change the status of the download. Since your code calls save on an order object the event itself should be triggered, which means Mage_Downloadable_Model_Observer::setLinkStatus should be called.



          Looking at the code in there, it seems that you can change whether an item is set as available by changing the setting System > Configuration > Catalog > Downloadable Product Options > Order Item Status to Enable Downloads. By default it seems to be Invoiced. Looking at your code it doesn't seem to invoice the order so I'm guessing this is why they don't become available. Changing it to Pending may yield the behaviour you expect.



          Disclaimer: I'm not 100% sure of the repercussions of doing this, but looking at the code I can't imagine there would be anything untoward.






          share|improve this answer













          I've never used downloadable products, but looking at the code, it seems that the downloadable module hooks into the event sales_order_save_commit_after in order to change the status of the download. Since your code calls save on an order object the event itself should be triggered, which means Mage_Downloadable_Model_Observer::setLinkStatus should be called.



          Looking at the code in there, it seems that you can change whether an item is set as available by changing the setting System > Configuration > Catalog > Downloadable Product Options > Order Item Status to Enable Downloads. By default it seems to be Invoiced. Looking at your code it doesn't seem to invoice the order so I'm guessing this is why they don't become available. Changing it to Pending may yield the behaviour you expect.



          Disclaimer: I'm not 100% sure of the repercussions of doing this, but looking at the code I can't imagine there would be anything untoward.







          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Mar 4 '15 at 20:15









          Peter O'CallaghanPeter O'Callaghan

          4,37731631




          4,37731631













          • So you could also go with generating a invoice, than it would be just fine.

            – Jeroen
            Mar 4 '15 at 20:27











          • Thank you for taking a look @Cags. The problem with changing Downloadable Availability from Invoiced to Pending is that if the customer manually visits /checkout/onepage/success after being redirected to my payment processors page, the downloads will become available without them needing to pay. @jeroen-boersma When I manually generate an invoice, the downloads do become available. I noticed this a while back and tried to use PlumRocket's Auto Invoice plugin but then the orders would become invoiced without activating downloads. I will look some more but this is driving me nuts... ty again

            – TayKimchi
            Mar 5 '15 at 23:00



















          • So you could also go with generating a invoice, than it would be just fine.

            – Jeroen
            Mar 4 '15 at 20:27











          • Thank you for taking a look @Cags. The problem with changing Downloadable Availability from Invoiced to Pending is that if the customer manually visits /checkout/onepage/success after being redirected to my payment processors page, the downloads will become available without them needing to pay. @jeroen-boersma When I manually generate an invoice, the downloads do become available. I noticed this a while back and tried to use PlumRocket's Auto Invoice plugin but then the orders would become invoiced without activating downloads. I will look some more but this is driving me nuts... ty again

            – TayKimchi
            Mar 5 '15 at 23:00

















          So you could also go with generating a invoice, than it would be just fine.

          – Jeroen
          Mar 4 '15 at 20:27





          So you could also go with generating a invoice, than it would be just fine.

          – Jeroen
          Mar 4 '15 at 20:27













          Thank you for taking a look @Cags. The problem with changing Downloadable Availability from Invoiced to Pending is that if the customer manually visits /checkout/onepage/success after being redirected to my payment processors page, the downloads will become available without them needing to pay. @jeroen-boersma When I manually generate an invoice, the downloads do become available. I noticed this a while back and tried to use PlumRocket's Auto Invoice plugin but then the orders would become invoiced without activating downloads. I will look some more but this is driving me nuts... ty again

          – TayKimchi
          Mar 5 '15 at 23:00





          Thank you for taking a look @Cags. The problem with changing Downloadable Availability from Invoiced to Pending is that if the customer manually visits /checkout/onepage/success after being redirected to my payment processors page, the downloads will become available without them needing to pay. @jeroen-boersma When I manually generate an invoice, the downloads do become available. I noticed this a while back and tried to use PlumRocket's Auto Invoice plugin but then the orders would become invoiced without activating downloads. I will look some more but this is driving me nuts... ty again

          – TayKimchi
          Mar 5 '15 at 23:00


















          draft saved

          draft discarded




















































          Thanks for contributing an answer to Magento Stack Exchange!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid



          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.


          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmagento.stackexchange.com%2fquestions%2f59662%2fcode-to-enable-downloadable-product%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          迭戈·戈丁...

          A phrase ”follow into" in a context The 2019 Stack Overflow Developer Survey Results Are...

          1960s short story making fun of James Bond-style spy fiction The 2019 Stack Overflow Developer...