# EZPaypal Paypal express checkout plugin. ## How to use it ###Non-recurring purchase ####Request for token # create cart and add items to it cart = EZPaypal::Cart::OneTimePurchaseCart.new() item = { "name" => "Item name", "item_code" => "Item code", "description" => "xxx, xxxxxx", "amount" => "3", "quantity" => "1" } cart.addItem(item) shipping = { "name" => "John Smith", "street" => "123 xx Rd", "city" => "xxxxx", "state" => "xx", "country" => "US", "zip" => "11234", "phone" => "123-456-7890" } cart.setupShippingInfo(shipping) summary = { "subtotal" => "3", "tax" => "0.5", "shipping" => "1", "handling" => "0", "shipping_discount" => "-1", "insurance" => "0", "total" => "3.5" } cart.setupSummary(summary) return_url = "http://127.0.0.1:3000/ec_return" cancel_url = "http://127.0.0.1:3000/ec_cancel" # send cart to request for token response_origin = EZPaypal::Request.SetupExpressCheckout(cart, return_url, cancel_url) response = EZPaypal::Response.new(response_origin) # get checkout url checkout_url = response.getCheckoutURL() ####Handle success purchase # verify query string d_token = params["token"] d_payerid = params["PayerID"] response = EZPaypal::Response.new(params) # confirm purchase confirm_purchase_origin = response.confirmPurchase() confirm_response = EZPaypal::Response.new(confirm_purchase_origin) if (confirm_response.success?) # handle success purchase ... transaction_id = confirm_response["PAYMENTINFO_0_TRANSACTIONID"] else # handle failed purchase ... end ###Recurring purchase ####Request for token # create cart and add item to it cart = EZPaypal::Cart::RecurringPurchaseCart.new() item = { "item_code" => "Item code", "unit_price" => "4", "quantity" => "1", "amount" => "4" } cart.setupAgreement(item) return_url = "http://127.0.0.1:3000/ec_return" cancel_url = "http://127.0.0.1:3000/ec_cancel" # send cart to request for token response_origin = EZPaypal::Request.SetupExpressCheckout(cart, return_url, cancel_url) response = EZPaypal::Response.new(response_origin) # get checkout url checkout_url = response.getCheckoutURL() ####Handle success purchase # verify query string d_token = params["token"] d_payerid = params["PayerID"] # get checkout details response = EZPaypal::Response.new(params) checkout_details_origin = EZPaypal::Request.GetCheckoutDetails(response["TOKEN"]) checkout_details = EZPaypal::Response.new(checkout_details_origin) # create and confirm recurring profile profile = EZPaypal::Cart::RecurringProfile.ConvertFromCheckoutDetails(checkout_details) confirm_response = EZPaypal::Response.new(EZPaypal::Request.CreateRecurringProfile(profile)) if (confirm_response.success?) # handle success purchase ... profile_id = confirm_response["PROFILEID"] else # handle failed purchase ... end ## Installation Add the following line to rails "Gemfile" gem "ez_paypal" then execute $ bundle install See [http://rubygems.org/gems/ez_paypal](http://rubygems.org/gems/ez_paypal "EZPaypal RubyGem Page") for more details ## Authors Tianyu Huang