Skip to main content

This site requires you to update your browser. Your browsing experience maybe affected by not having the most up to date version.

We're retiring the forums!

The SilverStripe forums have passed their heyday. They'll stick around, but will be read only. We'd encourage you to get involved in the community via the following channels instead:

E-Commerce Modules /

Discuss about the various e-commerce modules available:
Ecommerce, SS Shop, SilverCart and SwipeStripe
Alternatively, have a look the shared mailinglist.

Moderators: martimiz, Nicolaas, Sean, Ed, frankmullenger, biapar, Willr, Ingo, Jedateach, swaiba

Working on e-commerce for SS 2.4

Go to End

121 Posts   19587 Views


Forum Moderator, 435 Posts

24 June 2010 at 7:23pm

ok...thank you for clarification.


Community Member, 56 Posts

1 July 2010 at 7:25pm

Edited: 01/07/2010 7:25pm


just been testing the paypal payment with the latest version from google...
seems pretty good and working but on return to shop after payment..
I get an error

[Notice] Object of class Money could not be converted to int

Line 450 in /Users/mikemcvey/Sites/birds/ecommerce/code/model/Order.php

441 	/**
442 	 * Checks to see if any payments have been made on this order
443 	 * and if so, subracts the payment amount from the order
444 	 * Precondition : The order is in DB
445 	 */
446 	function TotalOutstanding(){
447 		$total = $this->Total();
448 		if($payments = $this->Payments()) {
449 			foreach($payments as $payment) {
450 				if($payment->Status == 'Success') $total -= $payment->Amount;
451 			}
452 		}
453 		return $total;
454 	}
456 	/**

Any Ideas??


Forum Moderator, 238 Posts

1 July 2010 at 7:27pm

Hi wainui, I fixed that in my 'burnbright' branch of the code. All that needs changing is:

$payment->Amount becomes $payment->Amount->Amount


Community Member, 56 Posts

1 July 2010 at 10:27pm

thank you very much :)
how do I check out other branches like yours?


Forum Moderator, 238 Posts

2 July 2010 at 8:35am


Community Member, 56 Posts

13 July 2010 at 5:17pm

Hey jedaTeach..

found a small error in the include which make the payment data not display properly..

<% control Payment %>

Should be
<% control Payments %>


Community Member, 48 Posts

13 July 2010 at 7:28pm

Hi jeda and hi guys,
as we all know the ecommerce module creates if the database is empty a couple of example products and so on...
i looked through the code and found how it's done. I need for testing purposes to create a test function that builds a number of products (ie 100, 1000, 100000) to test site tree stability. I did this, in my own extension of the Product class (myextendedproduct):

function test () {
		$group = new MyExtendedProductGroup();
			$group->Title = 'Example product group';
			$group->Content = '<p>This is a nested <em>product group</em> within the main <em>product group</em> page. You can add a paragraph here to describe what this product group is about, and what sort of products you can expect to find in it.</p>';
			$group->URLSegment = 'example-product-group';
			$group->publish('Stage', 'Live');
		for ($i = 0; $i < 100; $i++){
			$page1 = new MyExtendedProduct();
			$page1->Title = 'Example product'.i;
			$page1->Content = $content . '<p>You may also notice that we have checked it as a featured product and it will be displayed on the main Products page.</p>';
			$page1->URLSegment = 'example-product'.i;
			$page1->ParentID = $group->ID;
			$page1->Price = '15.00';
			$page1->Weight = '0.50';
			$page1->Model = 'Joe Bloggs'.i;
			$page1->FeaturedProduct = true;
			$page1->publish('Stage', 'Live');
			DB::alteration_message('Product page \'Example product\' created', 'created');

Anyway it's not working. Do i have to separate the product from the productgroup? and anyway, anyone tested large numbers in the site tree?


Community Member, 56 Posts

13 July 2010 at 7:35pm

Also small error with check payment module and cheque payment.. which cause emails to have html code displayed.


class ChequePayment extends Payment {
	 * Process the Cheque payment method
	function processPayment($data, $form) {
		$this->Status = 'Pending';

/* HTML entered here into payment message..... */

		$this->Message = '<p class="warningMessage">' . _t('ChequePayment.MESSAGE', 'Payment accepted via Cheque. Please note : products will not be shipped until payment has been received.') . '</p>';
		return new Payment_Success();

class Payment extends DataObject {

 	 * Incomplete (default): Payment created but nothing confirmed as successful
 	 * Success: Payment successful
 	 * Failure: Payment failed during process
 	 * Pending: Payment awaiting receipt/bank transfer etc
	public static $db = array(
		'Status' => "Enum('Incomplete,Success,Failure,Pending','Incomplete')",
		'Amount' => 'Money',

// * EDIT -  'Message' => 'Text',  
/* Message should be HTMLText as feeding html warnings into it from ecommerce which are coming out as text in emails.. */

		'Message' => 'HTMLText',

		'IP' => 'Varchar',
		'ProxyIP' => 'Varchar',
		'PaidForID' => "Int",
		'PaidForClass' => 'Varchar',
		//This is used only when the payment is one of the recurring payments, when a scheduler is trying to 
		//find which is the latest one for the recurring payments
		'PaymentDate' => "Date",
		//Usered for store any Exception during this payment Process.
		'ExceptionError' => 'Text'

Not sure which should be fixed... the payment or the cheque?

Go to Top