22
Oct

Using Paypal with Rails

posted by vdimos 265 comments rails

For our latest joint venture we need to implement some kind of payment gateway.
The requirements were simple:

  • We need it secure
  • We need it simple
  • We need it now

The project was a complete overhaul of a job posting site : www.freshwebjobs.com

The talented folks over at Extendio had done a very nice job reskinning the site, and they wanted us to update the codebase, add RoR hype ,some new hooks and features.

The first thing that you think of when doing RoR and e-Commerce is Shopify.
Shopify was created by jadedPixel. They extracted their accumulated e-shopping wisdom and gave the community Active Merchant. AM does a great job in abstracting payment gateway complexity and allowing you to use and switch different payment gateways.
Our first choice for a payment gateway was AuthorizeNet.
The whole RoR community seems to be using it, and their rates were quite acceptable.

The only problem is they work only with US-based companies.
Apparently most of the payment gateways supported by AM do.

After some research we stumbled upon “PayPal Website Payments Standard” (PPWPS). It is the simplest form of payment services offered by Paypal, allowing you to accept credit card and paypal payments.

Ok here is how it works:
The customer lands on your payment page. You can set up encrypted buttons with different amounts. The customer clicks on a button and is redirected to a paypal page where he can use his credit card or paypal login to issue the payment. After doing so he is redirected to your site (or wherever you specify) while an asynchronous notification system lets you know that you have received a payment.

Getting started

In order to get started with PPWPS we need to set up an Sandbox account.
Paypal is providing developers with a virtual sandbox where you can make transactions without real money changing hands.
Before you can use the sandbox you need to create a developer account and log into it.

After you created your developer account make sure you create two test accounts for the sandbox.
One should be a business account the other a simple client account.

When done try to log in at www.sandbox.paypal.com.

Ok we now have our developer account and two accounts for the sandbox.

Paypal requires you to be logged into your developer account when trying to access the sandbox.

As a tip log with one of your browsertabs into your developer account and since the session timeouts pretty quick use autoreload, to reload the index page every 5 minutes.

Initial Setup

First thing we need to make sure is our application is playing in test mode. Test mode means that instead of using the original paypal infrastructure all request are made to the sandbox.

In your config/environment.rb file add the following lines:

# Ensure the gateway is in test mode
 ActiveMerchant::Billing::Base.gateway_mode = :test
 ActiveMerchant::Billing::Base.integration_mode = :test
 ActiveMerchant::Billing::PaypalGateway.pem_file =
                 File.read(File.dirname(__FILE__) + '/../paypal/paypal_cert.pem')

The above code will make sure AM is in test mode. Also it will include the paypal certificate.

Certificates

To get the paypal certificate and setup your own, we will need to log into the sandbox with your business test account.

The paypal sandbox can be somehow slow. Patience young jedi, patience…

When logged go to your “Profile” – “Encrypted Payment Settings”. Here download the paypal public certificate and store it in a folder in your application. I created a paypal folder in the root folder of the application. If you use something else make sure you update the references in environment.rb and crypto42.rb later on.

We will need to create some certificates ourselfes. If you are on a linux box do something like this:

 penssl genrsa -out my-prvkey.pem 1024

then

openssl req -new -key my-prvkey.pem -x509 -days 365 -out my-pubcert.pem

In Ubuntu running the above without sudo throws some errors for me about beeing unable to use the random number generator. If you are not using Linux, consider using it :) .

The above should leave you with two files. my-prvkey.pem and my-pubcert.pem. Move both files into the paypal folder with the paypal public certificate.

Now return to your sandbox account and in “Your Public Certificates” upload your public certificate.
After you added it you will see it in the listing with a Cert ID. Keep this Cert ID for later use.

Lib, controller and the view

Lets get down and write some code.

Here is a snippet I got from the internet and changed it a bit to fit my needs:

module Crypto42
  class Button
    def initialize(data)
      my_cert_file = Dir.getwd + "/paypal/my-pubcert.pem"
      my_key_file = Dir.getwd + "/paypal/my-prvkey.pem"
      paypal_cert_file = Dir.getwd + "/paypal/paypal_cert.pem"

      IO.popen("/usr/bin/openssl smime -sign -signer #{my_cert_file} -inkey #{my_key_file} -outform der -nodetach -binary | /usr/bin/openssl smime -encrypt -des3 -binary -outform pem #{paypal_cert_file}", 'r+') do |pipe|
        data.each { |x,y| pipe << "#{x}=#{y}\n" }
        pipe.close_write
        @data = pipe.read
      end
    end

    def self.from_hash(hs)
      self.new hs
    end

    def get_encrypted_text
      return @data
    end

  end #end button
end #end module

Simple save the above piece of code into a file in your applications lib directory.
It basically calls the system openssl (make sure you have it installed) function to encrypt some data we pass in as argument.

We have following scenario for our site. The customer gets at some point to a page where we want to allow him to choose and buy between N distinguish options.
These options will be buttons linking to Paypal. Upon clicking them the customer will be able to use Paypal to do the purchase.

Paypal lets you create buttons like this through their webpage, but these buttons are fixed and cannot be used to carry extra variables like maybe an invoice number.

We want to create such buttons ourselfes everytime a user comes to our payment site.

Here is how our users controller would look like:

class UsersController < ApplicationController

  include ActiveMerchant::Billing::Integrations
  require 'crypto42'
  require 'money'

... Different user functions...

#place order is for a specific job
  def place_order

    @job = Job.find(params[:job_id])
    fetch_decrypted(@job)

    if @logged_user.credits > 0
      render(:action => "confirm_order")
      return
    else
      #place order will have our paypal buttons
      render(:action => "place_order")
      return
    end

  rescue ActiveRecord::RecordNotFound
    flash[:alert] = "Buying credits for fun?"
    redirect_to :action => "profile"
  end

...

private
  def fetch_decrypted(job = nil)

    # cert_id is the certificate if we see in paypal when we upload our own certificates
    # cmd _xclick need for buttons
    # item name is what the user will see at the paypal page
    # custom and invoice are passthrough vars which we will get back with the asunchronous
    # notification
    # no_note and no_shipping means the client want see these extra fields on the paypal payment
    # page
    # return is the url the user will be redirected to by paypal when the transaction is completed.
    decrypted = {
      "cert_id" => "cert id from your paypal business account",
      "cmd" => "_xclick",
      "business" => "name@yourpaypal.com",
      "item_name" => "FWJ - 1 Credit",
      "item_number" => "1",
      "custom" =>"something to pass to IPN",
      "amount" => "75",
      "currency_code" => "USD",
      "country" => "US",
      "no_note" => "1",
      "no_shipping" => "1",
    }

    if job
      decrypted.merge!("invoice" => "Another passthrough var", "return" => "http://www.freshwebjobs.com/users/done?job_id=#{job.id}")
    else
      decrypted.merge!("return" => "http://www.freshwebjobs.com/users/done")
    end

    @encrypted_basic = Crypto42::Button.from_hash(decrypted).get_encrypted_text


     @action_url = ENV['RAILS_ENV'] == "production" ? "https://www.paypal.com/uk/cgi-bin/webscr" : "https://www.sandbox.paypal.com/uk/cgi-bin/webscr"
end

Now we have our encrypted button code so we can use it like this in the view:

<form action="<%= @action_url %>" method="post">
          <input type="hidden" name="cmd" value="_s-xclick" />
          <input type="hidden" name="encrypted" value="<%= @encrypted_basic %>" />
          <input type="image" src="/images/btn_buynow_SM.jpg" name="submit" alt="3 credits">
</form>

@action_url is set by us depending on the mode.

IPN – Instant (?) Payment Notification

With all the above done, you should have a working payment site! Actually you could stop here and track the transactions via paypal. That would be rather weird though since the application would have no kind of automated feedback about the transactions.
That is where IPN, Paypals’ automated asynchronous event notification system, comes into play.
To set it up we need to enter the sandbox business account again, and go to “Profile” → “Instant Payment Notification Preferences”. Turn it on and set the URL to a URL of you application we are going to use to handle IPNs.

Update: As Mathias mentions in the comments, the IPN URL can be passed as a separate button parameter to Paypal instead of hardcoding it as mentioned above

