diff -rupN Kohana_v2.3.4.orig/modules/payment/libraries/Payment.php Kohana_v2.3.4/modules/payment/libraries/Payment.php
--- Kohana_v2.3.4.orig/modules/payment/libraries/Payment.php	2008-12-14 18:48:56.000000000 -0700
+++ Kohana_v2.3.4/modules/payment/libraries/Payment.php	2009-10-14 02:03:20.000000000 -0700
@@ -120,4 +120,15 @@ class Payment_Core {
 	{
 		return $this->driver->process();
 	}
+	
+	/**
+	 * Returns the response from the payment processing service/provider 
+	 *
+	 * @return  array  array containing response of last call to process() or an empty array if no call or an error
+	 */
+	public function response()
+	{
+		return $this->driver->response();
+	}
+	
 }
diff -rupN Kohana_v2.3.4.orig/modules/payment/libraries/drivers/Payment/Authorize.php Kohana_v2.3.4/modules/payment/libraries/drivers/Payment/Authorize.php
--- Kohana_v2.3.4.orig/modules/payment/libraries/drivers/Payment/Authorize.php	2009-04-07 16:03:16.000000000 -0700
+++ Kohana_v2.3.4/modules/payment/libraries/drivers/Payment/Authorize.php	2009-10-14 02:05:32.000000000 -0700
@@ -87,6 +87,20 @@ class Payment_Authorize_Driver implement
 		
 		return NULL;
 	}
+	
+	/**
+	 * Returns an array containing response from successful transaction
+	 *
+	 * @return array
+	 */
+	public function response()
+	{
+		if ($this->response === null)
+		{
+			return array();
+		}
+		return $this->response;
+	}
 
 	/**
 	 * Process a given transaction.
diff -rupN Kohana_v2.3.4.orig/modules/payment/libraries/drivers/Payment/Googlecheckout.php Kohana_v2.3.4/modules/payment/libraries/drivers/Payment/Googlecheckout.php
--- Kohana_v2.3.4.orig/modules/payment/libraries/drivers/Payment/Googlecheckout.php	2008-12-15 11:12:24.000000000 -0700
+++ Kohana_v2.3.4/modules/payment/libraries/drivers/Payment/Googlecheckout.php	2009-10-14 02:07:00.000000000 -0700
@@ -29,6 +29,8 @@ class Payment_Googlecheckout_Driver impl
 	);
 
 	private $test_mode = TRUE;
+	
+	private $response  = array();
 
 	/**
 	 * Sets the config for the class.
@@ -75,6 +77,10 @@ class Payment_Googlecheckout_Driver impl
 	 */
 	public function process()
 	{
+		// force response to be empty array
+		
+		$this->response = array();
+		
 		$post_url = ($this->test_mode)
 	    	      ? 'https://sandbox.google.com/checkout/api/checkout/v2/'.$this->fields['action'].'/Merchant/'.$this->fields['google_sandbox_merchant_id'] // Test mode URL
 	        	  : 'https://checkout.google.com/api/checkout/v2/'.$this->fields['action'].'/Merchant/'.$this->fields['google_merchant_id']; // Live URL
@@ -94,8 +100,22 @@ class Payment_Googlecheckout_Driver impl
 		// Execute post and get results
 		$response = curl_exec($ch);
 		curl_close ($ch);
+		
+		// save response
+		
+		$this->response = $response;
 
 		// Return a response if there was one
 		return (!empty($response)) ? $response : Kohana::lang('payment.error', Kohana::lang('payment_GoogleCheckout.'.$response['error_code']));
 	}
+	
+	/**
+	 * Returns response
+	 *
+	 * @return array 
+	 */
+	public function response()
+	{
+		return $this->response();
+	}
 } // End Payment_GoogleCheckout_Driver Class
\ No newline at end of file
diff -rupN Kohana_v2.3.4.orig/modules/payment/libraries/drivers/Payment/Moneybookers.php Kohana_v2.3.4/modules/payment/libraries/drivers/Payment/Moneybookers.php
--- Kohana_v2.3.4.orig/modules/payment/libraries/drivers/Payment/Moneybookers.php	2008-12-15 11:09:34.000000000 -0700
+++ Kohana_v2.3.4/modules/payment/libraries/drivers/Payment/Moneybookers.php	2009-10-14 02:08:30.000000000 -0700
@@ -43,6 +43,8 @@ class Payment_Moneybookers_Driver implem
 	);
 
 	private $test_mode = TRUE;
