From Intrannuity
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;
}