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 = 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()