*/
-
define('GOOGLE_DEBUG_PP', 0);
/**
* pattern and cache the instance in this variable
*
* @var object
- * @static
*/
static private $_singleton = NULL;
/**
- * mode of operation: live or test
+ * Mode of operation: live or test
*
* @var object
*/
protected $_mode = NULL;
/**
- * @param $name
+ * @param string $name
* @param $type
* @param $object
* @param bool $abort
*
* @return mixed
*/
- static function retrieve($name, $type, $object, $abort = TRUE) {
+ public static function retrieve($name, $type, $object, $abort = TRUE) {
$value = CRM_Utils_Array::value($name, $object);
if ($abort && $value === NULL) {
CRM_Core_Error::debug_log_message("Could not find an entry for $name");
/**
* Constructor
*
- * @param string $mode the mode of operation: live or test
+ * @param string $mode
+ * The mode of operation: live or test.
*
* @param $paymentProcessor
*
* @return \CRM_Core_Payment_GoogleIPN
*/
- function __construct($mode, &$paymentProcessor) {
+ public function __construct($mode, &$paymentProcessor) {
parent::__construct();
$this->_mode = $mode;
/**
* The function gets called when a new order takes place.
*
- * @param xml $dataRoot response send by google in xml format
- * @param array $privateData contains the name value pair of <merchant-private-data>
+ * @param xml $dataRoot
+ * Response send by google in xml format.
+ * @param array $privateData
+ * Contains the name value pair of <merchant-private-data>.
*
* @param $component
*
* @return void
*/
- function newOrderNotify($dataRoot, $privateData, $component) {
+ public function newOrderNotify($dataRoot, $privateData, $component) {
$ids = $input = $params = array();
$input['component'] = strtolower($component);
$ids['contributionRecur'] = $ids['contributionPage'] = NULL;
if ($input['component'] == "event") {
- $ids['event'] = self::retrieve('eventID', 'Integer', $privateData, TRUE);
+ $ids['event'] = self::retrieve('eventID', 'Integer', $privateData, TRUE);
$ids['participant'] = self::retrieve('participantID', 'Integer', $privateData, TRUE);
- $ids['membership'] = NULL;
+ $ids['membership'] = NULL;
}
else {
$ids['membership'] = self::retrieve('membershipID', 'Integer', $privateData, FALSE);
// create a contribution and then get it processed
$contribution = new CRM_Contribute_DAO_Contribution();
$contribution->contact_id = $ids['contact'];
- $contribution->financial_type_id = $objects['contributionType']->id;
+ $contribution->financial_type_id = $objects['contributionType']->id;
$contribution->contribution_page_id = $objects['contribution']->contribution_page_id;
$contribution->contribution_recur_id = $ids['contributionRecur'];
$contribution->receive_date = date('YmdHis');
}
}
- // CRM_Core_Error::debug_var( 'c', $contribution );
$contribution->save();
$transaction->commit();
/**
* The function gets called when the state(CHARGED, CANCELLED..) changes for an order
*
- * @param string $status status of the transaction send by google
+ * @param string $status
+ * Status of the transaction send by google.
* @param $dataRoot
- * @param array $privateData contains the name value pair of <merchant-private-data>
+ * @param array $privateData
+ * Contains the name value pair of <merchant-private-data>.
*
* @param $component
*
* @return void
*/
- function orderStateChange($status, $dataRoot, $privateData, $component) {
+ public function orderStateChange($status, $dataRoot, $privateData, $component) {
$input = $objects = $ids = array();
$input['component'] = strtolower($component);
$ids['related_contact'] = NULL;
$ids['onbehalf_dupe_alert'] = NULL;
if ($contribution->trxn_id) {
- list($ids['membership'], $ids['related_contact'], $ids['onbehalf_dupe_alert']) = explode(CRM_Core_DAO::VALUE_SEPARATOR,
- $contribution->trxn_id
- );
+ list($ids['membership'], $ids['related_contact'], $ids['onbehalf_dupe_alert']) = explode(CRM_Core_DAO::VALUE_SEPARATOR,
+ $contribution->trxn_id
+ );
}
foreach (array(
- 'membership', 'related_contact', 'onbehalf_dupe_alert') as $fld) {
+ 'membership',
+ 'related_contact',
+ 'onbehalf_dupe_alert',
+ ) as $fld) {
if (!is_numeric($ids[$fld])) {
unset($ids[$fld]);
}
$transaction = new CRM_Core_Transaction();
- // CRM_Core_Error::debug_var( 'c', $contribution );
if ($status == 'PAYMENT_DECLINED' ||
$status == 'CANCELLED_BY_GOOGLE' ||
$status == 'CANCELLED'
return $this->failed($objects, $transaction);
}
- $input['amount'] = $contribution->total_amount;
+ $input['amount'] = $contribution->total_amount;
$input['fee_amount'] = NULL;
$input['net_amount'] = NULL;
- $input['trxn_id'] = $ids['contributionRecur'] ? $serial : $dataRoot['google-order-number']['VALUE'];
- $input['is_test'] = $contribution->is_test;
+ $input['trxn_id'] = $ids['contributionRecur'] ? $serial : $dataRoot['google-order-number']['VALUE'];
+ $input['is_test'] = $contribution->is_test;
$recur = NULL;
if ($ids['contributionRecur']) {
* @param $ids
* @param $objects
*/
- function completeRecur($input, $ids, $objects) {
+ public function completeRecur($input, $ids, $objects) {
if ($ids['contributionRecur']) {
- $recur = &$objects['contributionRecur'];
- $contributionCount = CRM_Core_DAO::singleValueQuery("
+ $recur = &$objects['contributionRecur'];
+ $contributionCount = CRM_Core_DAO::singleValueQuery("
SELECT count(*)
FROM civicrm_contribution
WHERE contribution_recur_id = {$ids['contributionRecur']}
}
/**
- * singleton function used to manage this object
+ * @deprecated
+ * Payment processor singletons removed - this is an IPN so left but probably can go
+ * Singleton function used to manage this object
*
- * @param string $mode the mode of operation: live or test
+ * @param string $mode
+ * The mode of operation: live or test.
*
* @param $component
* @param $paymentProcessor
*
* @return object
- * @static
*/
- static function &singleton($mode, $component, &$paymentProcessor) {
+ public static function &singleton($mode, $component, &$paymentProcessor) {
if (self::$_singleton === NULL) {
self::$_singleton = new CRM_Core_Payment_GoogleIPN($mode, $paymentProcessor);
}
/**
* The function retrieves the amount the contribution is for, based on the order-no google sends
*
- * @param int $orderNo <order-total> send by google
+ * @param int $orderNo
+ * <order-total> send by google.
*
* @return amount
- * @access public
*/
- function getAmount($orderNo) {
+ public function getAmount($orderNo) {
$contribution = new CRM_Contribute_DAO_Contribution();
$contribution->invoice_id = $orderNo;
if (!$contribution->find(TRUE)) {
/**
* The function returns the component(Event/Contribute..), given the google-order-no and merchant-private-data
*
- * @param array $privateData contains the name value pair of <merchant-private-data>
- * @param int $orderNo <order-total> send by google
- * @param string $root root of xml-response
+ * @param array $privateData
+ * Contains the name value pair of <merchant-private-data>.
+ * @param int $orderNo
+ * <order-total> send by google.
+ * @param string $root
+ * Root of xml-response.
*
* @param $response
* @param $serial
* @internal param \xml $xml_response response send by google in xml format
- * @return array context of this call (test, module, payment processor id)
- * @static
+ * @return array
+ * context of this call (test, module, payment processor id)
*/
- function getContext($privateData, $orderNo, $root, $response, $serial) {
+ public function getContext($privateData, $orderNo, $root, $response, $serial) {
$contributionID = CRM_Utils_Array::value('contributionID', $privateData);
$contribution = new CRM_Contribute_DAO_Contribution();
if ($root == 'new-order-notification') {
$ids['event'] = $privateData['eventID'];
}
else {
- list($ids['event'], $ids['participant']) =
- explode(CRM_Core_DAO::VALUE_SEPARATOR, $contribution->trxn_id);
+ list($ids['event'], $ids['participant']) = explode(CRM_Core_DAO::VALUE_SEPARATOR, $contribution->trxn_id);
}
}
/**
* This method is handles the response that will be invoked (from extern/googleNotify) every time
* a notification or request is sent by the Google Server.
- *
*/
- static function main($xml_response) {
+ public static function main($xml_response) {
require_once 'Google/library/googleresponse.php';
require_once 'Google/library/googlerequest.php';
require_once 'Google/library/googlemerchantcalculations.php';
// lets retrieve the private-data & order-no
$privateData = NULL;
if (array_key_exists('shopping-cart', $data[$root])) {
- $privateData = $data[$root]['shopping-cart']['merchant-private-data']['VALUE'];
+ $privateData = $data[$root]['shopping-cart']['merchant-private-data']['VALUE'];
}
if (empty($privateData) && array_key_exists('order-summary', $data[$root])
- && array_key_exists('shopping-cart', $data[$root]['order-summary'])) {
+ && array_key_exists('shopping-cart', $data[$root]['order-summary'])
+ ) {
$privateData = $data[$root]['order-summary']['shopping-cart']['merchant-private-data']['VALUE'];
}
$privateData = $privateData ? self::stringToArray($privateData) : '';
- $orderNo = $data[$root]['google-order-number']['VALUE'];
- $serial = $data[$root]['serial-number'];
+ $orderNo = $data[$root]['google-order-number']['VALUE'];
+ $serial = $data[$root]['serial-number'];
// a dummy object to call get context and a parent function inside it.
$ipn = new CRM_Core_Payment_GoogleIPN('live', $dummyProcessor);
case "merchant-calculation-callback":
break;
- case "new-order-notification": {
- $response->SendAck($serial, FALSE);
- $ipn->newOrderNotify($data[$root], $privateData, $module);
- break;
- }
+ case "new-order-notification":
+ $response->SendAck($serial, FALSE);
+ $ipn->newOrderNotify($data[$root], $privateData, $module);
+ break;
- case "order-state-change-notification": {
- $response->SendAck($serial, FALSE);
- $new_financial_state = $data[$root]['new-financial-order-state']['VALUE'];
- $new_fulfillment_order = $data[$root]['new-fulfillment-order-state']['VALUE'];
+ case "order-state-change-notification":
+ $response->SendAck($serial, FALSE);
+ $new_financial_state = $data[$root]['new-financial-order-state']['VALUE'];
+ $new_fulfillment_order = $data[$root]['new-fulfillment-order-state']['VALUE'];
- switch ($new_financial_state) {
- case 'CHARGEABLE':
- break;
+ switch ($new_financial_state) {
+ case 'CHARGEABLE':
+ break;
- case 'CHARGED':
- case 'PAYMENT_DECLINED':
- case 'CANCELLED':
- case 'CANCELLED_BY_GOOGLE':
- $ipn->orderStateChange($new_financial_state, $data[$root], $privateData, $module);
- break;
+ case 'CHARGED':
+ case 'PAYMENT_DECLINED':
+ case 'CANCELLED':
+ case 'CANCELLED_BY_GOOGLE':
+ $ipn->orderStateChange($new_financial_state, $data[$root], $privateData, $module);
+ break;
- case 'REVIEWING':
- case 'CHARGING':
- break;
+ case 'REVIEWING':
+ case 'CHARGING':
+ break;
- default:
- break;
- }
- break;
+ default:
+ break;
}
+ break;
- case "authorization-amount-notification": {
- $response->SendAck($serial, FALSE);
- $new_financial_state = $data[$root]['order-summary']['financial-order-state']['VALUE'];
- $new_fulfillment_order = $data[$root]['order-summary']['fulfillment-order-state']['VALUE'];
-
- switch ($new_financial_state) {
- case 'CHARGEABLE':
- // For google-handled subscriptions chargeorder needn't be initiated,
- // assuming auto-charging is turned on.
- //$request->SendProcessOrder($data[$root]['google-order-number']['VALUE']);
- //$request->SendChargeOrder($data[$root]['google-order-number']['VALUE'],'');
- break;
-
- case 'CHARGED':
- case 'PAYMENT_DECLINED':
- case 'CANCELLED':
- break;
-
- case 'REVIEWING':
- case 'CHARGING':
- case 'CANCELLED_BY_GOOGLE':
- break;
-
- default:
- break;
- }
- break;
+ case "authorization-amount-notification":
+ $response->SendAck($serial, FALSE);
+ $new_financial_state = $data[$root]['order-summary']['financial-order-state']['VALUE'];
+ $new_fulfillment_order = $data[$root]['order-summary']['fulfillment-order-state']['VALUE'];
+
+ switch ($new_financial_state) {
+ case 'CHARGEABLE':
+ // For google-handled subscriptions chargeorder needn't be initiated,
+ // assuming auto-charging is turned on.
+ //$request->SendProcessOrder($data[$root]['google-order-number']['VALUE']);
+ //$request->SendChargeOrder($data[$root]['google-order-number']['VALUE'],'');
+ break;
+
+ case 'CHARGED':
+ case 'PAYMENT_DECLINED':
+ case 'CANCELLED':
+ break;
+
+ case 'REVIEWING':
+ case 'CHARGING':
+ case 'CANCELLED_BY_GOOGLE':
+ break;
+
+ default:
+ break;
}
+ break;
case "charge-amount-notification":
case "chargeback-amount-notification":
*
* @return bool
*/
- function getInput(&$input, &$ids, $dataRoot) {
+ public function getInput(&$input, &$ids, $dataRoot) {
if (!$this->getBillingID($ids)) {
return FALSE;
}
foreach ($lookup as $name => $googleName) {
if (array_key_exists($googleName, $dataRoot['buyer-billing-address'])) {
- $value = $dataRoot['buyer-billing-address'][$googleName]['VALUE'];
+ $value = $dataRoot['buyer-billing-address'][$googleName]['VALUE'];
}
$input[$name] = $value ? $value : NULL;
}
* Converts the comma separated name-value pairs in <merchant-private-data>
* to an array of name-value pairs.
*/
- static function stringToArray($str) {
+ public static function stringToArray($str) {
$vars = $labels = array();
$labels = explode(',', $str);
foreach ($labels as $label) {
return $vars;
}
}
-