Scenario 2: Visual C++.NET

From Intrannuity

Jump to: navigation, search

Download Source File

#include "stdafx.h"
 
using namespace System;
using namespace System::Collections::Generic;
using namespace iBilling::Client;
 
int Scenario2(array<System::String ^> ^args)
{
	//Set up clients' settings;
	Dictionary<String^, Object^>^ config = gcnew Dictionary<String^, Object^>();
	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 = <DateTime>;
	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;
}
Personal tools