markTestSkipped('authorize.net not configured'); } $this->makeTestData(); } public function testUnpackingVars() { $vars = json_decode(config('ninja.testvars.authorize')); $this->assertTrue(property_exists($vars, 'apiLoginId')); } public function testCreatePublicClientKey() { error_reporting(E_ALL & ~E_DEPRECATED); $vars = json_decode(config('ninja.testvars.authorize')); $merchantAuthentication = new AnetAPI\MerchantAuthenticationType(); $merchantAuthentication->setName($vars->apiLoginId); $merchantAuthentication->setTransactionKey($vars->transactionKey); $request = new AnetAPI\GetMerchantDetailsRequest(); $request->setMerchantAuthentication($merchantAuthentication); $controller = new GetMerchantDetailsController($request); $response = $controller->executeWithApiResponse(\net\authorize\api\constants\ANetEnvironment::SANDBOX); $this->assertNotNull($response->getPublicClientKey()); } public function testProfileIdList() { error_reporting(E_ALL & ~E_DEPRECATED); $vars = json_decode(config('ninja.testvars.authorize')); $merchantAuthentication = new AnetAPI\MerchantAuthenticationType(); $merchantAuthentication->setName($vars->apiLoginId); $merchantAuthentication->setTransactionKey($vars->transactionKey); // Set the transaction's refId $refId = 'ref'.time(); // Get all existing customer profile ID's $request = new GetCustomerProfileIdsRequest(); $request->setMerchantAuthentication($merchantAuthentication); $controller = new GetCustomerProfileIdsController($request); $response = $controller->executeWithApiResponse(\net\authorize\api\constants\ANetEnvironment::SANDBOX); if (($response != null) && ($response->getMessages()->getResultCode() == 'Ok')) { info("GetCustomerProfileId's SUCCESS: "."\n"); info(print_r($response->getIds(), 1)); } else { info("GetCustomerProfileId's ERROR : Invalid response\n"); $errorMessages = $response->getMessages()->getMessage(); info('Response : '.$errorMessages[0]->getCode().' '.$errorMessages[0]->getText()."\n"); } $this->assertNotNull($response); } public function testCreateProfile() { error_reporting(E_ALL & ~E_DEPRECATED); $vars = json_decode(config('ninja.testvars.authorize')); $merchantAuthentication = new AnetAPI\MerchantAuthenticationType(); $merchantAuthentication->setName($vars->apiLoginId); $merchantAuthentication->setTransactionKey($vars->transactionKey); // Create the Bill To info for new payment type $billTo = new 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'); $billTo->setPhoneNumber('888-888-8888'); $billTo->setfaxNumber('999-999-9999'); // Create a customer shipping address $customerShippingAddress = new CustomerAddressType(); $customerShippingAddress->setFirstName('James'); $customerShippingAddress->setLastName('White'); $customerShippingAddress->setCompany('Addresses R Us'); $customerShippingAddress->setAddress(rand().' North Spring Street'); $customerShippingAddress->setCity('Toms River'); $customerShippingAddress->setState('NJ'); $customerShippingAddress->setZip('08753'); $customerShippingAddress->setCountry('USA'); $customerShippingAddress->setPhoneNumber('888-888-8888'); $customerShippingAddress->setFaxNumber('999-999-9999'); // Create an array of any shipping addresses $shippingProfiles[] = $customerShippingAddress; $refId = 'ref'.time(); $email = 'test12@gmail.com'; // Create a new CustomerProfileType and add the payment profile object $customerProfile = new CustomerProfileType(); $customerProfile->setDescription('Customer 2 Test PHP'); $customerProfile->setMerchantCustomerId('M_'.time()); $customerProfile->setEmail($email); //$customerProfile->setpaymentProfiles($paymentProfiles); $customerProfile->setShipToList($shippingProfiles); // Assemble the complete transaction request $request = new AnetAPI\CreateCustomerProfileRequest(); $request->setMerchantAuthentication($merchantAuthentication); $request->setRefId($refId); $request->setProfile($customerProfile); // Create the controller and get the response $controller = new CreateCustomerProfileController($request); $response = $controller->executeWithApiResponse(\net\authorize\api\constants\ANetEnvironment::SANDBOX); if (($response != null) && ($response->getMessages()->getResultCode() == 'Ok')) { info('Succesfully created customer profile : '.$response->getCustomerProfileId()."\n"); $paymentProfiles = $response->getCustomerPaymentProfileIdList(); info(print_r($paymentProfiles, 1)); } else { info("ERROR : Invalid response\n"); $errorMessages = $response->getMessages()->getMessage(); info('Response : '.$errorMessages[0]->getCode().' '.$errorMessages[0]->getText()."\n"); } info('the new customer profile id = '.$response->getCustomerProfileId()); $this->assertNotNull($response); } public function testGetCustomerProfileId() { error_reporting(E_ALL & ~E_DEPRECATED); $vars = json_decode(config('ninja.testvars.authorize')); $merchantAuthentication = new AnetAPI\MerchantAuthenticationType(); $merchantAuthentication->setName($vars->apiLoginId); $merchantAuthentication->setTransactionKey($vars->transactionKey); $request = new GetCustomerProfileRequest(); $request->setMerchantAuthentication($merchantAuthentication); $request->setCustomerProfileId($this->customer_profile_id); $controller = new GetCustomerProfileController($request); $response = $controller->executeWithApiResponse(\net\authorize\api\constants\ANetEnvironment::SANDBOX); if (($response != null) && ($response->getMessages()->getResultCode() == 'Ok')) { info('got profile'); info(print_r($response->getProfile(), 1)); } else { info("ERROR : Invalid response\n"); } $this->assertNotNull($response); } public function testCreateCustomerPaymentProfile() { info('test create customer payment profile'); error_reporting(E_ALL & ~E_DEPRECATED); $vars = json_decode(config('ninja.testvars.authorize')); $merchantAuthentication = new AnetAPI\MerchantAuthenticationType(); $merchantAuthentication->setName($vars->apiLoginId); $merchantAuthentication->setTransactionKey($vars->transactionKey); // Set the transaction's refId $refId = 'ref'.time(); // Set credit card information for payment profile $creditCard = new CreditCardType(); $creditCard->setCardNumber('4111111111111111'); $creditCard->setExpirationDate('2024-01'); $creditCard->setCardCode('100'); $paymentCreditCard = new PaymentType(); $paymentCreditCard->setCreditCard($creditCard); // Create the Bill To info for new payment type $billto = new CustomerAddressType(); $billto->setFirstName('Elas'); $billto->setLastName('Joson'); $billto->setCompany('Souveniropolis'); $billto->setAddress('14 Main Street'); $billto->setCity('Pecan Springs'); $billto->setState('TX'); $billto->setZip('44628'); $billto->setCountry('USA'); $billto->setPhoneNumber('999-999-9999'); $billto->setfaxNumber('999-999-9999'); // Create a new Customer Payment Profile object $paymentprofile = new CustomerPaymentProfileType(); $paymentprofile->setCustomerType('individual'); $paymentprofile->setBillTo($billto); $paymentprofile->setPayment($paymentCreditCard); $paymentprofile->setDefaultPaymentProfile(true); $paymentprofiles[] = $paymentprofile; // Assemble the complete transaction request $paymentprofilerequest = new CreateCustomerPaymentProfileRequest(); $paymentprofilerequest->setMerchantAuthentication($merchantAuthentication); // Add an existing profile id to the request $paymentprofilerequest->setCustomerProfileId($this->customer_profile_id); $paymentprofilerequest->setPaymentProfile($paymentprofile); $paymentprofilerequest->setValidationMode('liveMode'); // Create the controller and get the response $controller = new CreateCustomerPaymentProfileController($paymentprofilerequest); $response = $controller->executeWithApiResponse(\net\authorize\api\constants\ANetEnvironment::SANDBOX); if (($response != null) && ($response->getMessages()->getResultCode() == 'Ok')) { info('Create Customer Payment Profile SUCCESS: '.$response->getCustomerPaymentProfileId()."\n"); } else { info("Create Customer Payment Profile: ERROR Invalid response\n"); $errorMessages = $response->getMessages()->getMessage(); info('Response : '.$errorMessages[0]->getCode().' '.$errorMessages[0]->getText()."\n"); } $this->assertNotNull($response); } public function testChargeCustomerProfile() { error_reporting(E_ALL & ~E_DEPRECATED); $vars = json_decode(config('ninja.testvars.authorize')); $merchantAuthentication = new AnetAPI\MerchantAuthenticationType(); $merchantAuthentication->setName($vars->apiLoginId); $merchantAuthentication->setTransactionKey($vars->transactionKey); // Set the transaction's refId $refId = 'ref'.time(); $profileToCharge = new CustomerProfilePaymentType(); $profileToCharge->setCustomerProfileId($this->customer_profile_id); $paymentProfile = new PaymentProfileType(); $paymentProfile->setPaymentProfileId($this->customer_payment_profile); $profileToCharge->setPaymentProfile($paymentProfile); $transactionRequestType = new TransactionRequestType(); $transactionRequestType->setTransactionType('authCaptureTransaction'); $transactionRequestType->setAmount(350); $transactionRequestType->setProfile($profileToCharge); $request = new CreateTransactionRequest(); $request->setMerchantAuthentication($merchantAuthentication); $request->setRefId($refId); $request->setTransactionRequest($transactionRequestType); $controller = new CreateTransactionController($request); $response = $controller->executeWithApiResponse(\net\authorize\api\constants\ANetEnvironment::SANDBOX); if ($response != null) { if ($response->getMessages()->getResultCode() == 'Ok') { $tresponse = $response->getTransactionResponse(); if ($tresponse != null && $tresponse->getMessages() != null) { info(' Transaction Response code : '.$tresponse->getResponseCode()."\n"); info('Charge Customer Profile APPROVED :'."\n"); info(' Charge Customer Profile AUTH CODE : '.$tresponse->getAuthCode()."\n"); info(' Charge Customer Profile TRANS ID : '.$tresponse->getTransId()."\n"); info(' Code : '.$tresponse->getMessages()[0]->getCode()."\n"); info(' Description : '.$tresponse->getMessages()[0]->getDescription()."\n"); } else { info("Transaction Failed \n"); if ($tresponse->getErrors() != null) { info(' Error code : '.$tresponse->getErrors()[0]->getErrorCode()."\n"); info(' Error message : '.$tresponse->getErrors()[0]->getErrorText()."\n"); } } } else { info("Transaction Failed \n"); $tresponse = $response->getTransactionResponse(); if ($tresponse != null && $tresponse->getErrors() != null) { info(' Error code : '.$tresponse->getErrors()[0]->getErrorCode()."\n"); info(' Error message : '.$tresponse->getErrors()[0]->getErrorText()."\n"); } else { info(' Error code : '.$response->getMessages()->getMessage()[0]->getCode()."\n"); info(' Error message : '.$response->getMessages()->getMessage()[0]->getText()."\n"); } } } else { info("No response returned \n"); } $this->assertNotNull($response); $this->assertNotNull($tresponse); /* Testing refunds - need to research more as payments are in a pending state so cannot be 'refunded'*/ // info("transaction reference = " . $tresponse->getTransId()); // $payment = PaymentFactory::create($this->company->id, $this->user->id); // $payment->amount = 400; // $payment->client_id = $this->client->id; // $payment->date = now(); // $payment->transaction_reference = $tresponse->getTransId(); // $payment->company_gateway_id = 1; // $payment->save(); // $company_gateway = CompanyGateway::where('gateway_key', '3b6621f970ab18887c4f6dca78d3f8bb')->first(); // $authorize_payment_driver = new AuthorizePaymentDriver($company_gateway, $this->client); // $response = $authorize_payment_driver->refund($payment, 350); // info(print_r($response,1)); // $this->assertTrue(is_array($response)); } }