Scenario 1: Groovy

From Intrannuity

Jump to: navigation, search

Download Source File

import ibilling.client.*
 
class Scenario1 {
 
 static void main(args) {
			//Set up clients' settings
	def config  = [:]
	config[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[SessionConnection.PAYMENT_OPTION_VERIFICATION_AMOUNT] = 99
	//Set the value to true to view XML exchanged between your client and the server
	config[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[SessionConnection.CLIENT_EMAIL_DOMAIN] = "hotmail.com"
	//IP Address of the user's machine (user on behalf of whom the transaction is processed)
	config[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[SessionConnection.CLIENT_EMAIL_ENCODED] = "8d89c3087cc6cb98793ab7c0f5658c56"
	//Full user name of the user as MD5 (user on behalf of whom the transaction is processed)
	config[SessionConnection.CLIENT_USER_NAME_ENCODED] = "435e0648d634175c46bd40ac366545a8"
	//Password of the user as MD5 (user on behalf of whom the transaction is processed)
	config[SessionConnection.CLIENT_PASSWORD_ENCODED] = "5f4dcc3b5aa765d61d8327deb882cf99"
	//Login
	def session  = Session.login(2000, "welcome", config)
	//Create customer account
	def customerAccount  = session.createCustomerAccount()
	//code is optinal; if you specify the value, make sure the code is unique
	customerAccount.code = "groovy.ca-1"
	customerAccount.merchantAccountCode = 2001
	customerAccount.firstName = "John"
	customerAccount.lastName = "Smith"
	customerAccount.type = CustomerAccountType.Male
	customerAccount.homePhone = "2129856472"
	customerAccount.email = "test@yahoo.com"
	customerAccount.street1 = "233 12th Street"
	customerAccount.city = "Honolulu"
	customerAccount.state = "CA"
	customerAccount.zipCode = "31904"
	//Create payment option
	def paymentOption  = customerAccount.createPaymentOption()
	//code is optinal; if you specify the value, make sure the code is unique
	paymentOption.code = "groovy.po-1"
	paymentOption.holderName = "John Smith"
	paymentOption.number = "4111111111111111"
	//expiration date
	paymentOption.accessory = "1209"
	paymentOption.street1 = "233 12th Street"
	paymentOption.city = "Honolulu"
	paymentOption.state = "CA"
	paymentOption.zipCode = "31904"
	//Create payment plan
	def paymentPlan  = customerAccount.createPaymentPlan()
	//code is optinal; if you specify the value, make sure the code is unique
	paymentPlan.code = "groovy.pp-1"
	//all amounts are in cents
	paymentPlan.amount = 5000
	//Item Codes must be setup in portal prior to being used
	paymentPlan.itemCode = "Membership"
	paymentPlan.type = PaymentPlanType.Fixed
	//Billing Cycle codes must be setup in portal prior to being used
	paymentPlan.billingCycleCode = "M03"
	//Specify desired billing date; if nothing specified, next billing date of the selected cycle assumed.
	//paymentPlan.firstBillingDate = date
	paymentPlan.add(0, 12, false)
	// Create invoice for downpayment
	def revenueTransaction  = customerAccount.createRevenueTransaction()
	//code is optinal; if you specify the value, make sure the code is unique
	revenueTransaction.code = "groovy.rt-1"
	//all amounts are in cents
	revenueTransaction.amount = 10000
	//Item Codes must be setup in portal prior to being used
	revenueTransaction.itemCode = "Membership"
	//Type of transaction
	revenueTransaction.accountActivityType = AccountActivityType.Invoice
	//Create payment for downpayment
	def transaction  = customerAccount.createAssetTransaction()
	//code is optinal; if you specify the value, make sure the code is unique
	transaction.code = "groovy.at-1"
	//all amounts are in cents
	transaction.amount = 10000
	transaction.transactionType = AssetTransactionType.Cash
	transaction.accountActivityType = 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
		println(ex.message)
		return ;
	}
	//Get info from customer account
	println(customerAccount.code)
	println(customerAccount.firstName)
	println(customerAccount.lastName)
	//Get info from payment option
	println(paymentOption.code)
	println(paymentOption.accessory)
	println(paymentOption.number)
	//Get info from payment plan
	println(paymentPlan.code)
	println(paymentPlan.firstBillingDate)
	println(paymentPlan.billingCycleCode)
	//Get info from revenue transaction
	println(revenueTransaction.code)
	println(revenueTransaction.amount)
	println(revenueTransaction.accountActivityType)
	//Get info from asset transaction
	println(transaction.code)
	println(transaction.amount)
	println(transaction.accountActivityType)
	//logout
	session.logout()
 
	}
 
}
Personal tools