-
Notifications
You must be signed in to change notification settings - Fork 17
Home
This library provides developers with a simple set of bindings to the 2Checkout purchase routine, Instant Notification Service, Admin API, and Payment API.
To use, install the twocheckout
gem.
gem install twocheckout
Or add to your Gemfile.
gem "twocheckout"
##Sandbox Settings:
Sandbox API Setting: Twocheckout::API.credentials = { :sandbox => true }
Sandbox Checkout Setting: Twocheckout::Checkout.sandbox(true);
Example Usage:
Twocheckout::API.credentials = {
:seller_id => '1817037',
:private_key => '8CE03B2D-FE41-4C53-9156-52A8ED5A0FA3'
}
params = {
:merchantOrderId => '123',
:token => 'ZmYyMzMyZGMtZTY2NS00NDAxLTlhYTQtMTgwZWIyZTgwMzQx',
:currency => 'USD',
:total => '1.00',
:billingAddr => {
:name => 'Testing Tester',
:addrLine1 => '123 Test St',
:city => 'Columbus',
:state => 'OH',
:zipCode => '43123',
:country => 'USA',
:email => 'cchristenson@2co.com',
:phoneNumber => '555-555-5555'
}
}
begin
result = Twocheckout::Checkout.authorize(params)
rescue Twocheckout::TwocheckoutError => e
puts e.message
end
Example Response:
#{
"type"=>"AuthResponse",
"lineItems"=>
[{"options"=>[],
"price"=>"1.00",
"quantity"=>"1",
"recurrence"=>nil,
"startupFee"=>nil,
"productId"=>"",
"tangible"=>"N",
"name"=>"123",
"type"=>"product",
"description"=>"",
"duration"=>nil}],
"transactionId"=>"205180760223",
"billingAddr"=>
{"addrLine1"=>"123 Test St",
"addrLine2"=>nil,
"city"=>"Columbus",
"zipCode"=>"43123",
"phoneNumber"=>"555-555-5555",
"phoneExtension"=>nil,
"email"=>"cchristenson@2co.com",
"name"=>"Testing Tester",
"state"=>"OH",
"country"=>"USA"},
"shippingAddr"=>
{"addrLine1"=>nil,
"addrLine2"=>nil,
"city"=>nil,
"zipCode"=>nil,
"phoneNumber"=>nil,
"phoneExtension"=>nil,
"email"=>nil,
"name"=>nil,
"state"=>nil,
"country"=>nil},
"merchantOrderId"=>"123",
"orderNumber"=>"205180760214",
"recurrentInstallmentId"=>nil,
"responseMsg"=>"Successfully authorized the provided credit card",
"responseCode"=>"APPROVED",
"total"=>"1.00",
"currencyCode"=>"USD",
"errors"=>nil}
Example Usage:
Twocheckout::API.credentials = {
:username => 'APIuser1817037',
:password => 'APIpass1817037'
}
sale = Twocheckout::Sale.find(:sale_id => 4838212958)
sale.stop_recurring!
Example Response:
[
#{
"affiliate_vendor_id"=>nil,
"billing"=>#{
"amount"=>"0.01",
"bill_method"=>"paypal_int",
"billing_id"=>"4838213024",
"customer_amount"=>"0.01",
"customer_id"=>"4838212964",
"date_deposited"=>nil,
"date_end"=>nil,
"date_fail"=>"2012-10-30",
"date_next"=>"2012-10-30",
"date_pending"=>"2012-10-23",
"date_start"=>"2012-10-25",
"lineitem_id"=>"4838213015",
"recurring_status"=>"active",
"status"=>"bill",
"usd_amount"=>"0.01",
"vendor_amount"=>"0.01"
},
"commission"=>nil,
"commission_affiliate_vendor_id"=>nil,
"commission_flat_rate"=>nil,
"commission_percentage"=>nil,
"commission_type"=>nil,
"commission_usd_amount"=>nil,
"customer_amount"=>"0.01",
"flat_rate"=>nil,
"installment"=>"1",
"invoice_id"=>"4838212967",
"lc_affiliate_vendor_id"=>nil,
"lc_usd_amount"=>nil,
"lineitem_id"=>"4838213015",
"linked_id"=>nil,
"options"=>[
{
"customer_surcharge"=>"0.01",
"lineitem_id"=>"4838213015",
"lineitem_option_id"=>"4838213021",
"option_name"=>"0.5",
"option_value"=>"test1",
"usd_surcharge"=>"0.01",
"vendor_surcharge"=>"0.01"
}
],
"percentage"=>nil,
"product_description"=>"This is a test product!",
"product_duration"=>"Forever",
"product_handling"=>"0.00",
"product_id"=>"4774388564",
"product_is_cart"=>"0",
"product_name"=>"Example Product",
"product_price"=>"0.01",
"product_recurrence"=>"1 Week",
"product_startup_fee"=>nil,
"product_tangible"=>"0",
"sale_id"=>"4838212958",
"status"=>"bill",
"type"=>nil,
"usd_amount"=>"0.01",
"usd_commission"=>nil,
"vendor_amount"=>"0.01",
"vendor_product_id"=>"example123"
}
]
Example Usage:
require "sinatra"
get '/' do
@@form = Twocheckout::Checkout.submit({ 'sid' => '1817037', 'mode' => '2CO','li_0_name' => 'Example Product', 'li_0_price' => '1.00'})
@@form
end
Example Response:
<form id="2checkout" action="https://www.2checkout.com/checkout/spurchase" method="post">
<input type="hidden" name="sid" value="1817037" />
<input type="hidden" name="mode" value="2CO" />
<input type="hidden" name="li_0_name" value="Example Product" />
<input type="hidden" name="li_0_price" value="1.00" />
</form>
<script type="text/javascript">document.getElementById('2checkout').submit();</script>
Example Usage:
require "sinatra"
post '/' do
@@response = Twocheckout::ValidateResponse.purchase({:sid => 1817037, :secret => "tango", :order_number => params[:order_number], :total => params[:total], :key => params[:key]})
@@response.inspect
end
Example Response:
{
:code => "PASS",
:message => "Hash Matched"
}
Example Usage:
require "sinatra"
post '/' do
@@response = Twocheckout::ValidateResponse.notification({:sale_id => params[:sale_id], :vendor_id => 1817037, :invoice_id => params[:invoice_id], :secret => "tango", :md5_hash => params[:md5_hash]})
@@response.inspect
end
Example Response:
{
:code => "PASS",
:message => "Hash Matched"
}
Example Catch:
Exceptions are thrown by if an error has returned. It is best to catch these exceptions so that they can be gracefully handled in your application.
begin
sale = Twocheckout::Sale.find(:sale_id => 4786293822)
last_invoice = sale.invoices.last
last_lineitem = last_invoice.lineitems.last
last_lineitem.stop_recurring!
rescue Exception => e
puts e.message
end
Example Exception:
"Lineitem is not scheduled to recur."
Full documentation for each binding can be accessed from the sidebar.
Please feel free to contact 2Checkout directly for assistance with your integration.