/** * Run a transaction through CyberSource. * * @param array $data * @return mixed result array on success, false on failure */ public function runTransaction($data = null) { if (!is_null($data)) { $this->data = $data; } if (!$this->connected) { trigger_error("CybserSource Error: Cannot call SOAP service--connection is closed!", E_USER_ERROR); return false; } if (!is_array($this->data)) { trigger_error("CybserSource Error: Invalid \$data type supplied for SOAP query. Must be array!", E_USER_ERROR); return false; } try { $result = $this->client->runTransaction($this->data); } catch (SoapFault $fault) { trigger_error('CybserSource Error: Error in SOAP request: ' . $fault->faultstring, E_USER_WARNING); } $this->clear(); return $this->parseResult($result); }
function cancel(&$order) { //require a subscription id if (empty($order->subscription_transaction_id)) { return false; } //get wsdl $wsdl_url = $this->getWSDL($order); //to store our request $request = new stdClass(); //which service? $paySubscriptionDeleteService = new stdClass(); $paySubscriptionDeleteService->run = "true"; $request->paySubscriptionDeleteService = $paySubscriptionDeleteService; //which order $recurringSubscriptionInfo = new stdClass(); $recurringSubscriptionInfo->subscriptionID = $order->subscription_transaction_id; $request->recurringSubscriptionInfo = $recurringSubscriptionInfo; //merchant id and order code $request->merchantID = pmpro_getOption("cybersource_merchantid"); $request->merchantReferenceCode = $order->code; $soapClient = new CyberSourceSoapClient($wsdl_url, array("merchantID" => pmpro_getOption("cybersource_merchantid"), "transactionKey" => pmpro_getOption("cybersource_securitykey"))); $reply = $soapClient->runTransaction($request); if ($reply->reasonCode == "100") { //success $order->updateStatus("cancelled"); return true; } else { //error $order->errorcode = $reply->reasonCode; $order->error = $this->getErrorFromCode($reply->reasonCode); $order->shorterror = $this->getErrorFromCode($reply->reasonCode); return false; } }