Here is the code fragment to handle the IPNs, pretty much as it is in the AM source code:

  def ipn
    # Create a notify object we must
    notify = Paypal::Notification.new(request.raw_post)

    #we must make sure this transaction id is not allready completed
    if !Trans.count("*", :conditions => ["paypal_transaction_id = ?", notify.transaction_id]).zero?
       # do some logging here...
    end


    if notify.acknowledge
      begin
        if notify.complete?
           #transaction complete.. add your business logic here
        else
           #Reason to be suspicious
        end

      rescue => e
        #Houston we have a bug
      ensure
        #make sure we logged everything we must
      end
    else #transaction was not acknowledged
      # another reason to be suspicious
    end

    render :nothing => true
  end

Everytime a user pays us, Paypal will issue a request to the IPN url appending a bunch of usefull information. AM is used to acknowledge the request (to make sure noone is spoofing them) and if everything is ok we can add the credits to the user.

Moving into production mode

In order to move our site into production mode we must not forget following things:

  • Change :test to :production in environment.rb
  • Download the real Paypal certificate from your real business account.
  • Upload your own certificates to our account.
  • Change the values for Cert_id, business_name, and returnURL in your button code in the controller
  • Change the IPN URL in your business account profile.
  • Additionaly you can check the allow only encrypted payments in your profile, and check the other settings as well.

To do some basic testing in the real world you can temporarily change the charged amount, make a purchase then issue a refund through paypal.

Ok I think I have covered the basics. Next post will be about testing IPN with mock objects.

Comments (265)

Pin Mathias said on Oct 26, 10:31 AM:

There's also a small-ish Paypal gem which only includes four classes but works just as well, including sandbox mode.

As a side note: You don't need to configure a specific IPN-URL in your Paypal profile. It does need to have one configured, but you can include it in the commands you send to Paypal (parameter is notify_url). It will be stored for each transaction made, and will be used for each subsequent IPN notification (if there are any more) for this transaction. This makes testing a little bit easier.

Pin vdimos said on Oct 26, 03:09 PM:

Thanks for the tip Mathias. I updated the post.

Pin Paul said on Nov 15, 05:04 PM:

I've used your tutorial to get paypal ipn integration successfully working, thank you for sharing this information.

However, when the user is returned after the transaction they are logged out of my site. This is not happening every time though.

Do you know why this might be happening? I appreciate this is probably a paypal issue, but I just wondered if you might have come across it before or be able to point me in the right direction.

Pin vdimos said on Nov 20, 12:00 PM:

Hey Paul,
Glad you could use the information. We didn't have any issues like the ones you mention, but my first guess would be to check you are redirected to the same domain, and check the cookie with the session_id to see if it is correct.
Best of Luck

Pin alexey said on Jan 10, 11:30 AM:

Great tutorial Vdimos !

i was suggest to add:
./script/plugin install http://activemerchant.googlecode.com/svn/trunk/active_merchant

for some reason installing active_merchant *gem* isnt worked (require "activemerchant" works but ActiveMerchant::Billing::Base.gateway_mode = :test doesnt)

Only installing plugin is solved problem ;(

Pin vdimos said on Jan 10, 04:36 PM:

Hey Alexey! Hope the tutorial was of some help. In fact to install the activemerchant gem the syntax is sudo gem install activemerchant. Best of luck, cheers Vasilis..

Pin anton said on Jan 11, 05:46 PM:

The crypto42.rb brings in the line: @data = pipe.read
the message: Loading 'screen' into random state -Loading 'screen' into random state - done
unable to write 'random state'
I have Vista running. Has anybody an idea how to fix the problem?

Pin vdimos said on Jan 14, 04:37 PM:

Hey anton,
I am pretty sure it is the syscall to the openssl binary, since it uses the random number generator of the underlying OS (i think). Since I don't have Vista, I can't really say much more, except to try the syscall from the command line yourself. Please let us know if you worked the issue out, so I can update the post. Best of Luck, Vasilis

Pin GregFu said on Jan 15, 06:54 AM:

@alexy

make sure you:

require "active_merchant" # not the underscore

Pin Geoff said on Feb 05, 11:27 AM:

Thanks for the tutorial! It was very useful. I did run into one problem. When clicking on my button I would get the following error from PayPal:

"We were unable to decrypt the certificate id."

If you see this problem, it's likely one of 2 things:

1 - You got the certs between the sandbox and the live site mixed up somehow. (this didn't happen to me, but while I was looking for a solution I found that this was often given as a reason)

2 - There are newline characters in the encrypted string. My form (for some unkown reason) was getting formed like so:




To fix it I just added the following to my controller:
@encrypted_basic = @encrypted_basic.gsub("\n","")

Pin Geoff said on Feb 05, 01:57 PM:

My last post isn't entirely correct :-S
While remove the newline characters from the encrypted field was required to get rid of the "decrypt the certificate id" issue, I began to get "email address for the business is not present in the encrypted blob" which means that something is going wrong with the encryption.

All the help seems to point at (again) 1 of 2 things:
- Wrong keys/certificates (I've check and check again)
- Some problem with encryption.

My testing has led nowhere so far, though I think this and the previous spacing thing are related. I've tried both on my windows machine (running local) and a test server running linux. :-( I'll post here if I figure it out.

Pin Prateek said on Apr 21, 07:48 PM:

Thanks for the writeup. This was very very useful

Pin John said on May 01, 11:18 PM:

Useful tutorial. And is that vim? Nice color scheme. What is it?

Pin Zan said on May 03, 06:24 AM:

Thanks for the tutorial! I was puzzled over the encryption part til I came here =)

Pin JDJ said on Jun 02, 05:16 AM:

I'm still stuck on the "email address for the business is not present in the encrypted blob" error. What's weird is that everything works fine on my dev machine, but now I'm getting that error on the production server. Dev machine is OS X 10.5, production server is Ubuntu 6.06 (set up via Deprec). I think I've toggled everything needed for the production environment, but no love. Anyone have any ideas?

Pin Shankar said on Jun 05, 02:28 PM:

Thanks for this.

Pin Matt Colyer said on Jun 08, 11:53 PM:

In order to get around the certificate decode errors I had to strip all newlines out of the encrypted data.

If you take line 63:
@encrypted_basic = Crypto42::Button.from_hash(decrypted).get_encrypted_text

And add a gsub to the end
.get_encrypted_text.gsub("\n","")

It should work.

Pin Paul said on Jul 10, 05:12 PM:

I can confirm that OpenSSL 0.9.7a doesn't suffer from the encryption issues.

Pin JJ said on Nov 10, 03:54 PM:

I have empty @encrypted_basic, any ideas?

Pin MikeL said on Nov 14, 12:33 AM:

I was getting an InvalidAuthenticityToken error so I turned it off by added the following:

protect_from_forgery :except => [:ipn, :done ]

If there is a better work around for this issue?

Pin tommy said on Oct 27, 09:14 PM:

i also getting an InvalidAuthenticityToken error anybody can help me?

Pin insurance said on Nov 05, 06:23 AM:

Thanks for the tutorial! I was puzzled over the encryption part til I came here =)

Pin hot ugg boots said on Nov 19, 04:26 AM:

Mrs Brown went to visit one hot ugg sale of her friend and carried a small box with holes punched in the top." What's in your box?" Classic Cardy Ugg Boots asked the friend. "A cat," answered Mrs Brown. "You see I've been dreaming about mice at night and I'm so scared! This cat is to catch them." "But the mice are only Classic Short Ugg Boots imaginary," said the friend."So is the cat," whispered Mrs Brown.

Pin car insurance comparsion said on Dec 04, 06:36 AM:

Thanks for the tutorial! Thanks for the tips.

Pin mania virtual said on Dec 04, 07:23 PM:

Excellent article, thanks for sharing it.

Pin property in calabria said on Dec 06, 06:09 AM:

this is what I need, I am confused how to install it. codenya very long time. fortunately I found this website. thank you for the information how to install, very helpful at all.

Pin Technology said on Dec 06, 07:03 AM:

programming language is very much at all. I do not understand at all. thanks to this tutorial is very useful, thank you for sharing this tutorial. I want to use Paypal with Rails.

Pin Limousine NY said on Dec 07, 04:58 PM:

These kind of articles are always attractive and I am happy to find so many good point about using the Paypal with Rails, the coding is really very helpful. Thanks for sharing.

Pin long term treatment centers said on Dec 08, 09:08 AM:

I am just new to your blog and just spent about 1 hour and 30 minutes lurking and reading. I think I will frequent your blog from now on after going through some of your posts. I will definitely learn a lot from them.
Regards - Gerry

Pin Wilbert said on Dec 09, 07:57 PM:

Security is very important especially when dealing with e commerce. This is great to know about how some people are working in this field.

Pin vijay said on Dec 11, 09:13 AM:

The PayPal Ruby on Rails SDK eases the process of integrating PayPal's financial services into your application by providing a small footprint of three files: caller.rb, profile.rb, and utils.rb. The packages comes with web samples written for Ruby on Rails that illustrate how to use PayPal NVP Web Services API, including examples for Direct Credit Card Payment, Express Checkout, TransactionSearch, Refund, Void, and Capture.editorial articles

Pin Best Dating Guide said on Dec 11, 04:57 PM:

Great tutorial! Paypal is working on my country now and I'll just try it.

Pin grow taller 4 idiots said on Dec 11, 09:40 PM:

I have thought about this kind of approach, but never really taken action with the paypal system, but a nice overview, easy to follow etc. Will bookmark for future use, thanks for the information, new skills learning always appreciated !

John Vanton - Height Expert

Pin Baju said on Dec 16, 04:48 PM:

I've used your tutorial to get paypal ipn integration successfully working, thank you for sharing this information.

Pin thai silk said on Dec 17, 06:11 AM:

Stunning stuff..I was on the lookout for this for many days now. paypal already.

Pin اخبار مصر said on Dec 21, 03:27 PM:

Thank you for a very enlightening and informative post, it seems a shame that certain types use these posts for link building campaigns, and neglect to read....

Pin All About Photography said on Dec 25, 04:31 AM:

thanks for this article :) very interesting

Pin Beauty Secret said on Dec 25, 04:32 AM:

thanks for this article :) very interesting :)

Pin Fashion Magazine said on Dec 25, 05:22 AM:

like your article :) thanks

Pin memory power said on Dec 26, 12:05 PM:

this is one of the interesting posts i have read this month.cheers

Pin maca andina said on Dec 28, 01:33 AM:

Interesting article, i enjoy reading your blog
thanks

Pin membuat blog said on Dec 30, 02:15 AM:

This is a really old post. I saw the posting date after I read it..

Pin lower ab workouts said on Dec 30, 05:53 PM:

This article definitely will help a lot! Thank you very much!!

Pin nada said on Jan 02, 08:13 PM:

its a cool post
thanks for sharing

cheers
http://telecomandinternet.com

Pin resume writers said on Jan 03, 04:20 PM:

Thanks for this very enlightening article. Paypal is the best!

Pin nanuni kokoritu said on Jan 04, 02:35 PM:

Excelent blog,... nice post! Thanks

Pin Michael said on Jan 04, 04:38 PM:

I only use PayPal for my e-commerce sites. Maybe I'm just lazy, but it is so easy!

Pin freight forwarders USA said on Jan 06, 04:23 PM:

Paypal is so easy to use, I can't say enough good things about them, personally. Thanks for the post!

Pin farmville cheats said on Jan 08, 12:13 AM:

Thanks, this is really helpful. I'm pretty up to speed with Rails (it's so awesome!) but integrating PayPal has been a bit of a challenge.

Pin Shelton Smith said on Jan 08, 01:49 PM:

Good post….thanks for sharing.. very useful for me i will bookmark this for my future needed. thanks for a great source.

Thanks
Web development company india

Pin all natural candle said on Jan 08, 08:07 PM:

I use PayPal daily for my business and this is something that is very important to me. Thanks for talking about this issue mate.

Pin dell repair said on Jan 08, 08:10 PM:

Interesting post and I really like your take on the issue. I now have a clear idea on what this matter is all about. Security is indeed important for PayPal. Thank you so much.

Pin Dating Guide said on Jan 11, 01:34 AM:

Nice tip! Made me understand the process much better! Thank you.

Pin Quadrant vans said on Jan 11, 12:49 PM:

Would have thought Paypal would have made integration as simple as possible to encourage more people to use the payment gateway.

Pin casino said on Jan 11, 04:19 PM:

great information and thanks

Pin Steve said on Jan 11, 06:02 PM:

Great post. Really useful. Thanks.

Pin Gary said on Jan 12, 03:46 PM:

Hello,

I have implemented WPSI with PayPal.
It is working correctly, but when I pass the 'notify_url' for IPN, it gaves me,

(ActionController::InvalidAuthenticityToken) Error.

I am facing problem to pass the 'notify_url' with this decrypted values. Is there any way to pass it ?

Warm Regards,
Gary

Pin Baiju said on Jan 13, 09:33 AM:

Hello,

Good post.
I am also facing the same problem as Steve is facing.

I have setup the IPN in PayPal sandbox business account as 'http://192.168.1.150:3000/payments/ipn' but it is not sending data to my application.

It is showing FAILED in IPN History.

Any idea ?

Thank you,
Baiju

Pin New Gadgets said on Jan 17, 09:00 AM:

I'm need this script. I want to try to use it. Paypal is Great, I am very impressed with the performance of Paypal. Thank you for sharing knowledge.

Pin http://www.guiaprudenteonline.com.br/ said on Jan 19, 02:57 PM:

For me paypal is the best

Pin inearkopfhoerer said on Jan 19, 10:01 PM:

Yeah Paypal is quite usefull. But i find it even more impressive that people are constantly working to improve this genius payment system.

Thank your for the article.

Pin العاب said on Jan 27, 04:21 PM:

Thank you for your topic
The subject of bitter, sweet, beautiful, moon
Accept traffic
Gisele thanks from me to you
Mra thanks
To the meeting ..

Pin supra shoes said on Feb 08, 09:16 AM:

Thanks for sharing your good blog with us!

Pin دردشة said on Feb 10, 07:31 PM:

Thanks for sharing your good blog with us!

Pin fotografia ślubna katowice said on Feb 14, 06:18 PM:

Thanks for inspression. Extra stuff here.

Pin fotografia ślubna Bielsko said on Feb 14, 06:18 PM:

I agree with you i this case. Thanks

Pin Oriya Matrimony said on Feb 15, 08:16 AM:

Nice Articles, Thank you for sharing with us

Pin Bisnis Sampingan said on Feb 18, 03:53 PM:

Thanks for the information. This is useful for me since I'm thinking of creating an e-commerce web site.

Pin Sport said on Feb 19, 04:55 PM:

currently used paypal a lot if people. I want to try to use it to make use paypal. I will try and practice this tutorial, this is very useful. thank you for sharing.

Pin world of warcraft cataclysm said on Feb 19, 07:10 PM:

I thought Paypal is the best option for payment get way. It's very easy to integrate and activate

world of warcraft cataclysm

Pin منتديات said on Feb 23, 11:45 PM:

Nice Articles, Thank you for sharing with us

Pin car wraps said on Feb 27, 01:58 PM:

Thanks for the tip!!

Pin cheap florida vacations said on Feb 27, 02:00 PM:

Pay pal sucks, they rip people of all the time.

Pin fotograf slubny said on Mar 03, 10:24 PM:

i love this great place!

Pin psycholog online said on Mar 03, 10:24 PM:

cool place isnt it?

Pin Blog Comment Demon said on Mar 04, 02:17 PM:

Paypal really plays a major role all over the internet. Your post really helps a lot. I will check it back to read the tutorial carefully and try if this will work out fine. :)
Thanks!

Pin Unterwaesche Online Shop said on Mar 07, 12:24 PM:

I must admit that this post really interesting, thanks for the writing!

Pin Youtube to MP4 Converter said on Mar 10, 05:25 AM:

Excellent article, thanks for sharing it.

Pin Paul said on Mar 11, 01:51 AM:

Problem with email address for the business is not present in the encrypted blob. i have been spent more than 2 days, still can't find a solution. Anyonehwo can help me...
1. Log on the linux box and create a private key and my public certificate
private key
openssl genrsa -out app_key.pem 1024

My Public Certificate
openssl req -new -key app_key.pem -x509 -days 365 -out app_cert.pem

2. Upload my public certificate to Paypal sandbox and get the CERT_ID

3. Download Paypal public certificate: paypal_cert.pem

Now I have 3 files under the certs directory
• app_cert.pem
• app_key.pem
• paypal_cert.pem

In my controller, it calls the encrypt function

values = {
:business => "help.s_1260152087_biz@gmail.com",
:cmd => "_cart",
:upload => 1,
:currency_code => "AUD",
:handling_cart => @order_log.postage,
:return => return_paypal_url,
:notify_url => notify_return_url,
:cert_id => "STVF85MBT8XWS"
}
counter = 0
@orders = Order.find(:all,:conditions => { :order_log_id => order_log_id.to_i })
@orders.each do | order |
counter = counter + 1
RAILS_DEFAULT_LOGGER.info "item name[" + order.item_name + " |price[" + order.price.to_s + "]"
values.merge!({
"item_number_#{counter}" => counter,
"item_name_#{counter}" => order.item_name,
"amount_#{counter}" => order.price,
"quantity_#{counter}" => order.quantity
})
end
encrypted_string = encrypt_for_paypal(values.to_query)

===
class ShippingDetail < ActiveRecord::Base
PAYPAL_CERT_PEM = File.read("#{Rails.root}/certs/paypal_cert.pem")
APP_CERT_PEM = File.read("#{Rails.root}/certs/app_cert.pem")
APP_KEY_PEM = File.read("#{Rails.root}/certs/app_key.pem")

def encrypt_for_paypal(values)
signed = OpenSSL::PKCS7::sign(OpenSSL::X509::Certificate.new(APP_CERT_PEM), OpenSSL::PKey::RSA.new(APP_KEY_PEM, ''), values.map { |k, v| "#{k}=#{v}" }.join("\n"), [], OpenSSL::PKCS7::BINARY)
OpenSSL::PKCS7::encrypt([OpenSSL::X509::Certificate.new(PAYPAL_CERT_PEM)], signed.to_der, OpenSSL::Cipher::Cipher::new("DES3"), OpenSSL::PKCS7::BINARY).to_s.gsub("\n", "")
end

end
===

Web Page = The value of the encrypted field is encrypted.

==
But the Paypal returns error "Email address for the business is not presented in the encrypted blob"

Please help me to resolve this proble.. Because of this problem, we cannot launch our web site.

Pin New Movie said on Mar 22, 08:59 AM:

almost the entire world using Paypal. I am also paypal users. This information is very useful. I want to try this. thanks for sharing information.

Pin escorts sydney said on Mar 22, 03:23 PM:

I've used your tutorial to get paypal ipn integration successfully working

Pin effective cheap hosting said on Mar 22, 09:25 PM:

Paypal really plays a major role all over the internet

Pin Flat back Rhinestones said on Mar 24, 01:12 AM:

Is it possible to use the ipn to get the customers purchasing details in the database, for printing invoices.

Pin Top Grade Acai said on Mar 29, 03:32 PM:

people are constantly working to improve this genius payment system

Pin Finance Blog said on Apr 08, 03:52 PM:

Nice information about using payment gateway.

Pin compound interest formula said on Apr 09, 12:43 PM:

Your article named: "using Paypal with Rails" is good and interesting for my research. I am impressed by the information you posted here. Well,indeed you assisted me about something on my site. Thank you for soon article in the future.

Pin construction games said on Apr 09, 12:47 PM:

"Every time a user pays us, Paypal will issue a request to the IPN url appending a bunch of useful information. AM is used to acknowledge the request (to make sure noon is spoofing them) and if everything is ok we can add the credits to the user", as you said that, I think it is not easy to use this way but I am hoping to get more introduction in next posts from you.thanks :)

Pin mp3 dinle said on Apr 10, 04:39 PM:

you are good coder :)

Pin Sole F63 Treadmill said on Apr 11, 06:53 PM:

Great information. Thanks

Pin Dental jobs said on Apr 12, 11:14 AM:

This is a really old post. I saw the posting date after I read it..

Pin Dental jobs said on Apr 12, 11:18 AM:

Your article named: "using Paypal with Rails" is good and interesting for my research. I am impressed by the information you posted here. Well,indeed you assisted me about something on my site. Thank you for soon article in the future.

Pin aion cheat said on Apr 14, 10:28 AM:

Great information. Thanks

Pin Biggie Smalls Hypnotize said on Apr 14, 10:25 PM:

i was quite happy after reading some of your blog posts. good luck.

Pin Biggie Smalls Hypnotize said on Apr 14, 10:26 PM:

i was quite happy after reading some of your blog posts. good luck.

Pin Biggie Smalls Hypnotize said on Apr 14, 10:28 PM:

i was quite happy after reading some of your blog posts. good luck.

Pin gimmethattrack said on Apr 15, 02:56 AM:

you are a good coder

Pin build muscles said on Apr 19, 01:41 PM:

Paypal really plays a major role all over the internet

Pin Lida said on Apr 19, 11:29 PM:

Theme life to long

Pin Biber Hapı said on Apr 19, 11:31 PM:

Life to long to

Pin Lida said on Apr 19, 11:31 PM:

Time limit log off

Pin CrossFire Hacks said on Apr 20, 04:09 PM:

Every time a user pays us, Paypal will issue a request to the IPN url appending a bunch of useful information. AM is used to acknowledge the request (to make sure noon is spoofing them) and if everything is ok we can add the credits to the user", as you said that, I think it is not easy to use this way but I am hoping to get more introduction in next posts from you.thanks :)

Pin Computer Repair Stockport said on Apr 20, 08:47 PM:

Want to say your article is outstanding. The clarity in your post is simply striking and i can assume you are an expert on this field. Well with your permission allow me to grab your rss feed to keep up to date with forthcoming post. Thanks a million and please keep up the effective work

Pin Rob Adams said on Apr 21, 09:13 AM:

Paypal is the most secured, easy,and popular option when it comes to online payments. But sometimes it can a be real nightmare for sellers to use paypal because they sometimes for no reason limit your account and ask you to provide all proofs including the identity, address proof and even change the rules to make it difficult for you.

Pin Buenos Aires hotels said on Apr 21, 05:57 PM:

I like your website, It has been a pleasure reading the different articles in it, Rob.

Pin test inside said on Apr 22, 05:31 AM:

Its easy after reading the complete information now PayPal with Rails not a difficult task in my opinion.

Pin Hotels List said on Apr 22, 10:37 AM:

My testing has led nowhere so far, though I think this and the previous spacing thing are related. I've tried both on my windows machine (running local) and a test server running linux. :-( I'll post here if I figure it out.

Pin Jack hung said on Apr 22, 11:41 AM:

almost the entire world using Paypal. I am also paypal users. This information is very useful. I want to try this. thanks for sharing information.

Pin qreviews said on Apr 26, 02:44 AM:

I just start to learn Rails and don't understand a lot. This article can help me to understand the Rails. Thanks.

Pin mp3 song free download said on Apr 26, 12:31 PM:

very pleasure to visit this site. nice post. thanks for sharing.It will be of great help if you can elaborate some of the complex concepts into simpler words. Thanks for posting!

Pin Jack hung said on Apr 28, 10:10 AM:

i was quite happy after reading some of your blog posts. good luck.

Pin Jack hung said on Apr 29, 06:13 PM:

The customer lands on your payment page. You can set up encrypted buttons with different amounts. The customer clicks on a button and is redirected to a paypal page where he can use his credit card or paypal login to issue the payment. After doing so he is redirected to your site (or wherever you specify) while an asynchronous notification system lets you know that you have received a payment.

Pin teleconferencing services said on Apr 30, 12:49 PM:

Another great post admin. This is such good info for my research. I will bookmark your post here on Digg.

Pin Retail Market Analyst said on May 03, 07:28 AM:

Paypal is an online bank used by many people. I'm a user of paypal. This coding is very useful, I want to try it. thanks for sharing useful knowledge.

Pin Storage Wellington said on May 03, 12:48 PM:

There are a limited number of people who are capable of write technical articles that creatively. we are on the lookout for information regarding this topic

Pin Wellington Web Design said on May 03, 12:48 PM:

I really enjoyed reading the article as well. It is also very important to give some smaller communities the attention the deserve. I agree that government is becoming increasingly inefficient in dealing with community issues.

Pin Prezent said on May 05, 03:12 PM:

Very useful. Thanks

Pin Mr. Cheap Laptops said on May 15, 10:45 PM:

I feel like a total noob when it come to stuff like this. I wish it was simpler xD

Pin العاب فلاش said on May 17, 07:15 PM:

I started using this method, using paypal is the easiest way to accept payments. any newbie can use it and you can ready to go within minutes.

Pin Excel formülleri said on May 18, 11:33 PM:

Excellent article, thanks for sharing it.

Pin biber hapi said on May 19, 06:22 PM:

I started using this method, using paypal is the easiest way to accept payments. any newbie can use it and you can ready to go within minutes.

Pin red pepper biber hapi said on May 19, 06:22 PM:

I started using this method, using paypal is the easiest way to accept payments. any newbie can use it and you can ready to go within minutes. yasemin biber hapi

Pin Lida zayiflama hapi said on May 19, 06:23 PM:

lida zayiflama hapi

I started using this method, using paypal is the easiest way to accept payments. any newbie can use it and you can ready to go within minutes.

Pin Lida said on May 19, 06:23 PM:

lida hapi ile zayiflayin I started using this method, using paypal is the easiest way to accept payments. any newbie can use it and you can ready to go within minutes.

Pin Dental Jobs said on May 20, 11:12 AM:

great work. Like the article

Pin Custom Gates said on May 20, 05:17 PM:

Excellent tutorial. I was having problems withthe "active merchant"... The user above em said it the best.." require "active_merchant" # not the underscore"

Thanks, everything is working now.

Pin san diego electrician said on May 22, 06:31 AM:

I don't know about you guys but I have had a lot of problems with paypal. They are currently holding $4000 of my money for no reason.

Pin Economic Crisis said on May 23, 07:39 PM:

Interesting article, thanks

Pin supra shoes said on May 26, 02:57 AM:

i like its~~~~~~~``

Pin gucci outlet said on May 27, 12:08 PM:

good ... i like it

Pin biber hapı said on Jun 03, 02:10 PM:

No doubt you’ve seen weight loss claims of losing up to 20 pounds per week. What you’ve got to realise when that happens is that most of that is water weight. There are a couple of problems with this. First, losing that much weight in one week, especially considering it’s mostly water is not healthy. Second, biber hapı since it’s mostly water weight, the results will be temporary. www.kirmizibiberhapi.org So what is the ideal amount of weight to lose per week?

Pin Selling Gold said on Jun 04, 09:18 PM:

"In order to get started with PPWPS we need to set up an Sandbox account. Paypal is providing developers with a virtual sandbox where you can make transactions without real money changing hands."

That is so cool. Paypal has always been great and is continuing to get better.

Pin Rancho Santa Fe Real Estate said on Jun 06, 04:09 AM:

Great post, Paypal is the best. I love them.

Pin TV said on Jun 09, 11:29 PM:

Werry good thanks!

Pin Online said on Jun 09, 11:42 PM:

Thanks werry good!

Pin pub quiz questions said on Jun 10, 01:22 AM:

That was "werry" funny!

Pin dofollow blogs said on Jun 10, 01:23 AM:

Werry much so....

Pin b2b news said on Jun 12, 08:18 PM:

why not... I use paypal for every site in combination with rails... it is faster than with php

Pin funny t shirts said on Jun 13, 04:41 AM:

I love this blog…just bookmarked it. Keep it coming.

Pin Luxury Home Builder Tampa said on Jun 13, 04:42 AM:

Whatever your taste, this is a great story! Bingo!

Pin Jordan Kicks said on Jun 15, 11:42 AM:

Excellent concept. I would like to best work from you in the future as well.

Thanks for sharing with us.

Pin natural peanut butter said on Jun 16, 03:40 AM:

I have never thought that surfing online can be so much beneficial and having found your blog, I feel really happy and grateful for providing me with such priceless information.

Pin t shirts said on Jun 17, 01:00 AM:

Whatever your taste, this is a great story! Bingo!

Pin luxury home builder tampa said on Jun 17, 01:01 AM:

Crazy things happen when you walk through the park. Keep up the great blog.

Pin SEO Tampa said on Jun 17, 01:03 AM:

I love this blog…just bookmarked it. Keep it coming

Pin aspirinc said on Jun 17, 03:29 PM:

Excellent concept. I would like to best work from you in the future as well.

Thanks for sharing with us.

Pin توبيكات said on Jun 18, 04:07 PM:

thanx for all .. good blog

Pin توبيكات جديده said on Jun 18, 04:09 PM:

thanx for all

Pin Gögüs Büyütücü said on Jun 19, 12:43 AM:

Göğüs Büyütücü
Göğüs büyütücü ürünler, göğüs büyütme hapı ve göğüs büyütme jeli satis ve siparis sitesi.
gogus,breast,gogus buyutucu,2009,news

Pin Family Counseling Upland said on Jun 21, 07:28 PM:

Thank you for this amazing resource. This is very useful and can be used in a number of applications.

Pin schraubstollen said on Jun 21, 07:45 PM:

Yeah im already using paypal with rails, ;) thanks a lot

Pin Gewinnspiele kostenlos said on Jun 21, 07:46 PM:

Hah what a great tip. I think i will profit a lot from your paypal knowledge

Pin bookmakers free bet codes said on Jun 21, 09:24 PM:

Thanks for sharing the information. That’s a awesome article you posted. I found the post very useful as well as interesting. I will come back to read some more.

Pin العاب بنات said on Jun 22, 01:48 PM:

I will be checking into this website again

Pin العاب said on Jun 22, 01:49 PM:

thank u my daer

Pin منتديات said on Jun 22, 01:50 PM:

good artecal

Pin Couples Therapist Chino Hills said on Jun 23, 12:04 AM:

Thanks for the awesomeness!

Pin Signs Austin said on Jun 23, 02:09 PM:

until now I used it with PHP... but I saw that is better with Rails

Pin Pepper Spray said on Jun 30, 12:32 AM:

Very insightful, thanks so much!

Pin Charm Pandora said on Jun 30, 06:17 AM:

SSD kök düğümü Elektronik ancak çünkü gerçekten büyük bir aralığı kapsar ürünlerin aslında aile değil. Uygulama mantığını bağlı olarak gerçek ailesi () Bilgisayar ve Çevre Birimleri veya Depolama olabilir.

Pin ايجي said on Jul 01, 05:34 PM:

Your blog is just awsome.

Pin منتديات said on Jul 03, 03:34 AM:

Of the most beautiful what they read Thank you
http://www.admntk.com

Pin Baumadam said on Jul 03, 01:50 PM:

Thanks for reply

Pin rotherham web design said on Jul 05, 04:37 PM:

It was a beneficial workout for me to go through your webpage. It definitely stretches the limits with the mind when you go through very good info and make an effort to interpret it properly. I am going to glance up this web site usually on my PC. Thanks for sharing

Pin anonymous proxy web said on Jul 05, 11:13 PM:

Happy to see your blog as it is just what I’ve looking for and excited to read all the posts. I am looking forward to another great article from you.

Pin Computer Repair said on Jul 06, 07:32 AM:

Thanks for the snippets of code. Makes it a lot easier to follow along with. Rails is a great framework; however, it takes quite some time to wrap your head around all of its constructs. I have been working on learning it the last little while (nothing quite like learning a new computing framework :] ).

Pin jewellery said on Jul 07, 11:54 AM:

Göğüs büyütücü ürünler

Pin mathewsteff said on Jul 09, 10:19 AM:

It was really a Good information on Active Merchant Payment Gateway....I have come to know a little bit on this.. I am supposed to be taking a course in E-commerce related industry, but your post have given me the insights for this. Thanks :)

Pin James said on Jul 09, 01:04 PM:

Thanks for sharing the information. That’s a awesome article you posted. I found the post very useful as well as interesting. I will come back to read some more. Thanks

Pin Beat Making Software said on Jul 10, 01:21 AM:

Great information... very useful

Make Instrumentals | Drop Ship Company

Pin vehicle shipping said on Jul 10, 05:27 AM:

* Additionaly you can check the allow only encrypted payments in your profile, and check the other settings as well.

To do some basic testing in the real world you can temporarily change the charged amount, make a purchase then issue a refund through paypal.

Pin v pills said on Jul 10, 09:02 PM:

vpills marketim...

Pin dinamic said on Jul 11, 03:21 PM:

good luck with that... I will use it, too

Pin çiçek sepeti said on Jul 12, 05:39 AM:

Devlet Bakanı ve Başbakan Yardımcısı Cemil Çiçek, Meslek Yüksek Okulları temel atma törenlerine katılmak için geldiği Yozgat’ta devlet olarak eğitime yeteri kadar önem verilmediğini ilginç bir örnekle anlattı. Cumhurbaşkanı Abdullah Gül’ün Nijerya ziyaretine katıldığını aktaran Cemil Çiçek, orada Türk okulları olduğunu, Nijeryalıların Türkçeyi öğrendiklerini fakat, Hakkari’dekine, Diyarbakır’dakine halen Türkçe’yi öğretemediklerini söyledi. Çiçek, bu durumun devletin eğitime yeteri kadar önem vermemesinden kaynaklandığını ve bedelini de ağır ödediğini söyledi.

Pin Atlanta Cheap Flight said on Jul 13, 06:18 AM:

Using paypal with Rails hasn't gotten me rich yet, but it definitely has been beneficial!

Pin Blackberry Pearl 9100 said on Jul 13, 06:19 AM:

Is there any way that I can access Rails from a Blackberry?

Pin baltimore sedan services said on Jul 16, 11:15 PM:

nice work over all i think rails is better for Iphone as well.

Pin IT support Manchester said on Jul 17, 05:29 PM:

It was a beneficial workout for me to go through your webpage. It definitely stretches the limits with the mind when you go through very good info and make an effort to interpret it properly. I am going to glance up this web site usually on my PC. Thanks for sharing

Pin triathlon bike said on Jul 18, 04:33 PM:

Great post. Very informative. Site has been added to my RSS feed for later browsing.

Pin triathlon wetsuit said on Jul 18, 04:37 PM:

Very informative post. So site will be popular day by day.

Pin web design rotherham said on Jul 20, 07:33 AM:

found the post very useful as well as interesting

Pin Inchirieri masini said on Jul 21, 04:11 PM:

Yes, I know how to do it now. The thing is I was going to use it for one of my new sites, to take the reservation fees online, but I read all over the internet that paypal doesn't look good in the eye of the buyer. So? What to do?

Pin Valador said on Jul 21, 05:18 PM:

Great information... very useful

Pin Brown Bedding said on Jul 22, 06:45 PM:

Who can I contact with troubleshooting for using paypal with rails?

Pin biber hapı said on Jul 23, 03:53 PM:

Thanks for sharing the information.

Pin biber hapı said on Jul 23, 03:55 PM:

Thanks for sharing the information.

Pin biber hapı said on Jul 23, 03:56 PM:

Thanks for sharing the information.

Pin Hostess said on Jul 25, 09:43 AM:

Paypal will help you conduct a small online business but when you get bigger and bigger it might send the wrong signal to your costumers. I would not recommend it.

Pin nude girls said on Jul 26, 08:32 PM:

Multiple selects, allow you to review the whole or part of a list, but inexperienced users will never guess the ctrl-click or shift-click operations.

Pin criação de logotipo said on Jul 26, 10:16 PM:

Nice point of view, keep updating good content.

Pin Jump manual said on Aug 01, 02:42 PM:

Correct PayPal IPN handling with Rails. While working with different PayPal payment APIs, I have read a lot of tutorials, library code and documentation about the given matter. While there are several quite competent implementation

Pin Tropitone Patio Furniture said on Aug 02, 01:16 AM:

What a great article. I've been using paypal on a php site I have but didn't know how to get it on a rails one I've been working on. Huge help!

Pin carpet cleaner monterey said on Aug 05, 01:42 AM:

Yes this is going to help us to shop here and there every where. But it is not nice to hear that paypal has no money transaction system in many countries.

Pin صدفة said on Aug 05, 10:16 AM:

Pin biber hapı said on Aug 05, 09:35 PM:

thanks admin nice paypal news ;)

Pin sfsfds said on Aug 06, 06:46 AM:

good blog for everyone, thank you for sharing.

Pin sfdsfd said on Aug 06, 06:51 AM:

very good blog, digg it , it will good for every paypal user.

Pin biber hapi said on Aug 06, 11:03 AM:

thanks admin nice paypal news ;)

Pin biber hapi said on Aug 06, 11:05 AM:

thanks admin nice paypal news ;)

Pin سعودي said on Aug 07, 12:21 PM:

Thank you for the wonderful explanation of the topic was the application of an integrated explanation at the following locations
http://www.saudicol.com/
http://www.7lahm.com/
http://www.iraqcol.com/
http://www.lightce.com/

Pin John said on Aug 07, 07:51 PM:

ok well this is one weird system to use

Pin hisse senedi said on Aug 07, 09:51 PM:

very good blog, digg it , it will good for every paypal user.

Pin feiertag said on Aug 08, 12:56 AM:

thank you for this information. i really enjoyed reading this post.

Pin IT support Manchester said on Aug 08, 11:16 PM:

I would like to thank you for the efforts you have made in writing this article. I am hoping the same best work from you in the future

Pin expert seo services said on Aug 09, 04:32 PM:

hi thanks for the information.

mens designer leather jackets

Pin Virility Ex said on Aug 10, 08:56 AM:

I am not a big fan of paypal, but too bad there really isn't any credible competitor to them, I have had a few run-ins with their customer service regarding getting a refund for a purchase through them that went bad. They are not the most customer centric company out there that's for sure.

Pin Mutari mobilier said on Aug 10, 04:52 PM:

Paypal is now maybe the easiest way to send money over the world. I am using it everyday.

Pin cheap belly button rings said on Aug 11, 02:04 PM:

[........]Some Nice looking being for the Pay-pal is now maybe the easiest way to send money over the world. I am using it everyday[.........]

Pin website-developers-india said on Aug 12, 08:43 AM:

I didnt knew that we can create a dummy paypal just for testing. Thanks for sharing this, keep the good work going.

Pin Vector Graphics said on Aug 12, 01:29 PM:

Its amazing how interesting it is for me to visit you very often. Thanks for sharing.

Pin free iphone jailbreak said on Aug 13, 03:53 PM:

Very useful information. How can I thank you Sir

Pin Married Women Seeking Married Women said on Aug 13, 05:05 PM:

very very informative blog because blog is give us more information

Pin komputer said on Aug 14, 05:06 PM:

nice information and great share thanks

Pin biber hapı said on Aug 16, 06:25 PM:

informative blog very very

Pin Heritage Hotel Jaipur said on Aug 18, 08:06 PM:

It’s really great post. I would like to appreciate your work and would like to tell to my friends.
Thanks for sharing

Pin Jaipur Hotels said on Aug 18, 08:14 PM:

Hello! nice article, thanks for sharing with us.

Pin home stays in jaipur said on Aug 18, 08:17 PM:

that's really a fantastic post ! added to my favourite blogs list.. I have been reading your blog last couple of weeks and enjoy every bit. Thanks.

Pin Ferrari Literature said on Aug 19, 12:24 PM:

I didnt knew that we can create a dummy paypal just for testing. Thanks for sharing this, keep the good work going.

Pin 传奇世界私服 said on Aug 21, 09:27 AM:

I have been reading your posts during my afternoon break, and I must admit the whole article has been very useful and very well written. I thought I would let you know that for some reason this blog does not display well in Internet Explorer 8. I wish Microsoft would stop changing their software. I have a question for you. Do you mind exchanging blog roll links? That would be really cool!

Pin Cho Yung Tea Review said on Aug 21, 10:24 AM:

It was a beneficial workout for me to go through your webpage. It definitely stretches the limits with the mind when you go through very good info and make an effort to interpret it properly

Pin gold belly rings said on Aug 21, 11:11 AM:

[.......]Thank goodness we found this guide. We are travelling to Shanghai this fall -with our pet - and this provides alot of good information. [.......]

Pin Grappa Weine italienische Spezialitaeten said on Aug 22, 06:05 PM:

I have to admit that this took me a while to get my head around, but the information is really in-depth and brilliantly useful, thanks!

Pin jerry garcia tie said on Aug 23, 08:23 PM:

Its amazing how interesting it is for me to visit you very often. Thanks for sharing.

Pin Black Men said on Aug 24, 06:25 AM:

I am attempting to run my own blog but I think its too general and I want to focus more on smaller topics. Being all things to all people is not all that its cracked up to be.

Pin Black Men said on Aug 24, 06:31 AM:

I wanted to drop you a quick note to express my thanks. I've been following your blog for a month or so and have picked up a ton of good information as well as enjoyed the way you've structured your site.-cheers

Pin gpt sites said on Aug 24, 07:13 PM:

Excellent guide. I was wondering how to do this! Thanks for sharing with us! :)

Pin bijuterii said on Aug 25, 10:28 AM:

You most definitely have made this blog into something thats eye opening and important. You clearly know so much about the subject, youve covered so many bases.

Pin Long Island Swimming Pools  said on Aug 25, 11:59 AM:

Thanks a lot for sharing such a info with us

Pin Rollenspiele said on Aug 25, 12:57 PM:

When I read your article,I am amaze o it. Thank you for the set up that you prepare above. Very helpful info about paypal. Thanks!

Pin biber hapı said on Aug 25, 06:19 PM:

Biber hapı ile su tüketimi çok öenmli bir yer teşkil etmektedir. Günlük miktarda ortalama olarak 3 L su tüketmek sağlığınız için önemli bir yer teşkil edecektir.

Metabolizmanızda herhangi bir sıkıntı yok ise kısa bir sürede zayıflamayı hissedeceksiniz. Zayıflama işlemi genel olarak uzu vadeli bir iş olarak düşünülebilir. Fakat biber hapı ile buna son veriyoruz. Kısa sürede kilo vereceksiniz!

Pin biber hapı said on Aug 25, 06:21 PM:

Türkiye’de satışa sunulduğu ilk günden itibaren yapılan araştırmalarda Biber Hapı en çok satılan Kurum ve Kuruluşlar İl ve İçeler Eczaneler, aktarlar, Lokman Hekim Şifalı Ürünler, Ecza Depoları, Özel sağlık kuruluşları, Hastaneler, Güzellik salonları, Masaj yapan kuruluşlar, Havalimanları, THY kuruluşları, Kuaför salonları, Epilasyon merkezleri, saunalar, belediyeler, tüm resmi kurumlar, Tarım Bakanlığı birimleri,Başhekimlikler, Hukuk büroları, Adliye sarayları,sağlık kuruluşları, Türk Telekom birimleri,Emniyet birimleri, Özel eczaneler, doğal ürünler satış noktaları, bitkisel ürünler cilt bakım ürünleri,doğal cilt bakım ürünleri, satışı yapan kurum ve kuruluşlara Acı Biber Hapı satışı yapılmıştır.Kimlere hitap ettiği konusunda; obezite hastaları, kilo problemi olan bayanlara, oturarak iş yapan ve spor perhiz diyet yapamayanlara daha sağlıklı ve daha kolay zayıflamayı tercih eden, bayanlara 1 aylık kullanımda en ucuz ve ekonomik zayıflama yolu olarak Meksika Biber Hapı tercih edilmiştir.

Pin lida said on Aug 25, 06:22 PM:

Yurt dışında yaşıyorsanız, TR, den (Türkiye’den) Lida zayıflama hapı sipariş vermek istiyorsanız artık çok kolay. Sipariş formumuzu doldurarak yaşadığınız ülkenin adını mesaj kısmına yazmanız yeterli. Gönderdiğiniz mail ve Gmail msn adresimize eklenerek sizlere TR’den Almanya, Fransa ve Hollanda gibi tüm Dünya ülkelerine İsviçre, Belçika, Danimarka, İngiltere, Amerika (ABD) gibi ülkelere 7 günde teslimat sağlıyoruz. Hem de kapı da ödeme yapmanıza gerek kalmadan vereceğiniz sipariş satış temsilcimiz tarafından gerek msn ya da mail, Gmail yoluyla onaylandıktan sonra, vereceğimiz sipariş ödemesini western ünionla ödemeyi tarafımıza gönderdikten sonra; ürününüz aynı gün kargoya verilecektir. TR satış sitesinde bulunan 0090541 520 56 99- 0090 541 520 57 97-0090507 226 88 71 nolu telefondan Lida Zayıflama Hapı sipariş hattından verebilirsiniz.Bu numaralara adresinizi mesaj yoluyla ile atabilirsiniz.

Pin maurers said on Aug 25, 06:24 PM:

Yurt dışında yaşıyorsanız, TR, den (Türkiye’den) Maurers hapı sipariş vermek istiyorsanız artık çok kolay. Sipariş formumuzu doldurarak yaşadığınız ülkenin adını mesaj kısmına yazmanız yeterli. Gönderdiğiniz mail ve Gmail msn adresimize eklenerek sizlere TR’den Almanya, Fransa ve Hollanda gibi tüm Dünya ülkelerine İsviçre, Belçika, Danimarka, İngiltere, Amerika (ABD) gibi ülkelere 7 günde teslimat sağlıyoruz. Hem de kapı da ödeme yapmanıza gerek kalmadan vereceğiniz sipariş satış temsilcimiz tarafından gerek msn ya da mail, Gmail yoluyla onaylandıktan sonra, vereceğimiz sipariş ödemesini western ünionla ödemeyi tarafımıza gönderdikten sonra; ürününüz aynı gün kargoya verilecektir. TR satış sitesinde bulunan 0090541 520 56 99- 0090 541 520 57 97-0090507 226 88 71 nolu telefondan Maurers Hapı sipariş hattından verebilirsiniz.Bu numaralara adresinizi mesaj yoluyla ile atabilirsiniz.

Pin lw6090 said on Aug 25, 06:27 PM:

LW6090Orjinal Resmi Satış Sipariş Sitesi
AnasayfaLw6090 KampanyalarıKullanımıİçeriğiYan EtkileriSipariş Zayıflama Ürünleri Resmi Satış Sitesilw6090lw6090 zayıflamalw6090 siparişlw6090 zayıflama hapı
Lw6090 termojenik zayıflama hapı ya da içmesi kaybolan şeffaf kapsüllerden üretilmiş zayıflama hapı ile sabah 1 kapsül akşam 1 kapsül şeklinde kullanarak 1 ayda metabolizmaya bağlı olarak 5-10-12 kg zayıflayabilirsiniz.Basında çıkan son haberlerden sonra Tarım Bakanlığı onaylı ürünler bir kez daha insan sağlığı açısından ne kadar önemli olduğu bir kez daha anlaşılmıştır. Devamını oku

Kolesterol Düşürücü Sebze “Patlıcan”kolestrolzayıflama
Memleketimizde bol miktarda yetişen sebzenin çişitli yemekleri ve turşusu yapılır.
Özellikleri; Yeterli miktarda A,B1,B2 ve C vitaminleri ihtiva eden patlıcanda ayrıca kalsiyum fosfor ve demirde bulunur. Kalori değeri oldukça düşüktür.
Önerilen Hastalıklar; Tam olgunlaşınca yenilen patlıcanlar kalp çarpıntısına iyi gelir. Böbrekleri çalıştırır, vücutta toplanan fazla suyu dışarı boşaltır. Devamını oku

Lw 6090 Hapı TR Satış Sitesilw6090lw6090 zayıflamalw6090 yurt dışı sipariş lw6090 TR satış
Yurt dışında yaşıyorsanız, TR, den (Türkiye’den) Lw 6090 hapı sipariş vermek istiyorsanız artık çok kolay. Sipariş formumuzu doldurarak yaşadığınız ülkenin adını mesaj kısmına yazmanız yeterli. Gönderdiğiniz mail ve Gmail msn adresimize eklenerek sizlere TR’den Almanya, Fransa ve Hollanda gibi tüm Dünya ülkelerine İsviçre, Belçika, Danimarka, İngiltere, Amerika (ABD) gibi ülkelere 7 günde teslimat sağlıyoruz. Hem de kapı da ödeme yapmanıza gerek kalmadan vereceğiniz sipariş satış temsilcimiz tarafından gerek msn ya da mail, Gmail yoluyla onaylandıktan sonra, vereceğimiz sipariş ödemesini western ünionla ödemeyi tarafımıza gönderdikten sonra; ürününüz aynı gün kargoya verilecektir. TR satış sitesinde bulunan 0090541 520 56 99- 0090 541 520 57 97-0090507 226 88 71 nolu telefondan Lw 6090 zayıflama hapı sipariş hattından verebilirsiniz.Bu numaralara adresinizi mesaj yoluyla ile atabilirsiniz.

Pin criminal justice degree said on Aug 26, 05:41 AM:

Everything looks fine and great. Hopefully this could be a successful venture which will let people earn and not something that is just making people pay and pay without knowing that their money from their accounts is already been deducted from this additional feature or activity that is newly promoted. The three simple requirements must be secured because those are all significant in handling monetary transactions.

Pin poolen closures said on Aug 26, 08:56 AM:

unfortunately I am now using Wordpress, .. but thx your info, mate!

Pin Cho Yung Tea Scam said on Aug 26, 10:33 AM:

Want to say your article is outstanding. The clarity in your post is simply striking and i can assume you are an expert on this field.

Pin rx1 said on Aug 26, 11:31 AM:

Rx1 termojenik zayıflama hapı ya da içmesi kaybolan şeffaf kapsüllerden üretilmiş zayıflama hapı(ilacı) ile sabah 1 kapsül akşam 1 kapsül şeklinde kullanarak 1 ayda metabolizmaya bağlı olarak 5-10-12 kg zayıflayabilirsiniz.Basında çıkan son haberlerden sonra Tarım Bakanlığı onaylı ürünler bir kez daha insan sağlığı açısından ne kadar önemli olduğu bir kez daha anlaşılmıştır.

Pin Weidenkorb said on Aug 27, 10:04 AM:

I think it's actually more secure than some other methods of transfer. They have protection policies in place if there is a problem, which backs onto your credit card's policy if you use credit card through paypal. It also allows you to buy things without handing over your credit card details. This allows a degree of anonymity to be kept.

Pin Coach Outlet Store Online said on Aug 28, 03:29 PM:

Using paypal with rail...different concept ..but nice one..thanks for sharing..Thanks a lot for enjoying this beauty article with me. I am appreciating your attempt to create it! Looking forward to another great article. Good luck to the author! all the best!

Pin biber hapı said on Aug 28, 11:34 PM:

Biber hapı meditasyon yapan kişi daima, gezegenin döngülerinden ve organizmanın enerji değişimlerinden yararlanmayı bilmelidir. Böylece insan yaşamın doğal akışı ile uyum içinde yaşayabilir. Bütün dinler de yine aynı nedenle ya güneş doğarken ya da batarken bir biçimde meditasyon yapmayı emreder.

Pin biber hapı said on Aug 28, 11:35 PM:

Biber hapı meditasyon yapan kişi daima, gezegenin döngülerinden ve organizmanın enerji değişimlerinden yararlanmayı bilmelidir. Böylece insan yaşamın doğal akışı ile uyum içinde yaşayabilir. Bütün dinler de yine aynı nedenle ya güneş doğarken ya da batarken bir biçimde meditasyon yapmayı emreder.

Pin biber hapı said on Aug 28, 11:36 PM:

Biber hapı meditasyon yapan kişi daima, gezegenin döngülerinden ve organizmanın enerji değişimlerinden yararlanmayı bilmelidir. Böylece insan yaşamın doğal akışı ile uyum içinde yaşayabilir. Bütün dinler de yine aynı nedenle ya güneş doğarken ya da batarken bir biçimde meditasyon yapmayı emreder.

Pin biber hapı said on Aug 28, 11:42 PM:

The person who always meditate pepper pill, and of the planet's cycle of the organism must know how to take advantage of the energy exchange. So people can live in harmony with the natural flow of life. Also the same reason, all religions, or at sunrise or sunset in a way that is ordered to do meditation.

Pin fx15 said on Aug 28, 11:43 PM:

The person who always meditate pepper pill, and of the planet's cycle of the organism must know how to take advantage of the energy exchange. So people can live in harmony with the natural flow of life. Also the same reason, all religions, or at sunrise or sunset in a way that is ordered to do meditation.

Pin lida said on Aug 28, 11:44 PM:

The person who always meditate pepper pill, and of the planet's cycle of the organism must know how to take advantage of the energy exchange. So people can live in harmony with the natural flow of life. Also the same reason, all religions, or at sunrise or sunset in a way that is ordered to do meditation.

Pin fx15 said on Aug 29, 01:00 AM:

The person who always meditate pepper pill, and of the planet's cycle of the organism must know how to take advantage of the energy exchange. So people can live in harmony with the natural flow of life. Also the same reason, all religions, or at sunrise or sunset in a way that is ordered to do meditation.

Pin How to guide said on Aug 30, 08:17 AM:

I found this is an informative and interesting post so i think so it is very useful and knowledgeable. I would like to thank you for the efforts you have made in writing this article. I am hoping the same best work from you in the future as well. In fact your creative writing ability has inspired me. Really the article is spreading its wings rapidly...

Pin lida said on Aug 30, 10:46 AM:

Telkinlerimizi ısrarla dinlemeyen ve tansiyon şikayeti olmasına rağmen ısrarla Lida kullanan Serdar hanımın şiddetli palpitasyon şikayeti ile doktora yetişmesi pek uzak bir ihtimal olmayacak. Bizler kalp ve damar sisteminde rahatsızlığı olan kişilerin Lida’ yı kullanmamaları gerektiği konusunda çoğu kez ve üzerine basa basa açıklamalar yapıyoruz. Lakin dikkate almayanlar ve rahatsızlıklarına rağmen Lida kullananlar oluyor. Sonuç olarak Lida suçlu çıkıyor, uyarılara aldırış etmeden kullanıp, rahatsız olanlar değil.

Pin lida hapı said on Aug 30, 10:50 AM:

Fx15
prescription drug ads aimed at making the information about side effects more understandable.
Biber Hapı Off the top of our heads, we’d just
suggest they slooooooowwww.
own when discussing all the rare,)
Fx15
but often-horrific sounding side effects of a given medication. Lida
Thank you for your discuss. very very thanks.

Pin lida said on Aug 30, 10:53 AM:

arap kızı Yağı A Massachusetts law banning pharma and Biber Hapı But a proposal from the speaker of the House ofBiber Hapı Representatives would rescind the ban due to its.

Pin biber hapı said on Aug 30, 10:55 AM:

Lida given this serious thought,
Yılan
vegetables, was in their public comments to the agency

Pin lw6090 said on Aug 30, 11:08 AM:

The person who always meditate pepper pill, and of the planet's cycle of the organism must know how to take advantage of the energy exchange. So people can live in harmony with the natural flow of life. Also the same reason, all religions, or at sunrise or sunset in a way that is ordered to do meditation.

Pin rotherham tyres said on Aug 30, 01:12 PM:

Want to say your article is outstanding. The clarity in your post is simply striking and i can assume you are an expert on this field.

Pin sheffield windows said on Aug 30, 07:32 PM:

Want to say your article is outstanding. The clarity in your post is simply striking and i can assume you are an expert on this field

Pin dog owners forum said on Aug 31, 12:43 AM:

I was wondering how to incorporate paypal with rails. Thanks for clearing that up. Great blog.

Pin free level 80 wow account said on Aug 31, 01:04 PM:

paypal and rails are corporate. well sounds new to me, The clarity in your post is simply striking..different concept ..but nice one..thanks for sharing.

Pin Oliver Mack said on Sep 01, 04:34 AM:

A perfect help!

thanks for the tutorial! This is really a good help! Iwas sort of confused about the encryption part until i read all of it!

Thanks again, hoping for more innovation!

md5 decrypt

Pin qiqi said on Sep 01, 04:43 AM:

are corporate. well sounds new to me, The clarity in your post is simply striking

Pin free paid survey said on Sep 01, 10:28 AM:

Wow, this this a great piece of writing. Very enlightening. Thanks for this. I'll be absolutely certain to check back on this site very often.

Pin PC fix said on Sep 01, 01:46 PM:

Awesome blog, the blogs all the information which i need. Thanks for sharing. I also forwarding this link to all my friends. Keep posting.

Pin world healthy said on Sep 01, 04:54 PM:

are corporate. well sounds new to me, The clarity in your post is simply striking

Pin sinema izle said on Sep 01, 05:21 PM:

all the problems WebOS and the Pre solve, they bring their own set to the table. However, watching the Palm Keynote fro CES I, presented by former Apple iPod father Jon

Pin kız oyunları said on Sep 01, 05:22 PM:

click buttons and touch-sensitive scroll pad, but not as standard mice have, but as stickers based on the Radio Frequency Identification Device technology so they can easily be moved

Pin Unternehmensberatung Coaching said on Sep 01, 06:31 PM:

This seems like a really good idea and a more secure way to do things, thanks for explaining so well how it is done.

Pin شات said on Sep 03, 12:37 AM:

شات -
دردشه - دردشة -
شات كتابي -
دردشه كتابيه -
العاب فلاش

Drop a comment: