From Intrannuity
Download Source File
require "lib/iBilling"
#Set up clients' settings
config = Map.new
config.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.code = "rb.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
paymentOption = customerAccount.createPaymentOption()
#code is optinal; if you specify the value, make sure the code is unique
paymentOption.code = "rb.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
paymentPlan = customerAccount.createPaymentPlan()
#code is optinal; if you specify the value, make sure the code is unique
paymentPlan.code = "rb.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
revenueTransaction = customerAccount.createRevenueTransaction()
#code is optinal; if you specify the value, make sure the code is unique
revenueTransaction.code = "rb.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
transaction = customerAccount.createAssetTransaction()
#code is optinal; if you specify the value, make sure the code is unique
transaction.code = "rb.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
begin
session.synchronize()
rescue Exception => ex
#Be sure to properly handle exception, this is just a sample solution
puts(ex.message)
return
end
#Get info from customer account
puts(customerAccount.code)
puts(customerAccount.firstName)
puts(customerAccount.lastName)
#Get info from payment option
puts(paymentOption.code)
puts(paymentOption.accessory)
puts(paymentOption.number)
#Get info from payment plan
puts(paymentPlan.code)
puts(paymentPlan.firstBillingDate)
puts(paymentPlan.billingCycleCode)
#Get info from revenue transaction
puts(revenueTransaction.code)
puts(revenueTransaction.amount)
puts(revenueTransaction.accountActivityType)
#Get info from asset transaction
puts(transaction.code)
puts(transaction.amount)
puts(transaction.accountActivityType)
#logout
session.logout()
Download Source File