private function charge_credit_card()
 {
     // Common setup for API credentials
     $merchantAuthentication = new AnetAPI\MerchantAuthenticationType();
     $merchantAuthentication->setName($this->api_login_id);
     $merchantAuthentication->setTransactionKey($this->api_transaction_key);
     $refId = 'ref' . time();
     // Create the payment data for a credit card
     $creditCard = new AnetAPI\CreditCardType();
     $creditCard->setCardNumber($this->card_number);
     $creditCard->setExpirationDate($this->expiration_year . '-' . $this->expiration_month);
     $paymentOne = new AnetAPI\PaymentType();
     $paymentOne->setCreditCard($creditCard);
     // Order info
     $order = new AnetAPI\OrderType();
     $order->setInvoiceNumber($this->invoice_number);
     $order->setDescription(get_bloginfo('name'));
     $cart_contents = $this->purchase_log->get_cart_contents();
     $lineitems = array();
     // Line Item Info
     foreach ($cart_contents as $index => $item) {
         // this is for the product options support that can be used in place of variations
         if (defined('OPTION_BASE')) {
             $options = wpsc_get_cart_item_meta($item->id, OPTION_BASE, true);
             if (!empty($options)) {
                 $options_message = strip_tags($options->message());
             }
         }
         $custom_description = $item->name . ' ' . $options_message . ' ' . $item->custom_message;
         $lineitems[$index] = new AnetAPI\LineItemType();
         $lineitems[$index]->setItemId($item->prodid);
         $lineitems[$index]->setName(substr($item->name, 0, 31));
         $lineitems[$index]->setDescription(substr($custom_description, 0, 255));
         $lineitems[$index]->setQuantity($item->quantity);
         $lineitems[$index]->setUnitPrice($this->force_two_decimals($item->price));
         $lineitems[$index]->setTaxable(0.0 != floatval($item->tax_charged));
     }
     // Tax info
     $tax = new AnetAPI\ExtendedAmountType();
     $tax->setName("Sales Tax");
     $tax->setAmount($this->force_two_decimals($this->purchase_log->get('wpec_taxes_total')));
     $tax->setDescription("Sales Tax");
     // Customer info
     $customer = new AnetAPI\CustomerDataType();
     $wp_user = get_user_by('email', $this->checkout_data->get('billingemail'));
     if ($wp_user) {
         $customer->setId($wp_user->ID);
     }
     $customer->setEmail($this->checkout_data->get('billingemail'));
     // PO Number
     $ponumber = $this->checkout_data->get('billingponumber');
     //Ship To Info
     $shipto = new AnetAPI\NameAndAddressType();
     $shipto->setFirstName($this->checkout_data->get('shippingfirstname'));
     $shipto->setLastName($this->checkout_data->get('shippinglastname'));
     //		$shipto->setCompany( $this->checkout_data->get( 'shippingcompany') );
     $shipto->setAddress($this->checkout_data->get('shippingaddress'));
     $shipto->setCity($this->checkout_data->get('shippingcity'));
     $shipto->setState($this->checkout_data->get('shippingstate'));
     $shipto->setZip($this->checkout_data->get('shippingpostcode'));
     $shipto->setCountry($this->checkout_data->get('shippingcountry'));
     // Bill To
     $billto = new AnetAPI\CustomerAddressType();
     $billto->setFirstName($this->checkout_data->get('billingfirstname'));
     $billto->setLastName($this->checkout_data->get('billinglastname'));
     //		$billto->setCompany(  $this->checkout_data->get( 'billingcompany') );
     $billto->setAddress($this->checkout_data->get('billingaddress'));
     $billto->setCity($this->checkout_data->get('billingcity'));
     $billto->setState($this->checkout_data->get('billingstate'));
     $billto->setZip($this->checkout_data->get('billingpostcode'));
     $billto->setCountry($this->checkout_data->get('billingcountry'));
     $billto->setPhoneNumber($this->checkout_data->get('billingphone'));
     //create a transaction
     $transactionRequestType = new AnetAPI\TransactionRequestType();
     foreach ($lineitems as $lineitem) {
         $transactionRequestType->addToLineItems($lineitem);
     }
     $transactionRequestType->setTransactionType("authCaptureTransaction");
     $transactionRequestType->setAmount($this->force_two_decimals($this->purchase_log->get('totalprice')));
     $transactionRequestType->setTax($tax);
     $transactionRequestType->setPayment($paymentOne);
     $transactionRequestType->setOrder($order);
     if (!empty($ponumber)) {
         $transactionRequestType->setPoNumber($ponumber);
     }
     $transactionRequestType->setCustomer($customer);
     $transactionRequestType->setBillTo($billto);
     $transactionRequestType->setShipTo($shipto);
     if (!empty($_SERVER['REMOTE_ADDR'])) {
         $transactionRequestType->setCustomerIP($_SERVER['REMOTE_ADDR']);
     }
     $request = new AnetAPI\CreateTransactionRequest();
     $request->setMerchantAuthentication($merchantAuthentication);
     $request->setRefId($refId);
     $request->setTransactionRequest($transactionRequestType);
     $controller = new AnetController\CreateTransactionController($request);
     if ($this->sandbox_mode) {
         $response = $controller->executeWithApiResponse(\net\authorize\api\constants\ANetEnvironment::SANDBOX);
     } else {
         $response = $controller->executeWithApiResponse(\net\authorize\api\constants\ANetEnvironment::PRODUCTION);
     }
     $result = false;
     if ($response != null) {
         $tresponse = $response->getTransactionResponse();
         if ($tresponse != null) {
             // see http://developer.authorize.net/api/reference/ for definitions
             if ($tresponse->getResponseCode() == "1") {
                 // 1 = Approved
                 $this->set_purchaselog_status(WPSC_Purchase_Log::ACCEPTED_PAYMENT);
                 $result = true;
             } elseif ($tresponse->getResponseCode() == "2") {
                 // 2 = Declined
                 $this->set_purchaselog_status(WPSC_Purchase_Log::INCOMPLETE_SALE);
                 $result = true;
             } elseif ($tresponse->getResponseCode() == "3") {
                 // 3 = Error
                 $this->set_purchaselog_status(WPSC_Purchase_Log::INCOMPLETE_SALE);
                 $result = false;
             } elseif ($tresponse->getResponseCode() == "4") {
                 // 4 = Held for Review
                 $this->set_purchaselog_status(WPSC_Purchase_Log::INCOMPLETE_SALE);
                 $result = true;
             } else {
                 // Unknown transaction code
                 $this->set_purchaselog_status(WPSC_Purchase_Log::INCOMPLETE_SALE);
                 error_log(__CLASS__ . '::' . __FUNCTION__ . ' ' . "ERROR: Charge Credit Card ERROR : Unknown transaction response code");
             }
             wpsc_update_purchase_meta($this->invoice_number, 'pbci_auth_net_raw_response', $tresponse);
             $messages = wpsc_get_customer_meta('checkout_misc_error_messages');
             if (!is_array($messages)) {
                 $messages = array();
             }
             // get the transaction error messages
             $transaction_error_messages = $response->getMessages();
             if ($transaction_error_messages) {
                 $transaction_error_messages = $transaction_error_messages->getMessage();
             }
             if (!is_array($transaction_error_messages)) {
                 $transaction_error_messages = array($transaction_error_messages);
             }
             foreach ($transaction_error_messages as $error_message) {
                 $messages[] = $error_message->getText();
             }
             // get the transaction response error messages
             $transaction_errors = $tresponse->getErrors();
             foreach ($transaction_errors as $transaction_error) {
                 $messages[] = $transaction_error->getErrorText();
             }
             wpsc_update_customer_meta('checkout_misc_error_messages', $messages);
             $this->purchase_log->set('transactid', $tresponse->getTransId());
             $this->purchase_log->set('authcode', $tresponse->getAuthCode());
         } else {
             error_log(__CLASS__ . '::' . __FUNCTION__ . ' ' . "ERROR: Charge Credit Card ERROR :  Invalid response");
         }
     } else {
         error_log(__CLASS__ . '::' . __FUNCTION__ . ' ' . "ERROR: Charge Credit card Null response returned");
     }
     $this->purchase_log->save();
     return $result;
 }
 public function testCreateTransactionApplePay()
 {
     $merchantAuthentication = new apiContract\MerchantAuthenticationType();
     $merchantAuthentication->setName(self::$LoginName);
     $merchantAuthentication->setTransactionKey(self::$TransactionKey);
     $OpaqueData = new apiContract\OpaqueDataType();
     $OpaqueData->setDataDescriptor("COMMON.APPLE.INAPP.PAYMENT");
     $OpaqueData->setDataValue("eyJkYXRhIjoiQkRQTldTdE1tR2V3UVVXR2c0bzdFXC9qKzFjcTFUNzhxeVU4NGI2N2l0amNZSTh3UFlBT2hzaGpoWlBycWRVcjRYd1BNYmo0emNHTWR5KysxSDJWa1BPWStCT01GMjV1YjE5Y1g0bkN2a1hVVU9UakRsbEIxVGdTcjhKSFp4Z3A5ckNnc1NVZ2JCZ0tmNjBYS3V0WGY2YWpcL284WkliS25yS1E4U2gwb3VMQUtsb1VNbit2UHU0K0E3V0tycXJhdXo5SnZPUXA2dmhJcStIS2pVY1VOQ0lUUHlGaG1PRXRxK0grdzB2UmExQ0U2V2hGQk5uQ0hxenpXS2NrQlwvMG5xTFpSVFliRjBwK3Z5QmlWYVdIZWdoRVJmSHhSdGJ6cGVjelJQUHVGc2ZwSFZzNDhvUExDXC9rXC8xTU5kNDdrelwvcEhEY1JcL0R5NmFVTStsTmZvaWx5XC9RSk4rdFMzbTBIZk90SVNBUHFPbVhlbXZyNnhKQ2pDWmxDdXcwQzltWHpcL29iSHBvZnVJRVM4cjljcUdHc1VBUERwdzdnNjQybTRQendLRitIQnVZVW5lV0RCTlNEMnU2amJBRzMiLCJ2ZXJzaW9uIjoiRUNfdjEiLCJoZWFkZXIiOnsiYXBwbGljYXRpb25EYXRhIjoiOTRlZTA1OTMzNWU1ODdlNTAxY2M0YmY5MDYxM2UwODE0ZjAwYTdiMDhiYzdjNjQ4ZmQ4NjVhMmFmNmEyMmNjMiIsInRyYW5zYWN0aW9uSWQiOiJjMWNhZjVhZTcyZjAwMzlhODJiYWQ5MmI4MjgzNjM3MzRmODViZjJmOWNhZGYxOTNkMWJhZDlkZGNiNjBhNzk1IiwiZXBoZW1lcmFsUHVibGljS2V5IjoiTUlJQlN6Q0NBUU1HQnlxR1NNNDlBZ0V3Z2ZjQ0FRRXdMQVlIS29aSXpqMEJBUUloQVBcL1wvXC9cLzhBQUFBQkFBQUFBQUFBQUFBQUFBQUFcL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL01Gc0VJUFwvXC9cL1wvOEFBQUFCQUFBQUFBQUFBQUFBQUFBQVwvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cLzhCQ0JheGpYWXFqcVQ1N1BydlZWMm1JYThaUjBHc014VHNQWTd6ancrSjlKZ1N3TVZBTVNkTmdpRzV3U1RhbVo0NFJPZEpyZUJuMzZRQkVFRWF4ZlI4dUVzUWtmNHZPYmxZNlJBOG5jRGZZRXQ2ek9nOUtFNVJkaVl3cFpQNDBMaVwvaHBcL200N242MHA4RDU0V0s4NHpWMnN4WHM3THRrQm9ONzlSOVFJaEFQXC9cL1wvXC84QUFBQUFcL1wvXC9cL1wvXC9cL1wvXC9cLys4NXZxdHB4ZWVoUE81eXNMOFl5VlJBZ0VCQTBJQUJHbStnc2wwUFpGVFwva0RkVVNreHd5Zm84SnB3VFFRekJtOWxKSm5tVGw0REdVdkFENEdzZUdqXC9wc2hCWjBLM1RldXFEdFwvdERMYkUrOFwvbTB5Q21veHc9IiwicHVibGljS2V5SGFzaCI6IlwvYmI5Q05DMzZ1QmhlSEZQYm1vaEI3T28xT3NYMkora0pxdjQ4ek9WVmlRPSJ9LCJzaWduYXR1cmUiOiJNSUlEUWdZSktvWklodmNOQVFjQ29JSURNekNDQXk4Q0FRRXhDekFKQmdVckRnTUNHZ1VBTUFzR0NTcUdTSWIzRFFFSEFhQ0NBaXN3Z2dJbk1JSUJsS0FEQWdFQ0FoQmNsK1BmMytVNHBrMTNuVkQ5bndRUU1Ba0dCU3NPQXdJZEJRQXdKekVsTUNNR0ExVUVBeDRjQUdNQWFBQnRBR0VBYVFCQUFIWUFhUUJ6QUdFQUxnQmpBRzhBYlRBZUZ3MHhOREF4TURFd05qQXdNREJhRncweU5EQXhNREV3TmpBd01EQmFNQ2N4SlRBakJnTlZCQU1lSEFCakFHZ0FiUUJoQUdrQVFBQjJBR2tBY3dCaEFDNEFZd0J2QUcwd2daOHdEUVlKS29aSWh2Y05BUUVCQlFBRGdZMEFNSUdKQW9HQkFOQzgra2d0Z212V0YxT3pqZ0ROcmpURUJSdW9cLzVNS3ZsTTE0NnBBZjdHeDQxYmxFOXc0ZklYSkFEN0ZmTzdRS2pJWFlOdDM5ckx5eTd4RHdiXC81SWtaTTYwVFoyaUkxcGo1NVVjOGZkNGZ6T3BrM2Z0WmFRR1hOTFlwdEcxZDlWN0lTODJPdXA5TU1vMUJQVnJYVFBITmNzTTk5RVBVblBxZGJlR2M4N20wckFnTUJBQUdqWERCYU1GZ0dBMVVkQVFSUk1FK0FFSFpXUHJXdEpkN1laNDMxaENnN1lGU2hLVEFuTVNVd0l3WURWUVFESGh3QVl3Qm9BRzBBWVFCcEFFQUFkZ0JwQUhNQVlRQXVBR01BYndCdGdoQmNsK1BmMytVNHBrMTNuVkQ5bndRUU1Ba0dCU3NPQXdJZEJRQURnWUVBYlVLWUNrdUlLUzlRUTJtRmNNWVJFSW0ybCtYZzhcL0pYditHQlZRSmtPS29zY1k0aU5ERkFcL2JRbG9nZjlMTFU4NFRId05SbnN2VjNQcnY3UlRZODFncTBkdEM4elljQWFBa0NISUkzeXFNbko0QU91NkVPVzlrSmsyMzJnU0U3V2xDdEhiZkxTS2Z1U2dRWDhLWFFZdVpMazJScjYzTjhBcFhzWHdCTDNjSjB4Z2VBd2dkMENBUUV3T3pBbk1TVXdJd1lEVlFRREhod0FZd0JvQUcwQVlRQnBBRUFBZGdCcEFITUFZUUF1QUdNQWJ3QnRBaEJjbCtQZjMrVTRwazEzblZEOW53UVFNQWtHQlNzT0F3SWFCUUF3RFFZSktvWklodmNOQVFFQkJRQUVnWUJhSzNFbE9zdGJIOFdvb3NlREFCZitKZ1wvMTI5SmNJYXdtN2M2VnhuN1phc05iQXEzdEF0OFB0eSt1UUNnc3NYcVprTEE3a3oyR3pNb2xOdHY5d1ltdTlVandhcjFQSFlTK0JcL29Hbm96NTkxd2phZ1hXUnowbk1vNXkzTzFLelgwZDhDUkhBVmE4OFNyVjFhNUpJaVJldjNvU3RJcXd2NXh1WmxkYWc2VHI4dz09In0=");
     $paymentType = new apiContract\PaymentType();
     $paymentType->setOpaqueData($OpaqueData);
     //create a transaction
     $transactionRequestType = new apiContract\TransactionRequestType();
     $transactionRequestType->setTransactionType("authCaptureTransaction");
     // TODO Change to Enum
     $transactionRequestType->setAmount($this->setValidAmount($this->counter));
     $transactionRequestType->setPayment($paymentType);
     $request = new apiContract\CreateTransactionRequest();
     $request->setMerchantAuthentication($merchantAuthentication);
     $request->setTransactionRequest($transactionRequestType);
     $controller = new apiController\CreateTransactionController($request);
     $response = $controller->executeWithApiResponse(self::$TestEnvironment);
     // Handle the response.
     $this->assertNotNull($response, "null response");
     $this->assertNotNull($response->getMessages());
     self::displayMessages($response);
     if ("Ok" != $response->getMessages()->getResultCode()) {
         $this->displayTransactionMessages($response);
         //Ignore assertion for now
         //$this->assertTrue( false, "Should not reach here.");
     } else {
         $this->assertEquals("Ok", $response->getMessages()->getResultCode());
         $this->assertTrue(0 < count($response->getMessages()));
         foreach ($response->getMessages() as $message) {
             $this->assertEquals("I00001", $message->getCode());
             $this->assertEquals("Successful.", $response->getText());
         }
     }
 }
 public function testSendRequestReturnsAuthCaptureResponse()
 {
     $transactionMode = $this->getTransactionMode();
     $merchantAuthentication = $this->getMerchantAuthentication();
     $transactionRequestType = $this->getTransactionRequestType();
     $createTransactionRequest = new CreateTransactionRequest();
     $createTransactionRequest->setMerchantAuthentication($merchantAuthentication);
     $transactionRequestHydrator = $this->getTransactionRequestHydrator(AuthorizeAndCaptureService::PAYMENT_TRANSACTION_TYPE);
     $authorizeAndCaptureService = new AuthorizeAndCaptureService($transactionRequestType, $createTransactionRequest, $transactionMode, $transactionRequestHydrator, $this->getSubsetConfig()['subset'], $this->getSubsetConfig()['subset_collection'], $this->getSubsetConfig()['subset_parent'], $this->getSubsetConfig()['subset_alias']);
     $this->assertAttributeSame($transactionMode, 'transactionMode', $authorizeAndCaptureService);
     $this->assertAttributeSame($createTransactionRequest, 'createTransactionRequest', $authorizeAndCaptureService);
     $this->assertAttributeSame($transactionRequestType, 'transactionRequestType', $authorizeAndCaptureService);
     $this->assertAttributeSame($transactionRequestHydrator, 'transactionRequestHydrator', $authorizeAndCaptureService);
     $authCaptureResponse = $authorizeAndCaptureService->sendRequest($this->getData());
     $this->assertInstanceOf(AuthCaptureResponse::class, $authCaptureResponse);
     $response = $authorizeAndCaptureService->getResponse();
     $this->assertInstanceOf(AuthCaptureResponse::class, $response);
     /*
      * Can't properly test the HttpClient as prophecy doesn't allow reflection of public
      * methods that start with underscore.  Leaving this to be added back if it gets updated.
      *
      * $authCaptureResponse = $authorizeAndCaptureService->sendRequest(
      *   [
      *       'paymentType' => 'creditCard',
      *       'amount' => '5.00',
      *       'expirationDate' => '2017-01',
      *       'cardNumber' => '4111111111111111'
      *   ],
      *   $this->getHttpClient()
      * );
      *
      * ....
      *
      * $resultCode = $authCaptureResponse->createTransactionResponse->getMessages()->getResultCode();
      *
      * $this->assertNotEquals('Error', $resultCode);
      */
 }
示例#4
0
function refundTransaction($amount)
{
    // Common setup for API credentials
    $merchantAuthentication = new AnetAPI\MerchantAuthenticationType();
    $merchantAuthentication->setName(\SampleCode\Constants::MERCHANT_LOGIN_ID);
    $merchantAuthentication->setTransactionKey(\SampleCode\Constants::MERCHANT_TRANSACTION_KEY);
    $refId = 'ref' . time();
    // Create the payment data for a credit card
    $creditCard = new AnetAPI\CreditCardType();
    $creditCard->setCardNumber("0015");
    $creditCard->setExpirationDate("XXXX");
    $paymentOne = new AnetAPI\PaymentType();
    $paymentOne->setCreditCard($creditCard);
    //create a transaction
    $transactionRequest = new AnetAPI\TransactionRequestType();
    $transactionRequest->setTransactionType("refundTransaction");
    $transactionRequest->setAmount($amount);
    $transactionRequest->setPayment($paymentOne);
    $request = new AnetAPI\CreateTransactionRequest();
    $request->setMerchantAuthentication($merchantAuthentication);
    $request->setRefId($refId);
    $request->setTransactionRequest($transactionRequest);
    $controller = new AnetController\CreateTransactionController($request);
    $response = $controller->executeWithApiResponse(\net\authorize\api\constants\ANetEnvironment::SANDBOX);
    if ($response != null) {
        $tresponse = $response->getTransactionResponse();
        if ($tresponse != null && $tresponse->getResponseCode() == "1") {
            echo "Refund SUCCESS: " . $tresponse->getTransId() . "\n";
        } else {
            echo "Refund ERROR : " . $tresponse->getResponseCode() . "\n";
        }
    } else {
        echo "Refund Null response returned";
    }
    return $response;
}
 /**
  * @param array $data
  */
 protected function hydrate(array $data)
 {
     $this->transactionRequestHydrator->hydrate($data, $this->transactionRequestType);
     $transactionRequestTypeData = [];
     /** Loop the configured subsets */
     foreach ($this->subset as $subsetKey => $subsetDataClass) {
         if (array_key_exists($subsetKey, $data) && is_array($data[$subsetKey])) {
             if (in_array($subsetKey, $this->subsetCollection)) {
                 /** Hydrate each object in the collection */
                 foreach ($data[$subsetKey] as $collection) {
                     $subset = new $subsetDataClass();
                     $this->transactionRequestHydrator->hydrate($collection, $subset, $subsetKey);
                     $transactionRequestTypeData[$subsetKey][] = $subset;
                 }
             } elseif (array_key_exists($subsetKey, $this->subsetParent)) {
                 /** Hydrate the subset */
                 $subset = new $subsetDataClass();
                 $this->transactionRequestHydrator->hydrate($data[$subsetKey], $subset, $subsetKey);
                 $subsetKeyAlias = $subsetKey;
                 /** Check to see if an alias is defined */
                 if (array_key_exists($subsetKey, $this->subsetAlias)) {
                     $subsetKeyAlias = $this->subsetAlias[$subsetKey];
                 }
                 /** Some subsets share a parent, pull the parent if it already exists */
                 if (array_key_exists($subsetKeyAlias, $transactionRequestTypeData)) {
                     $subsetParent = $transactionRequestTypeData[$subsetKeyAlias];
                 } else {
                     $subsetParent = new $this->subsetParent[$subsetKey]();
                 }
                 $this->transactionRequestHydrator->hydrate([$subsetKey => $subset], $subsetParent, false);
                 $transactionRequestTypeData[$subsetKeyAlias] = $subsetParent;
             } else {
                 /** Hydrate the subset */
                 $subset = new $subsetDataClass();
                 $this->transactionRequestHydrator->hydrate($data[$subsetKey], $subset, $subsetKey);
                 /** Build the data set to be passed to the TransactionRequestType hydrator */
                 $transactionRequestTypeData[$subsetKey] = $subset;
             }
         }
     }
     $this->transactionRequestHydrator->hydrate($transactionRequestTypeData, $this->transactionRequestType, false);
     $this->createTransactionRequest->setTransactionRequest($this->transactionRequestType);
 }
示例#6
0
 /**
  * Make a one-time charge using the payments processor
  * @method charge
  * @param {double} $amount specify the amount (optional cents after the decimal point)
  * @param {string} [$currency='USD'] set the currency, which will affect the amount
  * @param {array} [$options=array()] Any additional options
  * @param {string} [$options.description=null] description of the charge, to be sent to customer
  * @param {string} [$options.metadata=null] any additional metadata to store with the charge
  * @param {string} [$options.subscription=null] if this charge is related to a subscription stream
  * @param {string} [$options.subscription.publisherId]
  * @param {string} [$options.subscription.streamName]
  * @throws Assets_Exception_DuplicateTransaction
  * @throws Assets_Exception_HeldForReview
  * @throws Assets_Exception_ChargeFailed
  * @return {string} The customerId of the Assets_Customer that was successfully charged
  */
 function charge($amount, $currency = 'USD', $options = array())
 {
     $customerId = $this->customerId();
     $paymentProfileId = $this->paymentProfileId($customerId);
     $options = array_merge($this->options, $options);
     // Common setup for API credentials
     $merchantAuthentication = new AnetAPI\MerchantAuthenticationType();
     $merchantAuthentication->setName($options['authname']);
     $merchantAuthentication->setTransactionKey($options['authkey']);
     $refId = 'ref' . time();
     $paymentProfile = new AnetAPI\PaymentProfileType();
     $paymentProfile->setPaymentProfileId($paymentProfileId);
     $profileToCharge = new AnetAPI\CustomerProfilePaymentType();
     $profileToCharge->setCustomerProfileId($customerId);
     $profileToCharge->setPaymentProfile($paymentProfile);
     $transactionRequestType = new AnetAPI\TransactionRequestType();
     $transactionRequestType->setTransactionType("authCaptureTransaction");
     $transactionRequestType->setAmount($amount);
     $transactionRequestType->setProfile($profileToCharge);
     $request = new AnetAPI\CreateTransactionRequest();
     $request->setMerchantAuthentication($merchantAuthentication);
     $request->setRefId($refId);
     $request->setTransactionRequest($transactionRequestType);
     $controller = new AnetController\CreateTransactionController($request);
     $response = $controller->executeWithApiResponse($options['server']);
     if (!isset($response)) {
         throw new Assets_Exception_InvalidResponse(array('response' => 'empty response'));
     }
     $tresponse = $response->getTransactionResponse();
     if (!isset($tresponse)) {
         throw new Assets_Exception_ChargeFailed();
     }
     switch ($tresponse->getResponseCode()) {
         case '1':
             return $customerId;
         case '3':
             throw new Assets_Exception_DuplicateTransaction();
         case '4':
             throw new Assets_Exception_HeldForReview();
         default:
             throw new Assets_Exception_ChargeFailed();
     }
 }
define("AUTHORIZENET_LOG_FILE", "phplog");
// Common setup for API credentials (with PayPal compatible merchant credentials)
$merchantAuthentication = new AnetAPI\MerchantAuthenticationType();
$merchantAuthentication->setName("5KP3u95bQpv");
$merchantAuthentication->setTransactionKey("4Ktq966gC55GAX7S");
$payPalType = new AnetAPI\PayPalType();
$payPalType->setCancelUrl("http://www.merchanteCommerceSite.com/Success/TC25262");
$payPalType->setSuccessUrl("http://www.merchanteCommerceSite.com/Success/TC25262");
$paymentOne = new AnetAPI\PaymentType();
$paymentOne->setPayPal($payPalType);
// Create an authorize and capture transaction
$transactionRequestType = new AnetAPI\TransactionRequestType();
$transactionRequestType->setTransactionType("authCaptureTransaction");
$transactionRequestType->setPayment($paymentOne);
$transactionRequestType->setAmount(151);
$request = new AnetAPI\CreateTransactionRequest();
$request->setMerchantAuthentication($merchantAuthentication);
$request->setTransactionRequest($transactionRequestType);
$controller = new AnetController\CreateTransactionController($request);
$response = $controller->executeWithApiResponse(\net\authorize\api\constants\ANetEnvironment::SANDBOX);
if ($response != null) {
    $tresponse = $response->getTransactionResponse();
    if ($tresponse != null) {
        echo "Received response code: " . $tresponse->getResponseCode() . "\n";
        //Valid response codes: 1=Approved, 2=Declined, 3=Error, 5=Need Payer Consent
        echo "Secure acceptance URL: " . $tresponse->getSecureAcceptance()->getSecureAcceptanceUrl() . "\n";
        echo "Transaction ID: " . $tresponse->getTransId() . "\n";
    } else {
        echo "NULL transactionResponse Error\n";
    }
} else {
// Common setup for API credentials
$merchantAuthentication = new AnetAPI\MerchantAuthenticationType();
$merchantAuthentication->setName("5KP3u95bQpv");
$merchantAuthentication->setTransactionKey("4Ktq966gC55GAX7S");
$refId = 'ref' . time();
$payPalType = new AnetAPI\PayPalType();
$payPalType->setSuccessUrl("http://www.merchanteCommerceSite.com/Success/TC25262");
$payPalType->setCancelUrl("http://www.merchanteCommerceSite.com/Success/TC25262");
$paymentType = new AnetAPI\PaymentType();
$paymentType->setPayPal($payPalType);
$transactionRequest = new AnetAPI\TransactionRequestType();
$transactionRequest->setTransactionType("priorAuthCaptureTransaction");
$transactionRequest->setPayment($paymentType);
$transactionRequest->setAmount(floatval(19.45));
$transactionRequest->setRefTransId(2241687191);
$request = new AnetAPI\CreateTransactionRequest();
$request->setMerchantAuthentication($merchantAuthentication);
$request->setRefId($refId);
$request->setTransactionRequest($transactionRequest);
$controller = new AnetController\CreateTransactionController($request);
$response = $controller->executeWithApiResponse(\net\authorize\api\constants\ANetEnvironment::SANDBOX);
if ($response != null && $response->getMessages()->getResultCode() == "Ok") {
    $tresponse = $response->getTransactionResponse();
    if ($tresponse != null && $tresponse->getResponseCode() == "1") {
        echo "Prior Authorization capture AUTH CODE : " . $tresponse->getAuthCode() . "\n";
    } else {
        echo "Prior Authorization capture ERROR :  Invalid response\n";
    }
} else {
    echo "PriorAuthorizationCapture ERROR :  Invalid response\n";
}
 function refundTransaction()
 {
     $loggedUser = $this->Auth->user();
     //  pr($this->request->data['Transaction']);
     //    exit;
     $this->loadModel('Ticket');
     $this->loadModel('Track');
     $loggedUser = $this->Auth->user();
     // Common setup for API credentials
     $merchantAuthentication = new AnetAPI\MerchantAuthenticationType();
     // $merchantAuthentication->setName("95x9PuD6b2"); // testing mode
     $merchantAuthentication->setName("42UHbr9Qa9B");
     // live mode
     // $merchantAuthentication->setTransactionKey("547z56Vcbs3Nz9R9");  // testing mode
     $merchantAuthentication->setTransactionKey("6468X36RkrKGm3k6");
     // live mode
     $refId = 'ref' . time();
     // Create the payment data for a credit card
     $creditCard = new AnetAPI\CreditCardType();
     $creditCard->setCardNumber($this->request->data['Transaction']['card_no']);
     //$creditCard->setCardNumber("0015");
     $dateObj = $this->request->data['Transaction']['exp_date'];
     $this->request->data['Transaction']['exp_date'] = $dateObj['month'] . '/' . substr($dateObj['year'], -2);
     $creditCard->setExpirationDate($this->request->data['Transaction']['exp_date']);
     // $creditCard->setExpirationDate("XXXX");
     $paymentOne = new AnetAPI\PaymentType();
     $paymentOne->setCreditCard($creditCard);
     //create a transaction
     $transactionRequest = new AnetAPI\TransactionRequestType();
     $transactionRequest->setTransactionType("refundTransaction");
     $transactionRequest->setAmount($this->request->data['Transaction']['refund_amount']);
     $transactionRequest->setPayment($paymentOne);
     $request = new AnetAPI\CreateTransactionRequest();
     $request->setMerchantAuthentication($merchantAuthentication);
     $request->setRefId($refId);
     $request->setTransactionRequest($transactionRequest);
     $controller = new AnetController\CreateTransactionController($request);
     //$response = $controller->executeWithApiResponse(\net\authorize\api\constants\ANetEnvironment::SANDBOX);
     $response = $controller->executeWithApiResponse(\net\authorize\api\constants\ANetEnvironment::PRODUCTION);
     $msg = '';
     $data4transaction['Transaction']['exp_date'] = $this->request->data['Transaction']['exp_date'];
     $data4transaction['Transaction']['card_no'] = $this->request->data['Transaction']['card_no'];
     $data4transaction['Transaction']['user_id'] = $loggedUser['id'];
     if ($response != null) {
         $tresponse = $response->getTransactionResponse();
         //pr($tresponse); exit;
         if ($tresponse != null && $tresponse->getResponseCode() == "1") {
             $data4transaction['Transaction']['paid_amount'] = $this->request->data['Transaction']['refund_amount'];
             $data4transaction['Transaction']['package_customer_id'] = $this->request->data['Transaction']['cid'];
             $data4transaction['Transaction']['status'] = 'Refund Successful';
             //   $data4transaction['Transaction']['trx_id'] = $tresponse->getTransId();
             $msg = ' <div class="alert alert-success">
         <button type="button" class="close" data-dismiss="alert"></button>
         <p> <strong>Refund SUCCESS</strong>
             </p> </div>';
             $tdata['Ticket'] = array('content' => 'Refund successfull');
             $tickect = $this->Ticket->save($tdata);
             // Data save in Ticket
             $trackData['Track'] = array('package_customer_id' => $data4transaction['Transaction']['package_customer_id'], 'ticket_id' => $tickect['Ticket']['id'], 'status' => 'closed', 'forwarded_by' => $loggedUser['id']);
             $this->Track->save($trackData);
         } else {
             $data4transaction['Transaction']['paid_amount'] = 0;
             $data4transaction['Transaction']['package_customer_id'] = $this->request->data['Transaction']['cid'];
             $data4transaction['Transaction']['status'] = 'Refund failed';
             $data4transaction['Transaction']['error_msg'] = "Refund ERROR : ";
             //. $tresponse->getResponseCode();
             $msg = ' <div class="alert alert-block alert-danger fade in">
         <button type="button" class="close" data-dismiss="alert"></button>
         <p> <strong>Refund ERROR  ' . '</strong> </p> </div>';
             $tdata['Ticket'] = array('content' => 'Refund failed for Null response');
             //  pr($tdata['Ticket']);exit;
             $tickect = $this->Ticket->save($tdata['Ticket']);
             // Data save in Ticket
             $trackData['Track'] = array('package_customer_id' => $data4transaction['Transaction']['package_customer_id'], 'ticket_id' => $tickect['Ticket']['id'], 'status' => 'closed', 'forwarded_by' => $loggedUser['id']);
             $this->Track->save($trackData);
         }
     } else {
         $data4transaction['Transaction']['paid_amount'] = 0;
         $data4transaction['Transaction']['package_customer_id'] = $this->request->data['Transaction']['cid'];
         $data4transaction['Transaction']['status'] = 'Refund failed';
         $data4transaction['Transaction']['error_msg'] = "Refund Null response returned";
         $msg .= 'Refund failed for Null response';
         $msg = ' <div class="alert alert-block alert-danger fade in">
         <button type="button" class="close" data-dismiss="alert"></button>
         <p> <strong>Refund failed for Null response  </strong> </p> </div>';
         $tdata['Ticket'] = array('content' => 'Transaction ' . ' Refund failed for Null response');
         $tickect = $this->Ticket->save($tdata);
         // Data save in Ticket
         $trackData['Track'] = array('package_customer_id' => $data4transaction['Transaction']['package_customer_id'], 'ticket_id' => $tickect['Ticket']['id'], 'status' => 'open', 'forwarded_by' => $loggedUser['id']);
         $this->Track->save($trackData);
         //            $tdata4ticket['Ticket'] = array('content' => 'Refund for ' . $pc['fname'] . ' ' . $pc['lname'] . ' failed for Charge Credit card Null response');
         //            $tickect = $this->Ticket->save($tdata); // Data save in Ticket
         //            $trackData['Track'] = array(
         //                'package_customer_id' => $cid,
         //                'ticket_id' => $tickect['Ticket']['id'],
         //                'status' => 'open',
         //                'forwarded_by' => $loggedUser['id']
         //            );
         //            $this->Track->save($trackData);
         //  echo "Refund Null response returned";
     }
     $this->loadModel('Transaction');
     //        pr($this->request->data); exit;
     $data4transaction['Transaction']['pay_mode'] = 'refund';
     $this->Transaction->save($data4transaction);
     $this->Session->setFlash($msg);
     return $this->redirect($this->referer());
 }
 protected function processPayment(Application $app, $cardInfo, $amount, $user, $students, $bill_address)
 {
     define("AUTHORIZENET_LOG_FILE", "../authorize.net.log");
     // Common setup for API credentials
     $merchantAuthentication = new AnetAPI\MerchantAuthenticationType();
     $merchantAuthentication->setName($app['authrize.net.name']);
     $merchantAuthentication->setTransactionKey($app['authrize.net.key']);
     $refId = 'ref' . time();
     // Create the payment data for a credit card
     $creditCard = new AnetAPI\CreditCardType();
     $creditCard->setCardNumber($cardInfo->card_num);
     $creditCard->setExpirationDate($cardInfo->exp);
     $creditCard->setCardCode($cardInfo->code);
     $paymentOne = new AnetAPI\PaymentType();
     $paymentOne->setCreditCard($creditCard);
     // Order info
     // $order = new AnetAPI\OrderType();
     // $order->setInvoiceNumber($order->getInvoiceNumber());
     // $order->setDescription('Payment for '.implode(' ', $students));
     // Line Item Info
     // $lineitem = new AnetAPI\LineItemType();
     // $lineitem->setItemId("Shirts");
     // $lineitem->setName("item1");
     // $lineitem->setDescription("golf shirt");
     // $lineitem->setQuantity("1");
     // $lineitem->setUnitPrice(20.95);
     // $lineitem->setTaxable("Y");
     // Tax info
     // $tax =  new AnetAPI\ExtendedAmountType();
     // $tax->setName("level 2 tax name");
     // $tax->setAmount(4.50);
     // $tax->setDescription("level 2 tax");
     // Customer info
     $customer = new AnetAPI\CustomerDataType();
     $customer->setId($user->getUserId());
     $customer->setEmail($user->getEmail());
     // PO Number
     // $ponumber = "15";
     //Ship To Info
     // $shipto = new AnetAPI\NameAndAddressType();
     // $shipto->setFirstName("Bayles");
     // $shipto->setLastName("China");
     // $shipto->setCompany("Thyme for Tea");
     // $shipto->setAddress("12 Main Street");
     // $shipto->setCity("Pecan Springs");
     // $shipto->setState("TX");
     // $shipto->setZip("44628");
     // $shipto->setCountry("USA");
     // Bill To
     $billto = new AnetAPI\CustomerAddressType();
     $billto->setFirstName($user->getFirstName());
     $billto->setLastName($user->getLastName());
     $billto->setCompany("");
     $billto->setAddress($bill_address->getStreet());
     $billto->setCity($bill_address->getCity());
     $billto->setState($bill_address->getState());
     $billto->setZip($bill_address->getZip());
     $billto->setCountry("USA");
     //create a transaction
     $transactionRequestType = new AnetAPI\TransactionRequestType();
     $transactionRequestType->setTransactionType("authCaptureTransaction");
     $transactionRequestType->setAmount($amount);
     $transactionRequestType->setPayment($paymentOne);
     // $transactionRequestType->setOrder($order);
     // $transactionRequestType->addToLineItems($lineitem);
     // $transactionRequestType->setTax($tax);
     // $transactionRequestType->setPoNumber($ponumber);
     $transactionRequestType->setCustomer($customer);
     $transactionRequestType->setBillTo($billto);
     // $transactionRequestType->setShipTo($shipto);
     $request = new AnetAPI\CreateTransactionRequest();
     $request->setMerchantAuthentication($merchantAuthentication);
     $request->setRefId($refId);
     $request->setTransactionRequest($transactionRequestType);
     $controller = new AnetController\CreateTransactionController($request);
     $response = $controller->executeWithApiResponse(\net\authorize\api\constants\ANetEnvironment::SANDBOX);
     if (null != $response) {
         $tresponse = $response->getTransactionResponse();
         if ($tresponse != null && $tresponse->getResponseCode() == "1") {
             // return array(
             // "AUTH_CODE" => $tresponse->getAuthCode(),
             // "TRANS_ID" => $tresponse->getTransId()
             // );
             return array('approved' => true, 'data' => $tresponse);
         } else {
             return array('approved' => false, 'data' => $tresponse);
         }
     } else {
         return array('approved' => false, 'data' => null);
     }
 }
 public function process()
 {
     $this->layout = 'ajax';
     //        $this->loadModel('PaidCustomer');
     //        $sql = "SELECT name, transactionkey ,card_no, exp_date FROM paid_customers ";
     //        $cardinfo = $this->PaidCustomer->query($sql);
     //        // Common setup for API credentials
     //        $merchantAuthentication = new AnetAPI\MerchantAuthenticationType();
     //        $merchantAuthentication->setName("95x9PuD6b2"); // testing mode
     //        //$merchantAuthentication->setName("42UHbr9Qa9B"); // live mode
     //        $merchantAuthentication->setTransactionKey("547z56Vcbs3Nz9R9");  // testing mode
     ////        $merchantAuthentication->setTransactionKey("6468X36RkrKGm3k6"); // live mode
     //        $refId = 'ref' . time();
     //
     //        // Create the payment data for a credit card
     //        $creditCard = new AnetAPI\CreditCardType();
     //        $creditCard->setCardNumber("4111111111111111"); // testing
     //        $creditCard->setExpirationDate("2038-12"); // testing
     //
     //      //  $creditCard->setCardNumber("4117733943147221"); // live
     //       // $creditCard->setExpirationDate("07-2019"); //live
     //        $paymentOne = new AnetAPI\PaymentType();
     //        $paymentOne->setCreditCard($creditCard);
     //
     //        // Order info
     //        $order = new AnetAPI\OrderType();
     //        $order->setInvoiceNumber("101");
     //        $order->setDescription("Golf Shirts");
     //
     //        // Line Item Info
     //        $lineitem = new AnetAPI\LineItemType();
     //        $lineitem->setItemId("Shirts");
     //        $lineitem->setName("item1");
     //        $lineitem->setDescription("golf shirt");
     //        $lineitem->setQuantity("1");
     //        $lineitem->setUnitPrice(1.00);
     //        $lineitem->setTaxable(false);
     //
     //        // Tax info
     ////        $tax = new AnetAPI\ExtendedAmountType();
     ////        $tax->setName("level 2 tax name");
     ////        $tax->setAmount(4.50);
     ////        $tax->setDescription("level 2 tax");
     //        // Customer info
     ////        $customer = new AnetAPI\CustomerDataType();
     ////        $customer->setId("15");
     ////        $customer->setEmail("*****@*****.**");
     //        // PO Number
     //        $ponumber = "15";
     //        //Ship To Info
     //        $shipto = new AnetAPI\NameAndAddressType();
     //        //$shipto->setFirstName("Bayles");
     //        // $shipto->setLastName("China");
     //        // $shipto->setCompany("Thyme for Tea");
     //        //  $shipto->setAddress("12 Main Street");
     //        // $shipto->setCity("Pecan Springs");
     //        //  $shipto->setState("TX");
     //        $shipto->setZip("11554");
     //        //  $shipto->setCountry("USA");
     //        // Bill To
     ////        $billto = new AnetAPI\CustomerAddressType();
     ////        $billto->setFirstName("Ellen");
     ////        $billto->setLastName("Johnson");
     ////        $billto->setCompany("Souveniropolis");
     ////        $billto->setAddress("14 Main Street");
     ////        $billto->setCity("Pecan Springs");
     ////        $billto->setState("TX");
     ////        $billto->setZip("44628");
     ////        $billto->setCountry("USA");
     //        //create a transaction
     //        $transactionRequestType = new AnetAPI\TransactionRequestType();
     //        $transactionRequestType->setTransactionType("authCaptureTransaction");
     //        $transactionRequestType->setAmount(1.00);
     ////        $transactionRequestType->setPayment($paymentOne);
     ////        $transactionRequestType->setOrder($order);
     ////        $transactionRequestType->addToLineItems($lineitem);
     ////        $transactionRequestType->setTax($tax);
     ////        $transactionRequestType->setPoNumber($ponumber);
     ////        $transactionRequestType->setCustomer($customer);
     ////        $transactionRequestType->setBillTo($billto);
     ////        $transactionRequestType->setShipTo($shipto);
     //
     //        $request = new AnetAPI\CreateTransactionRequest();
     //        $request->setMerchantAuthentication($merchantAuthentication);
     //        $request->setRefId($refId);
     //        $request->setTransactionRequest($transactionRequestType);
     //        $controller = new AnetController\CreateTransactionController($request);
     //        $response = $controller->executeWithApiResponse(\net\authorize\api\constants\ANetEnvironment::SANDBOX); //Testing
     //       // $response = $controller->executeWithApiResponse(\net\authorize\api\constants\ANetEnvironment::PRODUCTION); // live
     //
     //        pr($response);
     //        exit;
     //
     //        $msg = '';
     //        if ($response != null) {
     //            $tresponse = $response->getTransactionResponse();
     //
     //            if (($tresponse != null) && ($tresponse->getResponseCode() == "1")) {
     //                $msg = "Transaction Successful ! : " . "<br/>";
     //                $msg .= "Charge Credit Card AUTH CODE : " . $tresponse->getAuthCode() . "<br/>";
     //                $msg .= "Charge Credit Card TRANS ID  : " . $tresponse->getTransId() . "<br/>";
     //            } else {
     //                $msg = "Charge Credit Card ERROR :  Invalid response\n";
     //            }
     //        } else {
     //            $msg = "Charge Credit card Null response returned";
     //        }
     // Common setup for API credentials
     $merchantAuthentication = new AnetAPI\MerchantAuthenticationType();
     // $merchantAuthentication->setName("95x9PuD6b2"); // testing mode
     $merchantAuthentication->setName("42UHbr9Qa9B");
     // live mode
     //$merchantAuthentication->setTransactionKey("547z56Vcbs3Nz9R9");  // testing mode
     $merchantAuthentication->setTransactionKey("6468X36RkrKGm3k6");
     // live mode
     $refId = 'ref' . time();
     // Create the payment data for a credit card
     $creditCard = new AnetAPI\CreditCardType();
     $this->loadModel('PaidCustomer');
     $this->loadModel('Transaction');
     $pcustomers = $this->PaidCustomer->find('all');
     //        pr($pcustomers);
     //        exit;
     $msg = '<ul>';
     foreach ($pcustomers as $pcustomer) {
         $pc = $pcustomer['PaidCustomer'];
         $creditCard->setCardNumber($pc['card_no']);
         // testing
         $creditCard->setExpirationDate($pc['exp_date']);
         // testing
         //     $creditCard->setCardNumber("4117733943147221"); // live
         //  $creditCard->setExpirationDate("07-2019"); //live
         $paymentOne = new AnetAPI\PaymentType();
         $paymentOne->setCreditCard($creditCard);
         $transactionData['paid_customer_id'] = $pc['id'];
         //    Bill To
         $billto = new AnetAPI\CustomerAddressType();
         $billto->setFirstName($pc['fname']);
         $billto->setLastName($pc['lname']);
         // $billto->setCompany("Souveniropolis");
         //$billto->setAddress("14 Main Street");
         //$billto->setCity("Pecan Springs");
         //$billto->setState("TX");
         $billto->setZip($pc['zip_code']);
         //$billto->setCountry("USA");
         // Create a transaction
         $transactionRequestType = new AnetAPI\TransactionRequestType();
         $transactionRequestType->setTransactionType("authCaptureTransaction");
         $transactionRequestType->setAmount($pc['amount']);
         $transactionRequestType->setPayment($paymentOne);
         $request = new AnetAPI\CreateTransactionRequest();
         $request->setMerchantAuthentication($merchantAuthentication);
         $request->setRefId($refId);
         $request->setTransactionRequest($transactionRequestType);
         $controller = new AnetController\CreateTransactionController($request);
         //   $response = $controller->executeWithApiResponse(\net\authorize\api\constants\ANetEnvironment::SANDBOX); //Testing
         $response = $controller->executeWithApiResponse(\net\authorize\api\constants\ANetEnvironment::PRODUCTION);
         // live
         //  pr($response); exit;
         $transactionData['error_msg'] = '';
         $transactionData['status'] = '';
         $transactionData['trx_id'] = '';
         $transactionData['auth_code'] = '';
         if ($response != null) {
             $tresponse = $response->getTransactionResponse();
             // pr($tresponse ); exit;
             if ($tresponse != null && $tresponse->getResponseCode() == "1") {
                 $transactionData['status'] = 'success';
                 $transactionData['trx_id'] = $tresponse->getTransId();
                 $transactionData['auth_code'] = $tresponse->getAuthCode();
                 $msg .= '<li> Transaction for ' . $pc['fname'] . ' ' . $pc['lname'] . ' successfull</li>';
             } else {
                 $transactionData['status'] = 'error';
                 $transactionData['error_msg'] = "Charge Credit Card ERROR :  Invalid response";
                 $msg .= '<li> Transaction for ' . $pc['fname'] . ' ' . $pc['lname'] . ' failed for Charge Credit Card ERROR</li>';
             }
         } else {
             $transactionData['status'] = 'error';
             $transactionData['error_msg'] = "Charge Credit card Null response returned";
             $msg .= '<li> Transaction for ' . $pc['fname'] . ' ' . $pc['lname'] . ' failed for Charge Credit card Null response</li>';
         }
         $this->Transaction->create();
         $this->Transaction->save($transactionData);
     }
     $msg .= '</ul>';
     $this->set(compact('msg'));
 }
示例#12
0
 function makeRefund2($amount, $card_last_four, $exp_date, $trans_id)
 {
     $merchantAuthentication = $this->sandbox_authorize();
     $refId = 'ref' . time();
     $date = $this->prepareExpirationDate($exp_date);
     /*
     * 
      $transaction = new AuthorizeNetTransaction;
      $transaction->amount = $amount;
      $transaction->customerProfileId = $customerProfileId;
      $transaction->customerPaymentProfileId = $paymentProfileId;
      $transaction->transId = $transid; // original transaction ID
     
      $response = $request->createCustomerProfileTransaction("Refund", $transaction);
      $transactionResponse = $response->getTransactionResponse();
     
      $transactionId = $transactionResponse->transaction_id;
     * 
     */
     // Create the payment data for a credit card
     $creditCard = new AnetAPI\CreditCardType();
     //$creditCard->setCardNumber(base64_decode($card_last_four));
     $creditCard->setCardNumber($card_last_four);
     $creditCard->setExpirationDate($date);
     $paymentOne = new AnetAPI\PaymentType();
     $paymentOne->setCreditCard($creditCard);
     //create a transaction
     $transactionRequest = new AnetAPI\TransactionRequestType();
     $transactionRequest->setTransactionType("refundTransaction");
     $transactionRequest->setAmount($amount);
     $transactionRequest->setRefTransId($trans_id);
     $transactionRequest->setPayment($paymentOne);
     $request = new AnetAPI\CreateTransactionRequest();
     $request->setMerchantAuthentication($merchantAuthentication);
     $request->setRefId($refId);
     $request->setTransactionRequest($transactionRequest);
     $controller = new AnetController\CreateTransactionController($request);
     $response = $controller->executeWithApiResponse(\net\authorize\api\constants\ANetEnvironment::SANDBOX);
     //$response = $controller->executeWithApiResponse(\net\authorize\api\constants\ANetEnvironment::PRODUCTION);
     if ($response != null) {
         $tresponse = $response->getTransactionResponse();
         echo "Response: <pre>";
         print_r($tresponse);
         echo "</pre>";
         if ($tresponse != null && $tresponse->getResponseCode() == "1") {
             //echo "it is ok ....";
             return TRUE;
         } else {
             $this->save_log($tresponse, $post_order);
             return FALSE;
         }
     } else {
         //echo "Null resposnse .. ...";
         return FALSE;
     }
     return $response;
 }
 public function individual_transaction($id = null)
 {
     $this->layout = 'ajax';
     // Common setup for API credentials
     $merchantAuthentication = new AnetAPI\MerchantAuthenticationType();
     $merchantAuthentication->setName("95x9PuD6b2");
     // testing mode
     //$merchantAuthentication->setName("42UHbr9Qa9B"); // live mode
     $merchantAuthentication->setTransactionKey("547z56Vcbs3Nz9R9");
     // testing mode
     //$merchantAuthentication->setTransactionKey("6468X36RkrKGm3k6"); // live mode
     $refId = 'ref' . time();
     // Create the payment data for a credit card
     $creditCard = new AnetAPI\CreditCardType();
     $this->loadModel('PaidCustomer');
     $this->loadModel('Transaction');
     $pcustomers = $this->PaidCustomer->find('first', array('conditions' => array('PaidCustomer.id' => $id)));
     //pr($pcustomers);
     //exit;
     $msg = '<ul>';
     //foreach ($pcustomers as $pcustomer):
     $pc = $pcustomers['PaidCustomer'];
     // pr($pc); exit;
     $creditCard->setCardNumber($pc['card_no']);
     // testing
     $creditCard->setExpirationDate($pc['exp_date']);
     // testing
     //     $creditCard->setCardNumber("4117733943147221"); // live
     //  $creditCard->setExpirationDate("07-2019"); //live
     $paymentOne = new AnetAPI\PaymentType();
     $paymentOne->setCreditCard($creditCard);
     $transactionData['paid_customer_id'] = $pc['id'];
     //    Bill To
     $billto = new AnetAPI\CustomerAddressType();
     $billto->setFirstName($pc['fname']);
     $billto->setLastName($pc['lname']);
     // $billto->setCompany("Souveniropolis");
     //$billto->setAddress("14 Main Street");
     //$billto->setCity("Pecan Springs");
     //$billto->setState("TX");
     $billto->setZip($pc['zip_code']);
     //$billto->setCountry("USA");
     // Create a transaction
     $transactionRequestType = new AnetAPI\TransactionRequestType();
     $transactionRequestType->setTransactionType("authCaptureTransaction");
     $transactionRequestType->setAmount($pc['amount']);
     $transactionRequestType->setPayment($paymentOne);
     $request = new AnetAPI\CreateTransactionRequest();
     $request->setMerchantAuthentication($merchantAuthentication);
     $request->setRefId($refId);
     $request->setTransactionRequest($transactionRequestType);
     $controller = new AnetController\CreateTransactionController($request);
     $response = $controller->executeWithApiResponse(\net\authorize\api\constants\ANetEnvironment::SANDBOX);
     //Testing
     //$response = $controller->executeWithApiResponse(\net\authorize\api\constants\ANetEnvironment::PRODUCTION); // live
     //  pr($response); exit;
     $transactionData['error_msg'] = '';
     $transactionData['status'] = '';
     $transactionData['trx_id'] = '';
     $transactionData['auth_code'] = '';
     if ($response != null) {
         $tresponse = $response->getTransactionResponse();
         // pr($tresponse ); exit;
         if ($tresponse != null && $tresponse->getResponseCode() == "1") {
             $transactionData['status'] = 'success';
             $transactionData['trx_id'] = $tresponse->getTransId();
             $transactionData['auth_code'] = $tresponse->getAuthCode();
             $msg .= '<li> Transaction for ' . $pc['fname'] . ' ' . $pc['lname'] . ' successfull</li>';
         } else {
             $transactionData['status'] = 'error';
             $transactionData['error_msg'] = "Charge Credit Card ERROR :  Invalid response";
             $msg .= '<li> Transaction for ' . $pc['fname'] . ' ' . $pc['lname'] . ' failed for Charge Credit Card ERROR</li>';
         }
     } else {
         $transactionData['status'] = 'error';
         $transactionData['error_msg'] = "Charge Credit card Null response returned";
         $msg .= '<li> Transaction for ' . $pc['fname'] . ' ' . $pc['lname'] . ' failed for Charge Credit card Null response</li>';
     }
     $this->Transaction->create();
     $this->Transaction->save($transactionData);
     // endforeach;
     //$msg .='</ul>';
     $msg1 = '<div class="alert alert-success">
     <button type="button" class="close" data-dismiss="alert">&times;</button>
     <strong>' . $msg . '</strong>
 </div>';
     $this->Session->setFlash($msg1);
     return $this->redirect($this->referer());
     //$this->set(compact('msg'));
 }
 public function __invoke(ContainerInterface $sm)
 {
     $createTransactionRequest = new CreateTransactionRequest();
     $createTransactionRequest->setMerchantAuthentication($sm->get(MerchantAuthenticationType::class));
     return $createTransactionRequest;
 }
 public function testCreateTransactionCreditCard()
 {
     $this->markTestSkipped('Ignoring for Travis. Will fix after release.');
     //TODO
     $name = defined('AUTHORIZENET_API_LOGIN_ID') && '' != AUTHORIZENET_API_LOGIN_ID ? AUTHORIZENET_API_LOGIN_ID : getenv("api_login_id");
     $transactionKey = defined('AUTHORIZENET_TRANSACTION_KEY') && '' != AUTHORIZENET_TRANSACTION_KEY ? AUTHORIZENET_TRANSACTION_KEY : getenv("transaction_key");
     $merchantAuthentication = new MerchantAuthenticationType();
     $merchantAuthentication->setName($name);
     $merchantAuthentication->setTransactionKey($transactionKey);
     $refId = 'ref' . time();
     //create a transaction
     $transactionRequestType = new TransactionRequestType();
     $transactionRequestType->setTransactionType("authCaptureTransaction");
     // TODO Change to Enum
     $transactionRequestType->setAmount($this->setValidAmount($this->counter));
     $transactionRequestType->setPayment($this->paymentOne);
     $transactionRequestType->setOrder($this->orderType);
     $transactionRequestType->setCustomer($this->customerDataOne);
     $transactionRequestType->setBillTo($this->customerAddressOne);
     $request = new CreateTransactionRequest();
     $request->setMerchantAuthentication($merchantAuthentication);
     $request->setRefId($refId);
     $request->setTransactionRequest($transactionRequestType);
     $controller = new CreateTransactionController($request);
     $controller->executeWithApiResponse(\net\authorize\api\constants\ANetEnvironment::SANDBOX);
     $response = $controller->getApiResponse();
     // Handle the response.
     $this->assertNotNull($response, "null response");
     $this->assertNotNull($response->getMessages());
     $this->assertEquals("Ok", $response->getMessages()->getResultCode());
     $this->assertEquals($response->getRefId(), $refId);
     $this->assertTrue(0 < count($response->getMessages()));
     foreach ($response->getMessages() as $message) {
         $this->assertEquals("I00001", $message->getCode());
         $this->assertEquals("Successful.", $response->getText());
     }
 }