Create a gist now

Instantly share code, notes, and snippets.

What would you like to do?
Example of creating a SalesOrder in NetSuite by creating a Stripe Order using http://SuiteSync.io/
# Michael Bianco <mike@suitesync.io>
require 'stripe'
Stripe.api_key = 'sk_test_123'
customer = Stripe::Customer.create(
:description => "Sample customer for NetSuite",
:email => "sample@example.com",
)
card_token = Stripe::Token.create(
:card => {
:number => 4242424242424242,
:exp_month => 8,
:exp_year => (Date.today>>24).year,
:cvc => "314"
}
)
customer.sources.create(card: card_token.id)
# ensures that a new product and sku is created
randomization_token = Time.now.to_i
product = Stripe::Product.create(
:name => 'Your Product',
:description => 'A description',
:id => "your_product_id_#{randomization_token}",
# `shippable = true` creates a InventoryItem instead of a NonInventoryItem
:shippable => false
)
sku = Stripe::SKU.create(
:id => "your_product_sku_#{randomization_token}",
:product => product.id,
:price => 15_00,
:currency => 'usd',
:inventory => {
'type' => 'infinite'
}
)
order = Stripe::Order.create(
:currency => 'usd',
:items => [
{
:type => 'sku',
:parent => sku.id
}
],
:shipping => {
:name => 'Jenny Rosen',
:address => {
:line1 => '1234 Main street',
:line2 => 'Top Floor',
:city => 'Anytown',
:country => 'US',
:postal_code => '123456'
}
},
:customer => customer.id
)
order.pay(customer: customer)
# retrieve the internalId of the created CustomerPayment
# NOTE this will only work if your integration account is processing live translations
loop do
order.refresh
if internal_id = order.metadata['netsuite_sales_order_id']
puts "SalesOrder Internal ID: #{internal_id}"
exit(0)
end
puts "Waiting for Order to translate to NetSuite..."
sleep(1)
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment