put(SessionConnection::PROCESSOR_HOST, "http://server.ibillingclient.org/ibilling/xmlhttps"); //Amount to be used for test transactions that are processed to validate new payment options; optional $config->put(SessionConnection::PAYMENT_OPTION_VERIFICATION_AMOUNT, 99); //Set the value to true to view XML exchanged between your client and the server $config->put(SessionConnection::DEBUG, true); //Data for increased fraud protection, all of these values are optional //Domain name of user's e-mail (user on behalf of whom the transaction is processed) $config->put(SessionConnection::CLIENT_EMAIL_DOMAIN, "hotmail.com"); //IP Address of the user's machine (user on behalf of whom the transaction is processed) $config->put(SessionConnection::CLIENT_IP_ADDRESS, "145.21.0.1"); //Full e-mail address of the user as MD5 (user on behalf of whom the transaction is processed) $config->put(SessionConnection::CLIENT_EMAIL_ENCODED, "8d89c3087cc6cb98793ab7c0f5658c56"); //Full user name of the user as MD5 (user on behalf of whom the transaction is processed) $config->put(SessionConnection::CLIENT_USER_NAME_ENCODED, "435e0648d634175c46bd40ac366545a8"); //Password of the user as MD5 (user on behalf of whom the transaction is processed) $config->put(SessionConnection::CLIENT_PASSWORD_ENCODED, "5f4dcc3b5aa765d61d8327deb882cf99"); //Login $session = Session::login(2000, "welcome", $config); //Create customer account $customerAccount = $session->createCustomerAccount(); //code is optinal; if you specify the value, make sure the code is unique $customerAccount->setCode("php.ca-1"); $customerAccount->setMerchantAccountCode(2001); $customerAccount->setFirstName("John"); $customerAccount->setLastName("Smith"); $customerAccount->setType(CustomerAccountType::Male); $customerAccount->setHomePhone("2129856472"); $customerAccount->setEmail("test@yahoo.com"); $customerAccount->setStreet1("233 12th Street"); $customerAccount->setCity("Honolulu"); $customerAccount->setState("CA"); $customerAccount->setZipCode("31904"); //Create payment option $paymentOption = $customerAccount->createPaymentOption(); //code is optinal; if you specify the value, make sure the code is unique $paymentOption->setCode("php.po-1"); $paymentOption->setHolderName("John Smith"); $paymentOption->setNumber("4111111111111111"); //expiration date $paymentOption->setAccessory("1209"); $paymentOption->setStreet1("233 12th Street"); $paymentOption->setCity("Honolulu"); $paymentOption->setState("CA"); $paymentOption->setZipCode("31904"); //Create payment plan $paymentPlan = $customerAccount->createPaymentPlan(); //code is optinal; if you specify the value, make sure the code is unique $paymentPlan->setCode("php.pp-1"); //all amounts are in cents $paymentPlan->setAmount(5000); //Item Codes must be setup in portal prior to being used $paymentPlan->setItemCode("Membership"); $paymentPlan->setType(PaymentPlanType::Fixed); //Billing Cycle codes must be setup in portal prior to being used $paymentPlan->setBillingCycleCode("M03"); //Specify desired billing date; if nothing specified, next billing date of the selected cycle assumed. //$paymentPlan->setFirstBillingDate(); $paymentPlan->add(0, 12, false); // Create invoice for downpayment $revenueTransaction = $customerAccount->createRevenueTransaction(); //code is optinal; if you specify the value, make sure the code is unique $revenueTransaction->setCode("php.rt-1"); //all amounts are in cents $revenueTransaction->setAmount(10000); //Item Codes must be setup in portal prior to being used $revenueTransaction->setItemCode("Membership"); //Type of transaction $revenueTransaction->setAccountActivityType(AccountActivityType::Invoice); //Create payment for downpayment $transaction = $customerAccount->createAssetTransaction(); //code is optinal; if you specify the value, make sure the code is unique $transaction->setCode("php.at-1"); //all amounts are in cents $transaction->setAmount(10000); $transaction->setTransactionType(AssetTransactionType::Cash); $transaction->setAccountActivityType(AccountActivityType::Payment); //Mark object for persistence $session->save($customerAccount); //Synchronize changes with the server try{ $session->synchronize(); } catch(Exception $ex){ //Be sure to properly handle exception, this is just a sample solution print($ex->getMessage()); return ; } //Get info from customer account print($customerAccount->getCode()); print($customerAccount->getFirstName()); print($customerAccount->getLastName()); //Get info from payment option print($paymentOption->getCode()); print($paymentOption->getAccessory()); print($paymentOption->getNumber()); //Get info from payment plan print($paymentPlan->getCode()); print($paymentPlan->getFirstBillingDate()->format('m/d/Y')); print($paymentPlan->getBillingCycleCode()); //Get info from revenue transaction print($revenueTransaction->getCode()); print($revenueTransaction->getAmount()); print($revenueTransaction->getAccountActivityType()); //Get info from asset transaction print($transaction->getCode()); print($transaction->getAmount()); print($transaction->getAccountActivityType()); //logout $session->logout(); ?>