sverraest / revolut-php Goto Github PK
View Code? Open in Web Editor NEW💳 PHP Bindings for the Revolut Business API
Home Page: https://revolutdev.github.io/business-api/#api-v1-0-introduction
License: Other
💳 PHP Bindings for the Revolut Business API
Home Page: https://revolutdev.github.io/business-api/#api-v1-0-introduction
License: Other
Dears!
First of all thank you for this package! Really easy to integrate!
I ran into a problem, which i couldnt solve as of now.
I'm trying everything in sandbox mode. Authorization working perfectly. Counterparty creation is also flawless.
Altough when i try anything else it goes into forbidden.
During authoriazion i tried to add different scopes but does not change the permission that the app-confirm is giving (payments, accounts, etc).
All the time i try to do a transfer of payment i get back a 403:
"message": "Client error: POST https://sandbox-b2b.revolut.com/api/1.0/pay
resulted in a 403 Forbidden
response:\n{"message":"This action is forbidden","code":9002}\n"
I know that the problem is on my end, but i'm unable to figure it out.
Any help is appreciated!
Regards
Tom
I do everything in sandbox mode but I'm blocked at this part: RevolutPHP\Auth\Provider
And I get this error: Undefined array key "code"
Thank you in advance for your help and advice.
Hello, I'm trying to implemen this package in my app.
I wrote the following controller :
class RevolutAuthController extends Controller
{
protected $authProvider;
public function __construct()
{
$this->authProvider = new RevolutAuthProvider([
'clientId' => getenv('REVOLUT_CLIENT_ID'),
'privateKey' => file_get_contents(base_path('/privatecert.pem')),
'redirectUri' => "http://my_domain/api/v1/revolut/auth/callback",
'isSandbox' => true
]);
}
public function redirectToProvider()
{
return redirect($this->authProvider->getAuthorizationUrl(['scope' => "READ,WRITE,PAY"]));
}
public function handleRevolutCallback(Request $request)
{
$accessToken = $this->authProvider->getAccessToken('authorization_code', [
'code' => $request->get('code')
]);
if ($accessToken->hasExpired()) {
$newAccessToken = $this->authProvider->getAccessToken('refresh_token', [
'refresh_token' => $accessToken->getRefreshToken()
]);
$accessToken = $newAccessToken;
}
}
}
The redirect to provider metod works properly and generates a link where I can authorize the app, the issue comes when i try to authorize the app with sms in the revolut side.
After filling in the authcode revolut says "Action is forbidden" and does not redirect to the redirect URI provided.
I have also tried to authorise the app manually via the revolut dashoboard and in that case it works properly.
Any idea on where the issue colud be?
Thank you
Would you consider supporting Merchant API as it gets our of beta?
https://revolut-engineering.github.io/api-docs/#merchant-api-beta
Maybe in different project as it is not really linked with existing API.
Hey i set everything as you described, i think.
///php code
require "vendor/autoload.php";
$authProvider = new \RevolutPHP\Auth\Provider([
'clientId' => 'BLABLABLAmyid', // As shown when uploading your key
'privateKey' => 'blablabla/pathto my private key/privatekey.pem',
'redirectUri' => 'web link that i indicated into public key', // The URL to redirect the user to after the authorisation step
'isSandbox' => true
]);
$url = $authProvider->getAuthorizationUrl();
$accessToken = $authProvider->getAccessToken('authorization_code', [
'code' => $_GET['code']
]);
but still it's giving this error:
i will hide my path to the privacy reasons with "myDirectoryToSourceCOde*"
Fatal error: Uncaught BadMethodCallException: Required parameter not passed: "code" in myDirectoryToSourceCOdevendor/league/oauth2-client/src/Tool/RequiredParameterTrait.php:35 Stack trace: #0 myDirectoryToSourceCOdevendor/league/oauth2-client/src/Tool/RequiredParameterTrait.php(53): League\OAuth2\Client\Grant\AbstractGrant->checkRequiredParameter('code', Array) #1 myDirectoryToSourceCOdevendor/league/oauth2-client/src/Grant/AbstractGrant.php(76): League\OAuth2\Client\Grant\AbstractGrant->checkRequiredParameters(Array, Array) #2 myDirectoryToSourceCOdevendor/league/oauth2-client/src/Provider/AbstractProvider.php(535): League\OAuth2\Client\Grant\AbstractGrant->prepareRequestParameters(Array, Array) #3 myDirectoryToSourceCOdevendor/vdbelt/oauth2-revolut/src/Provider/Revolut.php(144): League\OAuth2\Client\Provider\AbstractProvider->getAccessToken(Object(League\OAuth2\Client\Grant\AuthorizationCode), Array) #4 /v in myDirectoryToSourceCOdevendor/league/oauth2-client/src/Tool/RequiredParameterTrait.php on line 35
Hi, I using this package with Laravel and all is good, but I need to get the response back from Revolut, so I can save the UUID's they send to out database.
So this is the code I have:
// At the top I have use RevolutPHP\Client as Revolut;
$pay = new Revolut($this->api_key);
$counterparty = $pay->counterparties->create(
array (
'company_name' => user()->companies()->first()->name,
'bank_country' => 'GB',
'currency' => 'GBP',
'account_no' => $request->account_no,
'sort_code' => $request->sort_code,
"email" => user()->email,
"phone" => user()->tel,
'profile_type' => 'business',
'address' =>
array (
'street_line1' => user()->companies()->first()->address_line_1,
'street_line2' => user()->companies()->first()->address_line_2,
'region' => '',
'postcode' => user()->companies()->first()->postcode,
'city' => user()->companies()->first()->city,
'country' => 'GB',
),
)
);
Soon as the response is sent back from Revoult I want to be able to grab that data and do what I want with it, how can one achieve this?
Hi, at first, thank you for your work !
I'm trying to use your code to connect my Revolut account.
All's working fine on the first connect (i list my accounts successfully), but when i refresh my webpage, using the same code (code is persistant through GET), i can see an error 500 on my webpage, and in apache logs.
PHP Fatal error: Uncaught League\OAuth2\Client\Provider\Exception\IdentityProviderException: Incorrect request token in /var/www/erp/revolut/vendor/vdbelt/oauth2-revolut/src/Provider/Revolut.php:98\nStack trace:\n#0 /var/www/erp/revolut/vendor/league/oauth2-client/src/Provider/AbstractProvider.php(628): League\OAuth2\Client\Provider\Revolut->checkResponse(Object(GuzzleHttp\Psr7\Response), Array)\n#1 /var/www/erp/revolut/vendor/league/oauth2-client/src/Provider/AbstractProvider.php(537): League\OAuth2\Client\Provider\AbstractProvider->getParsedResponse(Object(GuzzleHttp\Psr7\Request))\n#2 /var/www/erp/revolut/vendor/vdbelt/oauth2-revolut/src/Provider/Revolut.php(144): League\OAuth2\Client\Provider\AbstractProvider->getAccessToken(Object(League\OAuth2\Client\Grant\AuthorizationCode), Array)\n#3 /var/www/erp/revolut/oauth.php(14): League\OAuth2\Client\Provider\Revolut->getAccessToken('authorization_c...', Array)\n#4 {main}\n thrown in /var/www/erp/revolut/vendor/vdbelt/oauth2-revolut/src/Provider/Revolut.php on line 98
So, when i authenticate, i am redirected to this php page, and i can get accounts.
When i refresh this same webpage ($_GET["code"] is still here), i get this error.
Any help ?
Thanks !
require "vendor/autoload.php";
$authProvider = new \RevolutPHP\Auth\Provider([
'clientId' => 'myclientid', // As shown when uploading your key
'privateKey' => 'myprivatekey,
'redirectUri' => 'myredirecturi(to this webpage)', // The URL to redirect the user to after the authorisation step
'isSandbox' => false
]);if($_GET["code"]=='') {
$url = $authProvider->getAuthorizationUrl();
header("location:".$url);
}$accessToken = $authProvider->getAccessToken('authorization_code', ['code' => $_GET['code']]);
use RevolutPHP\Client;
$client = new Client($accessToken);
$accounts = $client->accounts->all();print_r($accounts);
According to the packagist notes, this package should work for PHP >= 7.0. However, the sub-package lcobucci/jwt prevents installation above 7.0, as below:
Problem 1
- lcobucci/jwt[3.3.0, ..., 3.4.x-dev] require php ^5.6 || ^7.0 -> your php version (8.0.1) does not satisfy that requirement.
- sverraest/revolut-php dev-master requires vdbelt/oauth2-revolut ^1.0 -> satisfiable by vdbelt/oauth2-revolut[v1.0, v1.0.1, v1.0.2, v1.
0.3].
- vdbelt/oauth2-revolut v1.0.3 requires lcobucci/jwt ^3.4.5 -> satisfiable by lcobucci/jwt[3.4.5, 3.4.6, 3.4.x-dev].
- vdbelt/oauth2-revolut v1.0.2 requires lcobucci/jwt ^3.3.1 -> satisfiable by lcobucci/jwt[3.3.1, ..., 3.4.x-dev].
- vdbelt/oauth2-revolut[v1.0, ..., v1.0.1] require lcobucci/jwt ^3.3 -> satisfiable by lcobucci/jwt[3.3.0, ..., 3.4.x-dev].
- Root composer.json requires sverraest/revolut-php dev-master -> satisfiable by sverraest/revolut-php[dev-master].
Would appreciate a fix or clarification. Thanks!
Revolut disabled API keys on 3 February 2020. Will there be an update for this package to authenticate via OAuth?
Hello.
Did you check creation counterparty on working account? Very strange that it does not work.
$client->counterparties->create(['company_name' => 'RS PREHODNI DAVČNI PODRAČUN', 'bank_country' => 'SI' , 'currency' => 'EUR',
'address' => ['street_line1' => 'Gregorčičeva ulica 20', 'street_line2' => '1000 Ljubljana'],
'iban' => 'SI56011008883000073', 'bic' => 'BSLJSI2X']);
sends:
Authorization: Bearer oa_prod_qofi3bp****
User-Agent: GuzzleHttp/6.5.5 curl/7.72.0 PHP/7.3.21
Content-Type: application/json
Content-Length: 232
{"company_name":"RS PREHODNI DAV\u010cNI PODRA\u010cUN","bank_country":"SI","currency":"EUR","address":{"street_line1":"Gregor\u010di\u010deva ulica 20","street_line2":"1000 Ljubljana"},"iban":"SI56011008883000073","bic":"BSLJSI2X"}
Revolut responses: {"message":"Required 'country' is missing","code":3000}
I tried
curl -X POST https://b2b.revolut.com/api/1.0/counterparty
-H "Authorization: Bearer oa_prod_qof***"
-H "User-Agent: GuzzleHttp/6.5.5 curl/7.72.0 PHP/7.3.21"
-H "Content-Type: application/json"
--data @- << EOF
{"company_name":"RS PREHODNI DAV\u010cNI PODRA\u010cUN","bank_country":"SI","currency":"EUR","address":{"street_line1":"Gregor\u010di\u010deva ulica 20","street_line2":"1000 Ljubljana"},"iban":"SI56011008883000073","bic":"BSLJSI2X"}
EOF
Result is the same.
But this one works!
curl -X POST https://b2b.revolut.com/api/1.0/counterparty
-H "Authorization: Bearer oa_prod_li***"
--data @- << EOF
{
"company_name": "RS PREHODNI DAVČNI PODRAČUN",
"bank_country": "SI",
"currency": "EUR",
"iban": "SI56011008883000073",
"bic": "BSLJSI2X",
"address": {
"street_line1": "Gregorčičeva ulica 20",
"street_line2": "1000 Ljubljana",
"postcode": "1000",
"city": "Ljubljana",
"country": "SI"
}
}
EOF
The difference only in new line as I see.
The similar sitation with payment.
Fatal error: Uncaught League\OAuth2\Client\Provider\Exception\IdentityProviderException: The Token can't be used before Fri Jun 12 10:08:12 UTC 2020. in C:\wamp64\www\revolt\vendor\vdbelt\oauth2-revolut\src\Provider\Revolut.php on line 98
I getting this error ..how to solve . my timezone is IST
Hello
$client->payments->create($p_arr);
Client error: resulted in a response: {"message":"Required 'profile id' is missing","code":2101}
There is no field 'profile id'. :(((
Hello,
I am interested in this package. I was looking for the "Rates" feature but it's missing from the stable version 1.1.1. When will you make a release with features from master?
Is there anything I can do to have another stable version of this library? Thanks!
Hi, we've been using your package to sync Revolut transactions into our system for a while now. Our application is built on top of Laravel 7. Laravel 7 is now deprecated (https://laravelversions.com/7), and we are switching to Laravel 8. Problem emerges from Laravel 8's requirement of Guzzle 7 (https://laravel.com/docs/8.x/upgrade#updating-dependencies) and we cannot upgrade any time soon unless we replace your package which might prove to be a lot more work than we estimated. Since Guzzle 7 is already in version 7.2, do you plan on supporting it?
It did work but now im getting the following:
Error
Class "Lcobucci\JWT\Configuration" not found
at vendor/vdbelt/oauth2-revolut/src/Provider/Revolut.php:134
130▕ */
131▕ public function getAccessToken($grant, array $options = [])
132▕ {
133▕ $time = new DateTimeImmutable();
➜ 134▕ $config = Configuration::forSymmetricSigner(new Sha256(), $this->getPrivateKey());
135▕
136▕ $token = $config->builder()
137▕ ->issuedBy(parse_url($this->redirectUri, PHP_URL_HOST))
138▕ ->permittedFor('https://revolut.com')
1 app/Console/Commands/RevolutGet.php:133
League\OAuth2\Client\Provider\Revolut::getAccessToken()
2 app/Console/Commands/RevolutGet.php:108
App\Console\Commands\RevolutGet::generateNewToken()
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.