#include "stdafx.h" using namespace System; using namespace System::Collections::Generic; using namespace iBilling::Client; int Scenario2(array ^args) { //Set up clients' settings; Dictionary^ config = gcnew Dictionary(); config[SessionConnection::PROCESSOR_HOST] = "http://server.ibillingclient.org/ibilling/xmlhttps"; config[SessionConnection::PAYMENT_OPTION_VERIFICATION_AMOUNT] = 99; config["debug"] = true; //Login; Session^ session = Session::Login(2000, "welcome", config); //Create customer account; CustomerAccount^ customerAccount = session->CreateCustomerAccount(); //code is optinal; if you specify the value, make sure the code is unique; customerAccount->Code = "cpp.ca-2"; customerAccount->MerchantAccountCode = 2001; customerAccount->FirstName = "John"; customerAccount->LastName = "Smith"; customerAccount->Type = CustomerAccountTypes::Male; customerAccount->HomePhone = "2129856472"; customerAccount->Email = "test@yahoo.com"; customerAccount->Street1 = "233 12th Street"; customerAccount->City = "Columbus"; customerAccount->State = "NY"; customerAccount->ZipCode = "31909"; //Create payment option; PaymentOption^ paymentOption = customerAccount->CreatePaymentOption(); //code is optinal; if you specify the value, make sure the code is unique; paymentOption->Code = "cpp.po-2"; paymentOption->HolderName = "John Smith"; paymentOption->Number = "1000121279381"; //routing number; paymentOption->Accessory = "610000227"; paymentOption->Type = PaymentOptionTypes::Checking; paymentOption->Street1 = "233 12th Street"; paymentOption->City = "Columbus"; paymentOption->State = "CA"; paymentOption->ZipCode = "31909"; //Create payment plan; PaymentPlan^ paymentPlan = customerAccount->CreatePaymentPlan(); //code is optinal; if you specify the value, make sure the code is unique; paymentPlan->Code = "cpp.pp-2"; //all amounts are in cents; paymentPlan->Amount = 1000; //Item Codes must be setup in portal prior to being used; paymentPlan->ItemCode = "Membership"; paymentPlan->Type = PaymentPlanTypes::Perpetual; //Billing Cycle codes must be setup in portal prior to being used; paymentPlan->BillingCycleCode = "W01"; //Specify desired billing date; if nothing specified, next billing date of the selected cycle assumed. //paymentPlan.FirstBillingDate = ; paymentPlan->PaymentOption = paymentOption; //Create invoice for downpayment; RevenueTransaction^ revenueTransaction = customerAccount->CreateRevenueTransaction(); //code is optinal; if you specify the value, make sure the code is unique; revenueTransaction->Code = "cpp.rt-2"; //ll amounts are in cents; revenueTransaction->Amount = 5000; //Item Codes must be setup in portal prior to being used; revenueTransaction->ItemCode = "Membership"; //Type of transaction; revenueTransaction->AccountActivityType = AccountActivityTypes::Invoice; //Create payment for downpayment; AssetTransaction^ transaction = customerAccount->CreateAssetTransaction(); //code is optinal; if you specify the value, make sure the code is unique; transaction->Code = "cpp.at-2"; //all amounts are in cents; transaction->Amount = 5000; transaction->TransactionType = AssetTransactionTypes::Visa; //Credit card number to charge; transaction->AccountNumber = "4111111111111111"; //Credit card expiration date; transaction->Accessory = "1209"; //Type of transaction; transaction->AccountActivityType = AccountActivityTypes::Payment; //Add processing specific info (for better qualification rates; CaptureInfo^ captureInfo = transaction->CaptureInfo; captureInfo->HolderName = "John Smith"; captureInfo->City = "Columbus"; captureInfo->State = "CA"; captureInfo->Street = "233 12th Street"; captureInfo->ZipCode = "31909"; captureInfo->Phone = "2129856472"; captureInfo->Email = "test@yahoo.com"; captureInfo->Cvv2 = "999"; //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; Console::WriteLine(ex->Message); return 0; } //Get info from customer account; Console::WriteLine(customerAccount->Code); Console::WriteLine(customerAccount->FirstName); Console::WriteLine(customerAccount->LastName); Console::WriteLine(customerAccount->CreateDate); //Get info from payment option; Console::WriteLine(paymentOption->Code); Console::WriteLine(paymentOption->Accessory); Console::WriteLine(paymentOption->Number); Console::WriteLine(paymentOption->CreateDate); //Get info from payment plan; Console::WriteLine(paymentPlan->Code); Console::WriteLine(paymentPlan->FirstBillingDate); Console::WriteLine(paymentPlan->BillingCycleCode); Console::WriteLine(paymentPlan->CreateDate); //Get info from revenue transaction; Console::WriteLine(revenueTransaction->Code); Console::WriteLine(revenueTransaction->Amount); Console::WriteLine(revenueTransaction->AccountActivityType); Console::WriteLine(revenueTransaction->CreateDate); //Get info from asset transaction; Console::WriteLine(transaction->Code); Console::WriteLine(transaction->Accessory); Console::WriteLine(transaction->AccountNumber); Console::WriteLine(transaction->CreateDate); //Get info from capture info; Console::WriteLine(captureInfo->ReturnType); Console::WriteLine(captureInfo->ApprovalCode); Console::WriteLine(captureInfo->ReferenceNumber); //logout; session->Logout(); return 0; }