Пример #1
0
 /**
  * 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;
     }
 }