public function refund($Card, $amount, $salestax = null, $comment = null, $is_card_present = false, $is_ecommerce = true, $force_new_transaction = true)
	{
		$this->_setError(QuickBooks_MerchantService::ERROR_OK);
		$this->_log('refund()', QUICKBOOKS_LOG_VERBOSE);
		
		if (!$this->isSignedOn())
		{
			$this->signOn();
			
			if ($this->errorNumber())
			{
				return false;
			}
		}
		
		// Error checking
		if (!($Card instanceof QuickBooks_MerchantService_CreditCard))
		{
			$this->_setError(QuickBooks_MerchantService::ERROR_PARAM, 'refund() expects first parameter to be a Card object, got: ' . print_r($Card, true));
			return false;
		}
		
		if (!is_numeric($amount))
		{
			$this->_setError(QuickBooks_MerchantService::ERROR_PARAM, 'refund() expects second parameter to be a float, got: ' . print_r($amount, true));
			return false;
		}
		
		$transRequestID = $this->_transRequestID(QuickBooks_MerchantService::TYPE_REFUND, $Card, $amount, $force_new_transaction);
		
		$xml = '';
		$xml .= '<?xml version="1.0" encoding="utf-8"?>' . QUICKBOOKS_CRLF;
		$xml .= '<?qbmsxml version="4.1"?>' . QUICKBOOKS_CRLF;
		$xml .= '<QBMSXML>' . QUICKBOOKS_CRLF;
		$xml .= $this->_createSessionXML();
		$xml .= '	<QBMSXMLMsgsRq>' . QUICKBOOKS_CRLF;
		$xml .= '		<CustomerCreditCardRefundRq>' . QUICKBOOKS_CRLF;
		$xml .= '			<TransRequestID>' . $transRequestID . '</TransRequestID>' . QUICKBOOKS_CRLF;
		
		//                                  $Card, $amount, $salestax, $is_card_present, $is_ecommerce, $is_recurring, $is_mobile, $include_address_data = true, $include_amounts = true, $include_card_number = true, $include_card_cvv = true, $include_card_dates = true
		$xml .= $this->_createCreditCardXML($Card, $amount, $salestax, $is_card_present, $is_ecommerce, false,         null, false,                        true,                    true,                        false);
		
		//<BatchID >STRTYPE</BatchID> <!-- optional -->

		if ($comment)
		{
			$xml .= '			<Comment>' . substr(QuickBooks_XML::encode($comment), 0, 500) . '</Comment>' . QUICKBOOKS_CRLF;
		}

		$xml .= '		</CustomerCreditCardRefundRq>' . QUICKBOOKS_CRLF;
		$xml .= '	</QBMSXMLMsgsRq>' . QUICKBOOKS_CRLF;		
		$xml .= '</QBMSXML>' . QUICKBOOKS_CRLF;
		
		return $this->_doQBMS(QuickBooks_MerchantService::TYPE_REFUND, 'QBMSXML/QBMSXMLMsgsRs/CustomerCreditCardRefundRs', $xml, $Card);
	}
public function refund($Card, $amount, $salestax = null, $comment = null, $is_card_present = false, $is_ecommerce = true, $force_new_transaction = true)
	{
		$this->_setError(QuickBooks_MerchantService::ERROR_OK);
		$this->_log('refund()', QUICKBOOKS_LOG_VERBOSE);
		
		if (!$this->isSignedOn())
		{
			$this->signOn();
			
			if ($this->errorNumber())
			{
				return false;
			}
		}
		
		// Error checking
		if (!($Card instanceof QuickBooks_MerchantService_CreditCard))
		{
			$this->_setError(QuickBooks_MerchantService::ERROR_PARAM, 'refund() expects first parameter to be a Card object, got: ' . print_r($Card, true));
			return false;
		}
		
		if (!is_numeric($amount))
		{
			$this->_setError(QuickBooks_MerchantService::ERROR_PARAM, 'refund() expects second parameter to be a float, got: ' . print_r($amount, true));
			return false;
		}
		
		$transRequestID = $this->_transRequestID(QuickBooks_MerchantService::TYPE_REFUND, $Card, $amount, $force_new_transaction);
		
		$xml = '';
		$xml .= '<?xml version="1.0" encoding="utf-8"?>' . QUICKBOOKS_CRLF;
		$xml .= '<?qbmsxml version="4.1"?>' . QUICKBOOKS_CRLF;
		$xml .= '<QBMSXML>' . QUICKBOOKS_CRLF;
		$xml .= $this->_createSessionXML();
		$xml .= '	<QBMSXMLMsgsRq>' . QUICKBOOKS_CRLF;
		$xml .= '		<CustomerCreditCardRefundRq>' . QUICKBOOKS_CRLF;
		$xml .= '			<TransRequestID>' . $transRequestID . '</TransRequestID>' . QUICKBOOKS_CRLF;
		
		//                                  $Card, $amount, $salestax, $is_card_present, $is_ecommerce, $is_recurring, $is_mobile, $include_address_data = true, $include_amounts = true, $include_card_number = true, $include_card_cvv = true, $include_card_dates = true
		$xml .= $this->_createCreditCardXML($Card, $amount, $salestax, $is_card_present, $is_ecommerce, false,         null, false,                        true,                    true,                        false);
		
		//<BatchID >STRTYPE</BatchID> <!-- optional -->

		if ($comment)
		{
			$xml .= '			<Comment>' . substr(QuickBooks_XML::encode($comment), 0, 500) . '</Comment>' . QUICKBOOKS_CRLF;
		}

		$xml .= '		</CustomerCreditCardRefundRq>' . QUICKBOOKS_CRLF;
		$xml .= '	</QBMSXMLMsgsRq>' . QUICKBOOKS_CRLF;		
		$xml .= '</QBMSXML>' . QUICKBOOKS_CRLF;
		
		return $this->_doQBMS(QuickBooks_MerchantService::TYPE_REFUND, 'QBMSXML/QBMSXMLMsgsRs/CustomerCreditCardRefundRs', $xml, $Card);
	}
public function refund ( $ Card , $ amount , $ salestax = null , $ comment = null , $ is_card_present = false , $ is_ecommerce = true , $ force_new_transaction = true ) { $ this -> _setError ( QuickBooks_MerchantService :: ERROR_OK ) ; $ this -> _log ( 'refund()' , QUICKBOOKS_LOG_VERBOSE ) ; if ( ! $ this -> isSignedOn ( ) ) { $ this -> signOn ( ) ; if ( $ this -> errorNumber ( ) ) { return false ; } } // Error checking if ( ! ( $ Card instanceof QuickBooks_MerchantService_CreditCard ) ) { $ this -> _setError ( QuickBooks_MerchantService :: ERROR_PARAM , 'refund() expects first parameter to be a Card object, got: ' . print_r ( $ Card , true ) ) ; return false ; } if ( ! is_numeric ( $ amount ) ) { $ this -> _setError ( QuickBooks_MerchantService :: ERROR_PARAM , 'refund() expects second parameter to be a float, got: ' . print_r ( $ amount , true ) ) ; return false ; } $ transRequestID = $ this -> _transRequestID ( QuickBooks_MerchantService :: TYPE_REFUND , $ Card , $ amount , $ force_new_transaction ) ; $ xml = '' ; $ xml .= '<?xml version="1.0" encoding="utf-8"?>' . QUICKBOOKS_CRLF ; $ xml .= '<?qbmsxml version="4.1"?>' . QUICKBOOKS_CRLF ; $ xml .= '<QBMSXML>' . QUICKBOOKS_CRLF ; $ xml .= $ this -> _createSessionXML ( ) ; $ xml .= '	<QBMSXMLMsgsRq>' . QUICKBOOKS_CRLF ; $ xml .= '		<CustomerCreditCardRefundRq>' . QUICKBOOKS_CRLF ; $ xml .= '			<TransRequestID>' . $ transRequestID . '</TransRequestID>' . QUICKBOOKS_CRLF ; //                                  $Card, $amount, $salestax, $is_card_present, $is_ecommerce, $is_recurring, $is_mobile, $include_address_data = true, $include_amounts = true, $include_card_number = true, $include_card_cvv = true, $include_card_dates = true $ xml .= $ this -> _createCreditCardXML ( $ Card , $ amount , $ salestax , $ is_card_present , $ is_ecommerce , false , null , false , true , true , false ) ; //<BatchID >STRTYPE</BatchID> <!-- optional --> if ( $ comment ) { $ xml .= '			<Comment>' . substr ( QuickBooks_XML :: encode ( $ comment ) , 0 , 500 ) . '</Comment>' . QUICKBOOKS_CRLF ; } $ xml .= '		</CustomerCreditCardRefundRq>' . QUICKBOOKS_CRLF ; $ xml .= '	</QBMSXMLMsgsRq>' . QUICKBOOKS_CRLF ; $ xml .= '</QBMSXML>' . QUICKBOOKS_CRLF ; return $ this -> _doQBMS ( QuickBooks_MerchantService :: TYPE_REFUND , 'QBMSXML/QBMSXMLMsgsRs/CustomerCreditCardRefundRs' , $ xml , $ Card ) ; }
Refund a credit card a given amount
Refund a credit card a given amount