+	
+	private $response = array();
 
 	/**
 	 * Sets the config for the class.
@@ -86,6 +88,10 @@ class Payment_Moneybookers_Driver implem
 
 	public function process()
 	{	
+		// force response to be empty array
+		
+		$this->response = array();
+		
 		$post_url = ($this->test_mode)
 		          ? $this->fields['payment_url'].$this->fields['script'] // Test mode URL
 		          : $this->fields['payment_url'].$this->fields['script']; // Live URL
@@ -166,6 +172,14 @@ class Payment_Moneybookers_Driver implem
 		if($this->fields['action'] != "status_od" && $this->fields['action'] != "status_trn")
 		{
 			$xml = simplexml_load_string($response);
+			
+			// save response - saving XML since we have it
+			
+			$this->response = $xml;
+		} else {
+			// save raw response as array
+			
+			$this->response = array($response);
 		}
 			
 		if($this->fields['action'] == "prepare")
@@ -193,4 +207,15 @@ class Payment_Moneybookers_Driver implem
 			return ($xml->{'status'} == 2) ? $xml : false;
 		}
 	}
+	
+	
+	/**
+	 * Returns response
+	 *
+	 * @return array 
+	 */
+	public function response() 
+	{
+		return $this->response;
+	}
 } // End Payment_MoneyBookers_Driver Class
\ No newline at end of file
diff -rupN Kohana_v2.3.4.orig/modules/payment/libraries/drivers/Payment/Paypal.php Kohana_v2.3.4/modules/payment/libraries/drivers/Payment/Paypal.php
--- Kohana_v2.3.4.orig/modules/payment/libraries/drivers/Payment/Paypal.php	2009-02-19 04:43:44.000000000 -0700
+++ Kohana_v2.3.4/modules/payment/libraries/drivers/Payment/Paypal.php	2009-10-14 02:10:41.000000000 -0700
@@ -170,6 +170,8 @@ class Payment_Paypal_Driver implements P
 	private $array_of_arrays;
 
 	private $test_mode = TRUE;
+	
+	private $response  = array();
 
 	private $nvp_response_array = array();
 	// after successful transaction $nvp_response_array will contain
@@ -324,11 +326,19 @@ class Payment_Paypal_Driver implements P
 	*/
 	protected function set_express_checkout()
 	{
+		// Force response to be empty
+		
+		$this->response = array();
+		
 		$nvp_str = http_build_query($this->remove_empty_optional_fields($this->set_express_checkout_fields));
 
 		$response = $this->make_paypal_api_request($nvp_str);
 
 		parse_str(urldecode($response),$response_array);
+		
+		// save response
+		
+		$this->response = $response_array;
 
 		if (strtoupper($response_array['ACK']) == 'SUCCESS')
 		{
@@ -363,11 +373,19 @@ class Payment_Paypal_Driver implements P
 	*/
 	protected function get_express_checkout()
 	{
+		// Force response to be empty
+		
+		$this->response = array();
+		
 		$nvp_str = http_build_query($this->get_express_checkout_fields);
 
 		$response = $this->make_paypal_api_request($nvp_str);
 
 		parse_str(urldecode($response),$this->get_express_checkout_response);
+		
+		// save response
+		
+		$this->response = $this->get_express_checkout_response;
 
 		if (strtoupper($this->get_express_checkout_response['ACK']) == 'SUCCESS')
 		{
@@ -389,11 +407,19 @@ class Payment_Paypal_Driver implements P
 	*/
 	protected function do_express_checkout_payment()
 	{
+		// force response to be empty array
+		
+		$this->response = array();
+		
 		$nvp_qstr = http_build_query($this->remove_empty_optional_fields($this->do_express_checkout_fields));
 
 		$response = $this->make_paypal_api_request($nvp_qstr);
 
 		parse_str(urldecode($response),$this->nvp_response_array);
+		
+		// save response
+		
+		$this->response = $this->nvp_response_array;
 
 		if (strtoupper($this->nvp_response_array['ACK']) != 'SUCCESS')
 		{
@@ -461,5 +487,14 @@ class Payment_Paypal_Driver implements P
 		}
 		return $arr;
 	}
-
+	
+	/**
+	 * Returns response
+	 *
+	 * @return array 
+	 */
+	public function response()
+	{
+		return $this->response;
+	}
 } // End Payment_Paypal_Driver Class
diff -rupN Kohana_v2.3.4.orig/modules/payment/libraries/drivers/Payment/Paypalpro.php Kohana_v2.3.4/modules/payment/libraries/drivers/Payment/Paypalpro.php
--- Kohana_v2.3.4.orig/modules/payment/libraries/drivers/Payment/Paypalpro.php	2008-12-14 18:48:56.000000000 -0700
+++ Kohana_v2.3.4/modules/payment/libraries/drivers/Payment/Paypalpro.php	2009-10-14 02:15:02.000000000 -0700
@@ -106,6 +106,8 @@ class Payment_Paypalpro_Driver implement
 	);
 
 	private $test_mode = TRUE;
+	
+	private $response = array();
 
 	/**
 	 * Sets the config for the class.
@@ -143,6 +145,10 @@ class Payment_Paypalpro_Driver implement
 		$this->required_fields['CURRENCYCODE'] = !empty($config['CURRENCYCODE']);
 
 		$this->curl_config = $config['curl_config'];
+		
+		// force response property to be empty
+		
+		$this->response = array();
 
 		Kohana::log('debug', 'Paypalpro Payment Driver Initialized');
 	}
@@ -171,6 +177,10 @@ class Payment_Paypalpro_Driver implement
 
 	public function process()
 	{
+		// force response property to be empty
+		
+		$this->response = array();
+
 		// Check for required fields
 		if (in_array(FALSE, $this->required_fields))
 		{
@@ -222,8 +232,23 @@ class Payment_Paypalpro_Driver implement
 		$nvp_res_array = array();
 
 		parse_str(urldecode($response),$nvp_res_array);
+		
+		// save response for later use
+		
+		$this->response = $nvp_res_array;
 
 		return ($nvp_res_array['ACK'] == TRUE);
 
 	}
+	
+	
+	/**
+	 * Returns response
+	 *
+	 * @return array 
+	 */
+	public function response()
+	{
+		return $this->response;
+	}
 } // End Payment_Paypalpro_Driver Class
\ No newline at end of file
diff -rupN Kohana_v2.3.4.orig/modules/payment/libraries/drivers/Payment/Trident.php Kohana_v2.3.4/modules/payment/libraries/drivers/Payment/Trident.php
--- Kohana_v2.3.4.orig/modules/payment/libraries/drivers/Payment/Trident.php	2008-12-14 18:48:56.000000000 -0700
+++ Kohana_v2.3.4/modules/payment/libraries/drivers/Payment/Trident.php	2009-10-14 02:12:48.000000000 -0700
@@ -33,6 +33,8 @@ class Payment_Trident_Driver implements 
 	);
 
 	private $test_mode = TRUE;
+	
+	private $response = array();
 
 	/**
 	 * Sets the config for the class.
@@ -87,6 +89,10 @@ class Payment_Trident_Driver implements 
 
 	public function process()
 	{
+		// Force response to be empty
+		
+		$this->response = array();
+		
 		// Check for required fields
 		if (in_array(FALSE, $this->required_fields))
 		{
@@ -128,7 +134,22 @@ class Payment_Trident_Driver implements 
 			$temp = explode('=', $code);
 			$response[$temp[0]] = $temp[1];
 		}
+		
+		// save response
+		
+		$this->response = $response;
 
 		return ($response['error_code'] == '000') ? TRUE : Kohana::lang('payment.error', Kohana::lang('payment_Trident.'.$response['error_code']));
 	}
+	
+	
+	/**
+	 * Returns response
+	 *
+	 * @return array 
+	 */
+	public function response()
+	{
+		return $this->response;
+	}
 } // End Payment_Trident_Driver Class
\ No newline at end of file
diff -rupN Kohana_v2.3.4.orig/modules/payment/libraries/drivers/Payment/Trustcommerce.php Kohana_v2.3.4/modules/payment/libraries/drivers/Payment/Trustcommerce.php
--- Kohana_v2.3.4.orig/modules/payment/libraries/drivers/Payment/Trustcommerce.php	2008-12-14 18:48:56.000000000 -0700
+++ Kohana_v2.3.4/modules/payment/libraries/drivers/Payment/Trustcommerce.php	2009-10-14 02:13:18.000000000 -0700
@@ -28,6 +28,8 @@ class Payment_Trustcommerce_Driver imple
 
 	private $fields = array('demo' => 'n');
 
+	private $response = array();
+	
 	/**
 	 * Sets the config for the class.
 	 *
@@ -103,6 +105,10 @@ class Payment_Trustcommerce_Driver imple
 
 	public function process()
 	{
+		// Force response to be empty
+		
+		$this->response = array();
+		
 		if ($this->test_mode)
 			$this->fields['demo'] = 'y';
 
@@ -126,6 +132,10 @@ class Payment_Trustcommerce_Driver imple
 
 		$result = tclink_send($this->fields);
 
+		// save response
+		
+		$this->response = $result;
+		
 		// Report status
 		if ($result['status'] == 'approved')
 			return TRUE;
@@ -134,4 +144,15 @@ class Payment_Trustcommerce_Driver imple
 		else
 			return Kohana::lang('payment.error', Kohana::lang('payment_Trustcommerce.'.$result['status'].'.'.$result['error']));
 	}
+	
+	
+	/**
+	 * Returns response
+	 *
+	 * @return array 
+	 */
+	public function response()
+	{
+		return $this->response;
+	}
 } // End Payment_Trustcommerce_Driver Class
\ No newline at end of file
diff -rupN Kohana_v2.3.4.orig/modules/payment/libraries/drivers/Payment/Yourpay.php Kohana_v2.3.4/modules/payment/libraries/drivers/Payment/Yourpay.php
--- Kohana_v2.3.4.orig/modules/payment/libraries/drivers/Payment/Yourpay.php	2008-12-14 18:48:56.000000000 -0700
+++ Kohana_v2.3.4/modules/payment/libraries/drivers/Payment/Yourpay.php	2009-10-14 02:13:54.000000000 -0700
@@ -46,6 +46,8 @@ class Payment_Yourpay_Driver implements 
 	// The location of the certficate file. Set from the config
 	private $certificate = './path/to/certificate';
 	private $test_mode = TRUE;
+	
+	private $response = array();
 
 	/**
 	 * Sets the config for the class.
@@ -87,6 +89,10 @@ class Payment_Yourpay_Driver implements 
 
 	public function process()
 	{
+		// Force response to be empty
+		
+		$this->response = array();
+		
 		// Check for required fields
 		if (in_array(FALSE, $this->required_fields))
 		{
@@ -160,6 +166,10 @@ class Payment_Yourpay_Driver implements 
 				$n++;
 			}
 
+			// save response
+			
+			$this->response = $retarr;
+
 			if ($retarr['r_approved'] == "APPROVED") // SUCCESS
 			{
 				return true;
@@ -173,4 +183,15 @@ class Payment_Yourpay_Driver implements 
 		else
 			throw new Kohana_Exception('payment.gateway_connection_error');
 	}
+	
+	
+	/**
+	 * Returns response
+	 *
+	 * @return array 
+	 */
+	public function response()
+	{
+		return $this->response;
+	}
 } // End Payment_Yourpay_Driver Class
\ No newline at end of file
diff -rupN Kohana_v2.3.4.orig/modules/payment/libraries/drivers/Payment.php Kohana_v2.3.4/modules/payment/libraries/drivers/Payment.php
--- Kohana_v2.3.4.orig/modules/payment/libraries/drivers/Payment.php	2008-12-14 18:48:56.000000000 -0700
+++ Kohana_v2.3.4/modules/payment/libraries/drivers/Payment.php	2009-10-14 02:14:20.000000000 -0700
@@ -25,4 +25,11 @@ interface Payment_Driver {
 	 */
 	public function process();
 
+	/**
+	 * Returns the response from the payment driver.
+	 *
+	 * @return  array
+	 */
+	public function response();
+
 } // End Payment Driver Interface
\ No newline at end of file
