yandex-money / yandex-money-sdk-php
Yandex.Money API SDK for PHP
Installs: 164 928
Dependents: 7
Suggesters: 0
Security: 0
Stars: 105
Watchers: 21
Forks: 43
pkg:composer/yandex-money/yandex-money-sdk-php
Requires
- php: >=5.3.0
Requires (Dev)
- phpunit/phpunit: 3.7.*
This package is not auto-updated.
Last update: 2025-10-29 04:23:49 UTC
README
PHP Yandex.Money API SDK
Requirements
PHP 5.3 or above
Links
- Yandex.Money API page: Ru, En
- sample app
Getting started
Installation
- Add "yandex-money/yandex-money-sdk-php": "3.0.*"tocomposer.jsonof your application. Or clone repo to your project.
- If you are using composer - simply use require_once 'vendor/autoload.php';otherwise paste following code// For payments from the Yandex.Money wallet require_once '/path/to/cloned/repo/lib/api.php'; // For payments from bank cards without authorization require_once '/path/to/cloned/repo/lib/external_payment.php'; 
Payments from the Yandex.Money wallet
Using Yandex.Money API requires following steps
- 
Obtain token URL and redirect user's browser to Yandex.Money service. Note: client_id,redirect_uri,client_secretare constants that you get, when register app in Yandex.Money API.use \YandexMoney\API; $auth_url = API::buildObtainTokenUrl($client_id, $redirect_uri, $scope); 
- 
After that, user fills Yandex.Money HTML form and user is redirected back to REDIRECT_URI?code=CODE.
- 
You should immediately exchange CODEwithACCESS_TOKEN.$access_token_response = API::getAccessToken($client_id, $code, $redirect_uri, $client_secret=NULL); if(property_exists($access_token_response, "error")) { // process error } $access_token = $access_token_response->access_token; 
- 
Now you can use Yandex.Money API. $api = new API($access_token); // get account info $acount_info = $api->accountInfo(); // check status // get operation history with last 3 records $operation_history = $api->operationHistory(array("records"=>3)); // check status // make request payment $request_payment = $api->requestPayment(array( "pattern_id" => "p2p", "to" => $money_wallet, "amount_due" => $amount_due, "comment" => $comment, "message" => $message, "label" => $label, )); // check status // call process payment to finish payment $process_payment = $api->processPayment(array( "request_id" => $request_payment->request_id, )); 
Payments from bank cards without authorization
- 
Fetch instantce-id(ussually only once for every client. You can store result in DB). use \YandexMoney\ExternalPayment; $response = ExternalPayment::getInstanceId($client_id); if($response->status == "success") { $instance_id = $response->instance_id; } else { // throw exception with $response->error message } 
- 
Make request payment // make instance $external_payment = ExternalPayment($instance_id); $payment_options = array( // pattern_id, etc.. ); $response = $external_payment->request($payment_options); if($response->status == "success") { $request_id = $response->request_id; } else { // throw exception with $response->message } 
- 
Process the request with process-payment. $process_options = array( "request_id" => $request_id // other params.. ); $result = $external_payment->process($process_options); // process $result according to docs 
Side notes
- Library throws exceptions in case of
- response status isn't equal 2**
- I/O error(see requests)
 
- If you register app and fill CLIENT_SECRETentry then you should provide$client_secretexplicitly where$client_secret=NULL
- You should wrap all passed boolean values in quotes(because php converts them to numbers otherwise). For example:
API($access_token).requestPayment(array( test_payment => "true", // other params ));
Running tests
- Clone this repo.
- Install composer
- Run composer install
- Make sure phpunitexecutable is present in your$PATH
- Create tests/constants.phpwithCLIENT_ID,CLIENT_SECRETandACCESS_TOKENconstants.
- Run tests phpunit --bootstrap vendor/autoload.php tests/