I did a simple Ruby gem to allow easy access to PayPal’s NVP APIs recently. It isn’t much at this point in time, though both the Direct Payment and Express Checkout has been coded, only Direct Payment has really been tested. Here’s the writeup directly from the project site at http://ruby-paypal.rubyforge.org.
A lightweight ruby wrapper for PayPal NVP APIs. To install type the following at the command line:
$ gem install ruby-paypal
It‘s critical that you understand how PayPal works and how the PayPal NVP API works. You should be relatively well-versed in the NVP API Developer Guide and Reference. You should also visit and register yourself with the PayPal Developer Network and get a Sandbox account with in the PayPal Development Central.
Note that this library only supports the API signature method of securing the API credentials.
To use credit card payment through PayPal, you need to use the DoDirectPayment APIs:
username = <PayPal API username> password = <PayPal API password> signature = <PayPal API signature> ipaddress = '192.168.1.1' # can be any IP address amount = '100.00' # amount paid card_type = 'VISA' # can be Visa, Mastercard, Amex etc card_no = '4512345678901234' # credit card number exp_date = '022010' # expiry date of the credit card first_name = 'Sau Sheong' last_name = 'Chang' paypal = Paypal.new(username, password, signature) # uses the PayPal sandbox response = paypal.do_direct_payment_sale(ipaddress, amount, card_type, card_no, exp_date, first_name, last_name) if response.ack == 'Success' then # do your thing end
The above code is for a final sale only.
Note that the credit card number is checked against a modulo-10 algorithm (Luhn check) as well as a simple credit card type check. For more information please refer to http://en.wikipedia.org/wiki/Luhn_algorithm and http://en.wikipedia.org/wiki/Credit_card_number