Auto-invoice order upon payment confirmation.
This commit is contained in:
parent
4212490404
commit
0b9fa99865
|
@ -61,6 +61,4 @@ class Bitpay_Bitcoins_Block_Iframe extends Mage_Checkout_Block_Onepage_Payment
|
|||
|
||||
return $invoice['url'].'&view=iframe';
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
}
|
|
@ -124,10 +124,33 @@ class Bitpay_Bitcoins_Model_PaymentMethod extends Mage_Payment_Model_Method_Abst
|
|||
// order status will be PAYMENT_REVIEW instead of PROCESSING
|
||||
$payment->setIsTransactionPending(true);
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->MarkOrderPaid($payment->getOrder());
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
function MarkOrderPaid($order)
|
||||
{
|
||||
$order->setState(Mage_Sales_Model_Order::STATE_PROCESSING, true)->save();
|
||||
if (!count($order->getInvoiceCollection()))
|
||||
{
|
||||
$invoice = $order->prepareInvoice()
|
||||
->setTransactionId(1)
|
||||
->addComment('Invoiced automatically by Bitpay/Bitcoins/controllers/IndexController.php')
|
||||
->register()
|
||||
->pay();
|
||||
|
||||
$transactionSave = Mage::getModel('core/resource_transaction')
|
||||
->addObject($invoice)
|
||||
->addObject($invoice->getOrder());
|
||||
$transactionSave->save();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function CreateInvoiceAndRedirect($payment, $amount)
|
||||
{
|
||||
include 'lib/bitpay/bp_lib.php';
|
||||
|
|
|
@ -8,13 +8,16 @@ class Bitpay_Bitcoins_IndexController extends Mage_Core_Controller_Front_Action
|
|||
$params = $this->getRequest()->getParams();
|
||||
$quoteId = $params['quote'];
|
||||
$paid = Mage::getModel('Bitcoins/ipn')->GetQuotePaid($quoteId);
|
||||
print json_encode(array('paid' => $paid));
|
||||
print json_encode(array('paid' => $paid));
|
||||
exit();
|
||||
}
|
||||
|
||||
// bitpay's IPN lands here
|
||||
public function indexAction() {
|
||||
require 'lib/bitpay/bp_lib.php';
|
||||
|
||||
Mage::log(file_get_contents('php://input'));
|
||||
|
||||
$apiKey = Mage::getStoreConfig('payment/Bitcoins/api_key');
|
||||
$invoice = bpVerifyNotification($apiKey);
|
||||
|
||||
|
@ -32,20 +35,16 @@ class Bitpay_Bitcoins_IndexController extends Mage_Core_Controller_Front_Action
|
|||
}
|
||||
|
||||
// save the ipn so that we can find it when the user clicks "Place Order"
|
||||
Mage::getModel('Bitcoins/ipn')->Record($invoice);
|
||||
|
||||
|
||||
Mage::getModel('Bitcoins/ipn')->Record($invoice);
|
||||
|
||||
// update the order if it exists already
|
||||
if ($order->getId())
|
||||
switch($invoice['status']) {
|
||||
case 'confirmed':
|
||||
case 'complete':
|
||||
foreach($order->getInvoiceCollection() as $i)
|
||||
$i->pay()
|
||||
->save();
|
||||
$order->setState(Mage_Sales_Model_Order::STATE_PROCESSING, true)
|
||||
->save();
|
||||
case 'complete':
|
||||
$method = Mage::getModel('Bitcoins/paymentMethod');
|
||||
$method->MarkOrderPaid($order);
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue