Today I have published a PHP client for the PayPal REST API. There was an official SDK already, so why another library?
These are the reasons why I have decided to work on a new client:
- Using the official SDKÂ felt a bit awkward: a lot of setters, a lot of static methods and a lot of coupling between classes.
- I tried to contribute to the official SDK and I failed: I gave myself a week (after work hours) to get a better understanding of the SDK, and to come up with a PR to make the SDK tests run without calling the actual paypal sandbox endpoints. At the end of 6/7 hours of work, I didn’t submit a PR: it would have broken a lot of interfaces and there were still tests calling the sandbox endpoints.
- No way of mocking the class making the calls: I was using the official SDK on a side project, and it was not possible to mock only the class that made the real calls – because it was always instantiated with a “new”. I had to implement a class that contained all the logic for using the SDK and mock that.
- I didn’t need to call all the endpoints: I only needed to get direct payment working with “paypal” payment method.
So these are the reasons why I delved into the PayPal REST API reference. IÂ played around to make calls and see if I could come up with an OO library that did only what I needed.
Whit PHP PayPal REST API Client you can:
- make direct payments using “paypal” method
- make direct payments using “credit_card” method (only in some countries)
- authorize and capture payments using “paypal” method
- authorize and capture payments using “credit_card” method (only in some countries)
To start using the library just add the following line to your composer.json
"p16/paypal-rest-api-client": "0.1.1"
and then run
composer update p16/paypal-rest-api-client
Giving back to the community much less than what I’ve taken!
Feedback, PR and suggestions are more than welcome!