├── .editorconfig ├── .gitignore ├── .styleci.yml ├── CHANGELOG.md ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── ISSUE_TEMPLATE.md ├── LICENSE.md ├── PULL_REQUEST_TEMPLATE.md ├── README.md ├── accesslint-test.html ├── composer.json ├── composer.lock ├── run-tests.sh ├── src ├── DotpayApi │ ├── Client.php │ ├── Contracts │ │ └── IRequest.php │ ├── DotpayApi.php │ ├── Requests │ │ ├── AbstractRequest.php │ │ ├── CreatePaymentLink.php │ │ └── CreateRefund.php │ ├── Response.php │ ├── UrlCreator.php │ └── Validator.php ├── DotpayManager.php ├── DotpayServiceProvider.php ├── Exceptions │ └── RequestIntegrityException.php ├── Facades │ └── Dotpay.php └── config │ └── dotpay.php └── tests ├── DotpayRefundTest.php └── DotpaySignatureTest.php /.editorconfig: -------------------------------------------------------------------------------- 1 | ; This file is for unifying the coding style for different editors and IDEs. 2 | ; More information at http://editorconfig.org 3 | 4 | root = true 5 | 6 | [*] 7 | charset = utf-8 8 | indent_size = 4 9 | indent_style = space 10 | end_of_line = lf 11 | insert_final_newline = true 12 | trim_trailing_whitespace = true 13 | 14 | [*.md] 15 | trim_trailing_whitespace = false 16 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /.idea 2 | /vendor -------------------------------------------------------------------------------- /.styleci.yml: -------------------------------------------------------------------------------- 1 | preset: psr2 2 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | All Notable changes to `dotpay` will be documented in this file. 4 | 5 | Updates should follow the [Keep a CHANGELOG](http://keepachangelog.com/) principles. 6 | 7 | ## NEXT - YYYY-MM-DD 8 | 9 | ### Added 10 | - Response class 11 | - createPayment method in DotpayManager 12 | 13 | ### Deprecated 14 | - 15 | 16 | ### Fixed 17 | - Nothing 18 | 19 | ### Removed 20 | - redirectUrl method from DotpayManager 21 | 22 | ### Security 23 | - Nothing 24 | -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Contributor Code of Conduct 2 | 3 | ## Our Pledge 4 | 5 | In the interest of fostering an open and welcoming environment, we as 6 | contributors and maintainers pledge to make participation in our project and 7 | our community a harassment-free experience for everyone, regardless of age, body 8 | size, disability, ethnicity, gender identity and expression, level of experience, 9 | nationality, personal appearance, race, religion, or sexual identity and 10 | orientation. 11 | 12 | ## Our Standards 13 | 14 | Examples of behavior that contributes to creating a positive environment 15 | include: 16 | 17 | * Using welcoming and inclusive language 18 | * Being respectful of differing viewpoints and experiences 19 | * Gracefully accepting constructive criticism 20 | * Focusing on what is best for the community 21 | * Showing empathy towards other community members 22 | 23 | Examples of unacceptable behavior by participants include: 24 | 25 | * The use of sexualized language or imagery and unwelcome sexual attention or 26 | advances 27 | * Trolling, insulting/derogatory comments, and personal or political attacks 28 | * Public or private harassment 29 | * Publishing others' private information, such as a physical or electronic 30 | address, without explicit permission 31 | * Other conduct which could reasonably be considered inappropriate in a 32 | professional setting 33 | 34 | ## Our Responsibilities 35 | 36 | Project maintainers are responsible for clarifying the standards of acceptable 37 | behavior and are expected to take appropriate and fair corrective action in 38 | response to any instances of unacceptable behavior. 39 | 40 | Project maintainers have the right and responsibility to remove, edit, or 41 | reject comments, commits, code, wiki edits, issues, and other contributions 42 | that are not aligned to this Code of Conduct, or to ban temporarily or 43 | permanently any contributor for other behaviors that they deem inappropriate, 44 | threatening, offensive, or harmful. 45 | 46 | ## Scope 47 | 48 | This Code of Conduct applies both within project spaces and in public spaces 49 | when an individual is representing the project or its community. Examples of 50 | representing a project or community include using an official project e-mail 51 | address, posting via an official social media account, or acting as an appointed 52 | representative at an online or offline event. Representation of a project may be 53 | further defined and clarified by project maintainers. 54 | 55 | ## Enforcement 56 | 57 | Instances of abusive, harassing, or otherwise unacceptable behavior may be 58 | reported by contacting the project team at `axotion@linux.pl`. All 59 | complaints will be reviewed and investigated and will result in a response that 60 | is deemed necessary and appropriate to the circumstances. The project team is 61 | obligated to maintain confidentiality with regard to the reporter of an incident. 62 | Further details of specific enforcement policies may be posted separately. 63 | 64 | Project maintainers who do not follow or enforce the Code of Conduct in good 65 | faith may face temporary or permanent repercussions as determined by other 66 | members of the project's leadership. 67 | 68 | ## Attribution 69 | 70 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, 71 | available at [http://contributor-covenant.org/version/1/4][version] 72 | 73 | [homepage]: http://contributor-covenant.org 74 | [version]: http://contributor-covenant.org/version/1/4/ 75 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing 2 | 3 | Contributions are **welcome** and will be fully **credited**. 4 | 5 | We accept contributions via Pull Requests on [Github](https://github.com/evilnet/dotpay). 6 | 7 | 8 | ## Pull Requests 9 | 10 | - **[PSR-2 Coding Standard](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-2-coding-style-guide.md)** - Check the code style with ``$ composer check-style`` and fix it with ``$ composer fix-style``. 11 | 12 | - **Add tests!** - Your patch won't be accepted if it doesn't have tests. 13 | 14 | - **Document any change in behaviour** - Make sure the `README.md` and any other relevant documentation are kept up-to-date. 15 | 16 | - **Consider our release cycle** - We try to follow [SemVer v2.0.0](http://semver.org/). Randomly breaking public APIs is not an option. 17 | 18 | - **Create feature branches** - Don't ask us to pull from your master branch. 19 | 20 | - **One pull request per feature** - If you want to do more than one thing, send multiple pull requests. 21 | 22 | - **Send coherent history** - Make sure each individual commit in your pull request is meaningful. If you had to make multiple intermediate commits while developing, please [squash them](http://www.git-scm.com/book/en/v2/Git-Tools-Rewriting-History#Changing-Multiple-Commit-Messages) before submitting. 23 | 24 | 25 | ## Running Tests 26 | 27 | ``` bash 28 | $ composer test 29 | ``` 30 | 31 | 32 | **Happy coding**! 33 | -------------------------------------------------------------------------------- /ISSUE_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | ## Detailed description 4 | 5 | Provide a detailed description of the change or addition you are proposing. 6 | 7 | Make it clear if the issue is a bug, an enhancement or just a question. 8 | 9 | ## Context 10 | 11 | Why is this change important to you? How would you use it? 12 | 13 | How can it benefit other users? 14 | 15 | ## Possible implementation 16 | 17 | Not obligatory, but suggest an idea for implementing addition or change. 18 | 19 | ## Your environment 20 | 21 | Include as many relevant details about the environment you experienced the bug in and how to reproduce it. 22 | 23 | * Version used (e.g. PHP 5.6, HHVM 3): 24 | * Operating system and version (e.g. Ubuntu 16.04, Windows 7): 25 | * Link to your project: 26 | * ... 27 | * ... 28 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | # The MIT License (MIT) 2 | 3 | Copyright (c) 2017 Axotion 4 | 5 | > Permission is hereby granted, free of charge, to any person obtaining a copy 6 | > of this software and associated documentation files (the "Software"), to deal 7 | > in the Software without restriction, including without limitation the rights 8 | > to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | > copies of the Software, and to permit persons to whom the Software is 10 | > furnished to do so, subject to the following conditions: 11 | > 12 | > The above copyright notice and this permission notice shall be included in 13 | > all copies or substantial portions of the Software. 14 | > 15 | > THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | > IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | > FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | > AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | > LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | > OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | > THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | ## Description 4 | 5 | Describe your changes in detail. 6 | 7 | ## Motivation and context 8 | 9 | Why is this change required? What problem does it solve? 10 | 11 | If it fixes an open issue, please link to the issue here (if you write `fixes #num` 12 | or `closes #num`, the issue will be automatically closed when the pull is accepted.) 13 | 14 | ## How has this been tested? 15 | 16 | Please describe in detail how you tested your changes. 17 | 18 | Include details of your testing environment, and the tests you ran to 19 | see how your change affects other areas of the code, etc. 20 | 21 | ## Screenshots (if appropriate) 22 | 23 | ## Types of changes 24 | 25 | What types of changes does your code introduce? Put an `x` in all the boxes that apply: 26 | - [ ] Bug fix (non-breaking change which fixes an issue) 27 | - [ ] New feature (non-breaking change which adds functionality) 28 | - [ ] Breaking change (fix or feature that would cause existing functionality to change) 29 | 30 | ## Checklist: 31 | 32 | Go over all the following points, and put an `x` in all the boxes that apply. 33 | 34 | Please, please, please, don't send your pull request until all of the boxes are ticked. Once your pull request is created, it will trigger a build on our [continuous integration](http://www.phptherightway.com/#continuous-integration) server to make sure your [tests and code style pass](https://help.github.com/articles/about-required-status-checks/). 35 | 36 | - [ ] I have read the **[CONTRIBUTING](CONTRIBUTING.md)** document. 37 | - [ ] My pull request addresses exactly one patch/feature. 38 | - [ ] I have created a branch for this patch/feature. 39 | - [ ] Each individual commit in the pull request is meaningful. 40 | - [ ] I have added tests to cover my changes. 41 | - [ ] If my change requires a change to the documentation, I have updated it accordingly. 42 | 43 | If you're unsure about any of these, don't hesitate to ask. We're here to help! 44 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # laravel-dotpay 2 | 3 | Paczka Dotpay do Laravela 5.x. Pozwala przesyłać dane bezpośrednio przez API zamiast formularza. 4 | 5 | [![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/axotion/laravel-dotpay/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/axotion/laravel-dotpay/?branch=master) 6 | [![Build Status](https://scrutinizer-ci.com/g/axotion/laravel-dotpay/badges/build.png?b=master)](https://scrutinizer-ci.com/g/axotion/laravel-dotpay/build-status/master) 7 | [![Latest Unstable Version](https://poser.pugx.org/evilnet/dotpay/v/unstable)](https://packagist.org/packages/evilnet/dotpay) 8 | [![License](https://poser.pugx.org/evilnet/dotpay/license)](https://packagist.org/packages/evilnet/dotpay) 9 | [![Total Downloads](https://poser.pugx.org/evilnet/dotpay/downloads)](https://packagist.org/packages/evilnet/dotpay) 10 | ## Struktura 11 | 12 | ``` 13 | src/ 14 | tests/ 15 | ``` 16 | 17 | 18 | ## Instalacja 19 | 20 | Przez composera 21 | 22 | ``` bash 23 | $ composer require evilnet/dotpay 24 | ``` 25 | 26 | lub w przypadku używania aktualnej wersji z mastera (niezalecane jeżeli chcesz używać najbardziej stabilnej wersji która została ujęta w release) dodaj do pliku composera 27 | 28 | ```json 29 | "require": { 30 | "evilnet/dotpay": "dev-master" 31 | }, 32 | 33 | ``` 34 | Potem zarejestruj usługę i ewentualnie alias by móc używać fasady w config/app.php (Niepotrzebne od Laravela 5.5 i wzwyż) 35 | 36 | 37 | ``` 38 | 'providers' => [ 39 | 40 | Evilnet\Dotpay\DotpayServiceProvider::class, 41 | 42 | 43 | 'aliases' => [ 44 | 'Dotpay' => Evilnet\Dotpay\Facades\Dotpay::class 45 | ``` 46 | 47 | 48 | Opublikuj konfguracje i wprowadź w niej potrzebne dane 49 | 50 | ``` 51 | php artisan vendor:publish --provider="Evilnet\Dotpay\DotpayServiceProvider" 52 | ``` 53 | 54 | Dodaj wartości do pliku .env 55 | 56 | ``` 57 | DOTPAY_USERNAME= 58 | DOTPAY_PASSWORD= 59 | DOTPAY_SHOP_ID= 60 | DOTPAY_PIN= 61 | DOTPAY_BASE_URL=https://ssl.dotpay.pl/test_seller/ 62 | ``` 63 | I dodaj swoją metodę do obsługi callbacku jako wyjątek w pliku VerifyCsrfToken (Potrzebne by uderzenia POST z dotpaya nie wymagały tego tokenu) 64 | 65 | ### Środowiska 66 | 67 | Produkcyjne: 68 | https://ssl.dotpay.pl/s2/login/ 69 | 70 | Testowe: 71 | https://ssl.dotpay.pl/test_seller/ 72 | 73 | 74 | ## Przykład użycia 75 | 76 | ``` php 77 | namespace App\Http\Controllers; 78 | 79 | use Evilnet\Dotpay\DotpayManager; 80 | use Illuminate\Http\Request; 81 | use Illuminate\Http\Response; 82 | 83 | class DotpayController extends Controller 84 | { 85 | 86 | private $dotpayManager; 87 | 88 | public function __construct(DotpayManager $dotpayManager) 89 | { 90 | $this->dotpayManager = $dotpayManager; 91 | } 92 | 93 | // Tutaj uderzy Dotpay z danymi o tym w jakim stanie jest transakcja. Zwrócenie OK jest wymagane by dotpay przyjął, że serwer odpowiada poprawnie 94 | 95 | public function callback(Request $request) 96 | { 97 | $response = $this->dotpayManager->callback($request->all()); 98 | 99 | //Do whatever you want with this 100 | 101 | return new Response('OK'); 102 | } 103 | 104 | public function pay() 105 | { 106 | $data = [ 107 | 'amount' => '100', 108 | 'currency' => 'PLN', 109 | 'description' => 'Payment for internal_id order', 110 | 'control' => '12345', //ID that dotpay will pong you in the answer 111 | 'language' => 'pl', 112 | 'ch_lock' => '1', 113 | 'url' => config('dotpay.options.url'), 114 | 'urlc' => config('dotpay.options.curl'), 115 | 'expiration_datetime' => '2017-12-01T16:48:00', 116 | 'payer' => [ 117 | 'first_name' => 'John', 118 | 'last_name' => 'Smith', 119 | 'email' => 'john.smith@example.com', 120 | 'phone' => '+48123123123' 121 | ], 122 | 'recipient' => config('dotpay.options.recipient') 123 | 124 | ]; 125 | 126 | return redirect()->to($this->dotpayManager->createPayment($data)); 127 | } 128 | } 129 | ``` 130 | 131 | ## Change log 132 | 133 | Please see [CHANGELOG](CHANGELOG.md) for more information on what has changed recently. 134 | 135 | ## Testing 136 | 137 | ``` bash 138 | $ phpunit vendor/evilnet/dotpay/tests 139 | ``` 140 | 141 | ## Contributing 142 | 143 | Please see [CONTRIBUTING](CONTRIBUTING.md) and [CODE_OF_CONDUCT](CODE_OF_CONDUCT.md) for details. 144 | 145 | ## Security 146 | 147 | If you discover any security related issues, please email axotion@linux.pl instead of using the issue tracker. 148 | 149 | ## Credits 150 | 151 | - [Axotion][link-author] 152 | - [All Contributors][link-contributors] 153 | 154 | ## License 155 | 156 | The MIT License (MIT). Please see [License File](LICENSE.md) for more information. 157 | 158 | [ico-version]: https://img.shields.io/packagist/v/evilnet/dotpay.svg?style=flat-square 159 | [ico-license]: https://img.shields.io/badge/license-MIT-brightgreen.svg?style=flat-square 160 | [ico-travis]: https://img.shields.io/travis/evilnet/dotpay/master.svg?style=flat-square 161 | [ico-scrutinizer]: https://img.shields.io/scrutinizer/coverage/g/evilnet/dotpay.svg?style=flat-square 162 | [ico-code-quality]: https://img.shields.io/scrutinizer/g/evilnet/dotpay.svg?style=flat-square 163 | [ico-downloads]: https://img.shields.io/packagist/dt/evilnet/dotpay.svg?style=flat-square 164 | 165 | [link-packagist]: https://packagist.org/packages/evilnet/dotpay 166 | [link-travis]: https://travis-ci.org/evilnet/dotpay 167 | [link-scrutinizer]: https://scrutinizer-ci.com/g/evilnet/dotpay/code-structure 168 | [link-code-quality]: https://scrutinizer-ci.com/g/evilnet/dotpay 169 | [link-downloads]: https://packagist.org/packages/evilnet/dotpay 170 | [link-author]: https://github.com/axotion 171 | [link-contributors]: ../../contributors 172 | -------------------------------------------------------------------------------- /accesslint-test.html: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "evilnet/dotpay", 3 | "type": "library", 4 | "description": "Package for Dotpay payments via api instead of form", 5 | "keywords": [ 6 | "Evilnet", 7 | "Dotpay", 8 | "laravel" 9 | ], 10 | "homepage": "https://github.com/Evilnet/Dotpay", 11 | "license": "MIT", 12 | "authors": [ 13 | { 14 | "name": "Axotion", 15 | "email": "axotion@linux.pl", 16 | "homepage": "https://github.com/axotion", 17 | "role": "Developer" 18 | } 19 | ], 20 | "require": { 21 | "php" : "~5.6|~7.0|~8.0", 22 | "guzzlehttp/guzzle": "^6.3 || ^7.0.1" 23 | }, 24 | "require-dev": { 25 | "phpunit/phpunit" : ">=5.4.3", 26 | "squizlabs/php_codesniffer": "^2.3" 27 | }, 28 | "autoload": { 29 | "psr-4": { 30 | "Evilnet\\Dotpay\\": "src" 31 | } 32 | }, 33 | "autoload-dev": { 34 | "psr-4": { 35 | "Evilnet\\Dotpay\\": "tests" 36 | } 37 | }, 38 | "scripts": { 39 | "test": "phpunit", 40 | "check-style": "phpcs -p --standard=PSR2 --runtime-set ignore_errors_on_exit 1 --runtime-set ignore_warnings_on_exit 1 src tests", 41 | "fix-style": "phpcbf -p --standard=PSR2 --runtime-set ignore_errors_on_exit 1 --runtime-set ignore_warnings_on_exit 1 src tests" 42 | }, 43 | "extra": { 44 | "branch-alias": { 45 | "dev-master": "1.0-dev" 46 | }, 47 | "laravel": { 48 | "providers": [ 49 | "Evilnet\\Dotpay\\DotpayServiceProvider" 50 | ], 51 | "aliases": { 52 | "Dotpay": "Evilnet\\Dotpay\\Facades\\Dotpay" 53 | } 54 | } 55 | }, 56 | "config": { 57 | "sort-packages": true 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /composer.lock: -------------------------------------------------------------------------------- 1 | { 2 | "_readme": [ 3 | "This file locks the dependencies of your project to a known state", 4 | "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", 5 | "This file is @generated automatically" 6 | ], 7 | "content-hash": "374b2d0be9ca18972be6ef0416c8c3c0", 8 | "packages": [ 9 | { 10 | "name": "doctrine/inflector", 11 | "version": "v1.3.0", 12 | "source": { 13 | "type": "git", 14 | "url": "https://github.com/doctrine/inflector.git", 15 | "reference": "5527a48b7313d15261292c149e55e26eae771b0a" 16 | }, 17 | "dist": { 18 | "type": "zip", 19 | "url": "https://api.github.com/repos/doctrine/inflector/zipball/5527a48b7313d15261292c149e55e26eae771b0a", 20 | "reference": "5527a48b7313d15261292c149e55e26eae771b0a", 21 | "shasum": "" 22 | }, 23 | "require": { 24 | "php": "^7.1" 25 | }, 26 | "require-dev": { 27 | "phpunit/phpunit": "^6.2" 28 | }, 29 | "type": "library", 30 | "extra": { 31 | "branch-alias": { 32 | "dev-master": "1.3.x-dev" 33 | } 34 | }, 35 | "autoload": { 36 | "psr-4": { 37 | "Doctrine\\Common\\Inflector\\": "lib/Doctrine/Common/Inflector" 38 | } 39 | }, 40 | "notification-url": "https://packagist.org/downloads/", 41 | "license": [ 42 | "MIT" 43 | ], 44 | "authors": [ 45 | { 46 | "name": "Roman Borschel", 47 | "email": "roman@code-factory.org" 48 | }, 49 | { 50 | "name": "Benjamin Eberlei", 51 | "email": "kontakt@beberlei.de" 52 | }, 53 | { 54 | "name": "Guilherme Blanco", 55 | "email": "guilhermeblanco@gmail.com" 56 | }, 57 | { 58 | "name": "Jonathan Wage", 59 | "email": "jonwage@gmail.com" 60 | }, 61 | { 62 | "name": "Johannes Schmitt", 63 | "email": "schmittjoh@gmail.com" 64 | } 65 | ], 66 | "description": "Common String Manipulations with regard to casing and singular/plural rules.", 67 | "homepage": "http://www.doctrine-project.org", 68 | "keywords": [ 69 | "inflection", 70 | "pluralize", 71 | "singularize", 72 | "string" 73 | ], 74 | "time": "2018-01-09T20:05:19+00:00" 75 | }, 76 | { 77 | "name": "guzzlehttp/guzzle", 78 | "version": "6.3.3", 79 | "source": { 80 | "type": "git", 81 | "url": "https://github.com/guzzle/guzzle.git", 82 | "reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba" 83 | }, 84 | "dist": { 85 | "type": "zip", 86 | "url": "https://api.github.com/repos/guzzle/guzzle/zipball/407b0cb880ace85c9b63c5f9551db498cb2d50ba", 87 | "reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba", 88 | "shasum": "" 89 | }, 90 | "require": { 91 | "guzzlehttp/promises": "^1.0", 92 | "guzzlehttp/psr7": "^1.4", 93 | "php": ">=5.5" 94 | }, 95 | "require-dev": { 96 | "ext-curl": "*", 97 | "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0", 98 | "psr/log": "^1.0" 99 | }, 100 | "suggest": { 101 | "psr/log": "Required for using the Log middleware" 102 | }, 103 | "type": "library", 104 | "extra": { 105 | "branch-alias": { 106 | "dev-master": "6.3-dev" 107 | } 108 | }, 109 | "autoload": { 110 | "files": [ 111 | "src/functions_include.php" 112 | ], 113 | "psr-4": { 114 | "GuzzleHttp\\": "src/" 115 | } 116 | }, 117 | "notification-url": "https://packagist.org/downloads/", 118 | "license": [ 119 | "MIT" 120 | ], 121 | "authors": [ 122 | { 123 | "name": "Michael Dowling", 124 | "email": "mtdowling@gmail.com", 125 | "homepage": "https://github.com/mtdowling" 126 | } 127 | ], 128 | "description": "Guzzle is a PHP HTTP client library", 129 | "homepage": "http://guzzlephp.org/", 130 | "keywords": [ 131 | "client", 132 | "curl", 133 | "framework", 134 | "http", 135 | "http client", 136 | "rest", 137 | "web service" 138 | ], 139 | "time": "2018-04-22T15:46:56+00:00" 140 | }, 141 | { 142 | "name": "guzzlehttp/promises", 143 | "version": "v1.3.1", 144 | "source": { 145 | "type": "git", 146 | "url": "https://github.com/guzzle/promises.git", 147 | "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646" 148 | }, 149 | "dist": { 150 | "type": "zip", 151 | "url": "https://api.github.com/repos/guzzle/promises/zipball/a59da6cf61d80060647ff4d3eb2c03a2bc694646", 152 | "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646", 153 | "shasum": "" 154 | }, 155 | "require": { 156 | "php": ">=5.5.0" 157 | }, 158 | "require-dev": { 159 | "phpunit/phpunit": "^4.0" 160 | }, 161 | "type": "library", 162 | "extra": { 163 | "branch-alias": { 164 | "dev-master": "1.4-dev" 165 | } 166 | }, 167 | "autoload": { 168 | "psr-4": { 169 | "GuzzleHttp\\Promise\\": "src/" 170 | }, 171 | "files": [ 172 | "src/functions_include.php" 173 | ] 174 | }, 175 | "notification-url": "https://packagist.org/downloads/", 176 | "license": [ 177 | "MIT" 178 | ], 179 | "authors": [ 180 | { 181 | "name": "Michael Dowling", 182 | "email": "mtdowling@gmail.com", 183 | "homepage": "https://github.com/mtdowling" 184 | } 185 | ], 186 | "description": "Guzzle promises library", 187 | "keywords": [ 188 | "promise" 189 | ], 190 | "time": "2016-12-20T10:07:11+00:00" 191 | }, 192 | { 193 | "name": "guzzlehttp/psr7", 194 | "version": "1.4.2", 195 | "source": { 196 | "type": "git", 197 | "url": "https://github.com/guzzle/psr7.git", 198 | "reference": "f5b8a8512e2b58b0071a7280e39f14f72e05d87c" 199 | }, 200 | "dist": { 201 | "type": "zip", 202 | "url": "https://api.github.com/repos/guzzle/psr7/zipball/f5b8a8512e2b58b0071a7280e39f14f72e05d87c", 203 | "reference": "f5b8a8512e2b58b0071a7280e39f14f72e05d87c", 204 | "shasum": "" 205 | }, 206 | "require": { 207 | "php": ">=5.4.0", 208 | "psr/http-message": "~1.0" 209 | }, 210 | "provide": { 211 | "psr/http-message-implementation": "1.0" 212 | }, 213 | "require-dev": { 214 | "phpunit/phpunit": "~4.0" 215 | }, 216 | "type": "library", 217 | "extra": { 218 | "branch-alias": { 219 | "dev-master": "1.4-dev" 220 | } 221 | }, 222 | "autoload": { 223 | "psr-4": { 224 | "GuzzleHttp\\Psr7\\": "src/" 225 | }, 226 | "files": [ 227 | "src/functions_include.php" 228 | ] 229 | }, 230 | "notification-url": "https://packagist.org/downloads/", 231 | "license": [ 232 | "MIT" 233 | ], 234 | "authors": [ 235 | { 236 | "name": "Michael Dowling", 237 | "email": "mtdowling@gmail.com", 238 | "homepage": "https://github.com/mtdowling" 239 | }, 240 | { 241 | "name": "Tobias Schultze", 242 | "homepage": "https://github.com/Tobion" 243 | } 244 | ], 245 | "description": "PSR-7 message implementation that also provides common utility methods", 246 | "keywords": [ 247 | "http", 248 | "message", 249 | "request", 250 | "response", 251 | "stream", 252 | "uri", 253 | "url" 254 | ], 255 | "time": "2017-03-20T17:10:46+00:00" 256 | }, 257 | { 258 | "name": "illuminate/contracts", 259 | "version": "v5.7.2", 260 | "source": { 261 | "type": "git", 262 | "url": "https://github.com/illuminate/contracts.git", 263 | "reference": "fd5d68eddfe49647f8354ac4c5f09cb88ccece7a" 264 | }, 265 | "dist": { 266 | "type": "zip", 267 | "url": "https://api.github.com/repos/illuminate/contracts/zipball/fd5d68eddfe49647f8354ac4c5f09cb88ccece7a", 268 | "reference": "fd5d68eddfe49647f8354ac4c5f09cb88ccece7a", 269 | "shasum": "" 270 | }, 271 | "require": { 272 | "php": "^7.1.3", 273 | "psr/container": "^1.0", 274 | "psr/simple-cache": "^1.0" 275 | }, 276 | "type": "library", 277 | "extra": { 278 | "branch-alias": { 279 | "dev-master": "5.7-dev" 280 | } 281 | }, 282 | "autoload": { 283 | "psr-4": { 284 | "Illuminate\\Contracts\\": "" 285 | } 286 | }, 287 | "notification-url": "https://packagist.org/downloads/", 288 | "license": [ 289 | "MIT" 290 | ], 291 | "authors": [ 292 | { 293 | "name": "Taylor Otwell", 294 | "email": "taylor@laravel.com" 295 | } 296 | ], 297 | "description": "The Illuminate Contracts package.", 298 | "homepage": "https://laravel.com", 299 | "time": "2018-09-05T21:56:43+00:00" 300 | }, 301 | { 302 | "name": "illuminate/support", 303 | "version": "v5.7.2", 304 | "source": { 305 | "type": "git", 306 | "url": "https://github.com/illuminate/support.git", 307 | "reference": "3dabc8fe2eebf614ba133fa34a4c160119ec7241" 308 | }, 309 | "dist": { 310 | "type": "zip", 311 | "url": "https://api.github.com/repos/illuminate/support/zipball/3dabc8fe2eebf614ba133fa34a4c160119ec7241", 312 | "reference": "3dabc8fe2eebf614ba133fa34a4c160119ec7241", 313 | "shasum": "" 314 | }, 315 | "require": { 316 | "doctrine/inflector": "^1.1", 317 | "ext-mbstring": "*", 318 | "illuminate/contracts": "5.7.*", 319 | "nesbot/carbon": "^1.26.3", 320 | "php": "^7.1.3" 321 | }, 322 | "conflict": { 323 | "tightenco/collect": "<5.5.33" 324 | }, 325 | "suggest": { 326 | "illuminate/filesystem": "Required to use the composer class (5.7.*).", 327 | "moontoast/math": "Required to use ordered UUIDs (^1.1).", 328 | "ramsey/uuid": "Required to use Str::uuid() (^3.7).", 329 | "symfony/process": "Required to use the composer class (^4.1).", 330 | "symfony/var-dumper": "Required to use the dd function (^4.1)." 331 | }, 332 | "type": "library", 333 | "extra": { 334 | "branch-alias": { 335 | "dev-master": "5.7-dev" 336 | } 337 | }, 338 | "autoload": { 339 | "psr-4": { 340 | "Illuminate\\Support\\": "" 341 | }, 342 | "files": [ 343 | "helpers.php" 344 | ] 345 | }, 346 | "notification-url": "https://packagist.org/downloads/", 347 | "license": [ 348 | "MIT" 349 | ], 350 | "authors": [ 351 | { 352 | "name": "Taylor Otwell", 353 | "email": "taylor@laravel.com" 354 | } 355 | ], 356 | "description": "The Illuminate Support package.", 357 | "homepage": "https://laravel.com", 358 | "time": "2018-09-06T13:40:39+00:00" 359 | }, 360 | { 361 | "name": "nesbot/carbon", 362 | "version": "1.33.0", 363 | "source": { 364 | "type": "git", 365 | "url": "https://github.com/briannesbitt/Carbon.git", 366 | "reference": "55667c1007a99e82030874b1bb14d24d07108413" 367 | }, 368 | "dist": { 369 | "type": "zip", 370 | "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/55667c1007a99e82030874b1bb14d24d07108413", 371 | "reference": "55667c1007a99e82030874b1bb14d24d07108413", 372 | "shasum": "" 373 | }, 374 | "require": { 375 | "php": ">=5.3.9", 376 | "symfony/translation": "~2.6 || ~3.0 || ~4.0" 377 | }, 378 | "require-dev": { 379 | "friendsofphp/php-cs-fixer": "~2", 380 | "phpunit/phpunit": "^4.8.35 || ^5.7" 381 | }, 382 | "type": "library", 383 | "extra": { 384 | "laravel": { 385 | "providers": [ 386 | "Carbon\\Laravel\\ServiceProvider" 387 | ] 388 | } 389 | }, 390 | "autoload": { 391 | "psr-4": { 392 | "": "src/" 393 | } 394 | }, 395 | "notification-url": "https://packagist.org/downloads/", 396 | "license": [ 397 | "MIT" 398 | ], 399 | "authors": [ 400 | { 401 | "name": "Brian Nesbitt", 402 | "email": "brian@nesbot.com", 403 | "homepage": "http://nesbot.com" 404 | } 405 | ], 406 | "description": "A simple API extension for DateTime.", 407 | "homepage": "http://carbon.nesbot.com", 408 | "keywords": [ 409 | "date", 410 | "datetime", 411 | "time" 412 | ], 413 | "time": "2018-08-07T08:39:47+00:00" 414 | }, 415 | { 416 | "name": "psr/container", 417 | "version": "1.0.0", 418 | "source": { 419 | "type": "git", 420 | "url": "https://github.com/php-fig/container.git", 421 | "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f" 422 | }, 423 | "dist": { 424 | "type": "zip", 425 | "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f", 426 | "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f", 427 | "shasum": "" 428 | }, 429 | "require": { 430 | "php": ">=5.3.0" 431 | }, 432 | "type": "library", 433 | "extra": { 434 | "branch-alias": { 435 | "dev-master": "1.0.x-dev" 436 | } 437 | }, 438 | "autoload": { 439 | "psr-4": { 440 | "Psr\\Container\\": "src/" 441 | } 442 | }, 443 | "notification-url": "https://packagist.org/downloads/", 444 | "license": [ 445 | "MIT" 446 | ], 447 | "authors": [ 448 | { 449 | "name": "PHP-FIG", 450 | "homepage": "http://www.php-fig.org/" 451 | } 452 | ], 453 | "description": "Common Container Interface (PHP FIG PSR-11)", 454 | "homepage": "https://github.com/php-fig/container", 455 | "keywords": [ 456 | "PSR-11", 457 | "container", 458 | "container-interface", 459 | "container-interop", 460 | "psr" 461 | ], 462 | "time": "2017-02-14T16:28:37+00:00" 463 | }, 464 | { 465 | "name": "psr/http-message", 466 | "version": "1.0.1", 467 | "source": { 468 | "type": "git", 469 | "url": "https://github.com/php-fig/http-message.git", 470 | "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" 471 | }, 472 | "dist": { 473 | "type": "zip", 474 | "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", 475 | "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", 476 | "shasum": "" 477 | }, 478 | "require": { 479 | "php": ">=5.3.0" 480 | }, 481 | "type": "library", 482 | "extra": { 483 | "branch-alias": { 484 | "dev-master": "1.0.x-dev" 485 | } 486 | }, 487 | "autoload": { 488 | "psr-4": { 489 | "Psr\\Http\\Message\\": "src/" 490 | } 491 | }, 492 | "notification-url": "https://packagist.org/downloads/", 493 | "license": [ 494 | "MIT" 495 | ], 496 | "authors": [ 497 | { 498 | "name": "PHP-FIG", 499 | "homepage": "http://www.php-fig.org/" 500 | } 501 | ], 502 | "description": "Common interface for HTTP messages", 503 | "homepage": "https://github.com/php-fig/http-message", 504 | "keywords": [ 505 | "http", 506 | "http-message", 507 | "psr", 508 | "psr-7", 509 | "request", 510 | "response" 511 | ], 512 | "time": "2016-08-06T14:39:51+00:00" 513 | }, 514 | { 515 | "name": "psr/simple-cache", 516 | "version": "1.0.1", 517 | "source": { 518 | "type": "git", 519 | "url": "https://github.com/php-fig/simple-cache.git", 520 | "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b" 521 | }, 522 | "dist": { 523 | "type": "zip", 524 | "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", 525 | "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", 526 | "shasum": "" 527 | }, 528 | "require": { 529 | "php": ">=5.3.0" 530 | }, 531 | "type": "library", 532 | "extra": { 533 | "branch-alias": { 534 | "dev-master": "1.0.x-dev" 535 | } 536 | }, 537 | "autoload": { 538 | "psr-4": { 539 | "Psr\\SimpleCache\\": "src/" 540 | } 541 | }, 542 | "notification-url": "https://packagist.org/downloads/", 543 | "license": [ 544 | "MIT" 545 | ], 546 | "authors": [ 547 | { 548 | "name": "PHP-FIG", 549 | "homepage": "http://www.php-fig.org/" 550 | } 551 | ], 552 | "description": "Common interfaces for simple caching", 553 | "keywords": [ 554 | "cache", 555 | "caching", 556 | "psr", 557 | "psr-16", 558 | "simple-cache" 559 | ], 560 | "time": "2017-10-23T01:57:42+00:00" 561 | }, 562 | { 563 | "name": "symfony/polyfill-mbstring", 564 | "version": "v1.9.0", 565 | "source": { 566 | "type": "git", 567 | "url": "https://github.com/symfony/polyfill-mbstring.git", 568 | "reference": "d0cd638f4634c16d8df4508e847f14e9e43168b8" 569 | }, 570 | "dist": { 571 | "type": "zip", 572 | "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/d0cd638f4634c16d8df4508e847f14e9e43168b8", 573 | "reference": "d0cd638f4634c16d8df4508e847f14e9e43168b8", 574 | "shasum": "" 575 | }, 576 | "require": { 577 | "php": ">=5.3.3" 578 | }, 579 | "suggest": { 580 | "ext-mbstring": "For best performance" 581 | }, 582 | "type": "library", 583 | "extra": { 584 | "branch-alias": { 585 | "dev-master": "1.9-dev" 586 | } 587 | }, 588 | "autoload": { 589 | "psr-4": { 590 | "Symfony\\Polyfill\\Mbstring\\": "" 591 | }, 592 | "files": [ 593 | "bootstrap.php" 594 | ] 595 | }, 596 | "notification-url": "https://packagist.org/downloads/", 597 | "license": [ 598 | "MIT" 599 | ], 600 | "authors": [ 601 | { 602 | "name": "Nicolas Grekas", 603 | "email": "p@tchwork.com" 604 | }, 605 | { 606 | "name": "Symfony Community", 607 | "homepage": "https://symfony.com/contributors" 608 | } 609 | ], 610 | "description": "Symfony polyfill for the Mbstring extension", 611 | "homepage": "https://symfony.com", 612 | "keywords": [ 613 | "compatibility", 614 | "mbstring", 615 | "polyfill", 616 | "portable", 617 | "shim" 618 | ], 619 | "time": "2018-08-06T14:22:27+00:00" 620 | }, 621 | { 622 | "name": "symfony/translation", 623 | "version": "v4.1.4", 624 | "source": { 625 | "type": "git", 626 | "url": "https://github.com/symfony/translation.git", 627 | "reference": "fa2182669f7983b7aa5f1a770d053f79f0ef144f" 628 | }, 629 | "dist": { 630 | "type": "zip", 631 | "url": "https://api.github.com/repos/symfony/translation/zipball/fa2182669f7983b7aa5f1a770d053f79f0ef144f", 632 | "reference": "fa2182669f7983b7aa5f1a770d053f79f0ef144f", 633 | "shasum": "" 634 | }, 635 | "require": { 636 | "php": "^7.1.3", 637 | "symfony/polyfill-mbstring": "~1.0" 638 | }, 639 | "conflict": { 640 | "symfony/config": "<3.4", 641 | "symfony/dependency-injection": "<3.4", 642 | "symfony/yaml": "<3.4" 643 | }, 644 | "require-dev": { 645 | "psr/log": "~1.0", 646 | "symfony/config": "~3.4|~4.0", 647 | "symfony/console": "~3.4|~4.0", 648 | "symfony/dependency-injection": "~3.4|~4.0", 649 | "symfony/finder": "~2.8|~3.0|~4.0", 650 | "symfony/intl": "~3.4|~4.0", 651 | "symfony/yaml": "~3.4|~4.0" 652 | }, 653 | "suggest": { 654 | "psr/log-implementation": "To use logging capability in translator", 655 | "symfony/config": "", 656 | "symfony/yaml": "" 657 | }, 658 | "type": "library", 659 | "extra": { 660 | "branch-alias": { 661 | "dev-master": "4.1-dev" 662 | } 663 | }, 664 | "autoload": { 665 | "psr-4": { 666 | "Symfony\\Component\\Translation\\": "" 667 | }, 668 | "exclude-from-classmap": [ 669 | "/Tests/" 670 | ] 671 | }, 672 | "notification-url": "https://packagist.org/downloads/", 673 | "license": [ 674 | "MIT" 675 | ], 676 | "authors": [ 677 | { 678 | "name": "Fabien Potencier", 679 | "email": "fabien@symfony.com" 680 | }, 681 | { 682 | "name": "Symfony Community", 683 | "homepage": "https://symfony.com/contributors" 684 | } 685 | ], 686 | "description": "Symfony Translation Component", 687 | "homepage": "https://symfony.com", 688 | "time": "2018-08-07T12:45:11+00:00" 689 | } 690 | ], 691 | "packages-dev": [ 692 | { 693 | "name": "doctrine/instantiator", 694 | "version": "1.1.0", 695 | "source": { 696 | "type": "git", 697 | "url": "https://github.com/doctrine/instantiator.git", 698 | "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda" 699 | }, 700 | "dist": { 701 | "type": "zip", 702 | "url": "https://api.github.com/repos/doctrine/instantiator/zipball/185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda", 703 | "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda", 704 | "shasum": "" 705 | }, 706 | "require": { 707 | "php": "^7.1" 708 | }, 709 | "require-dev": { 710 | "athletic/athletic": "~0.1.8", 711 | "ext-pdo": "*", 712 | "ext-phar": "*", 713 | "phpunit/phpunit": "^6.2.3", 714 | "squizlabs/php_codesniffer": "^3.0.2" 715 | }, 716 | "type": "library", 717 | "extra": { 718 | "branch-alias": { 719 | "dev-master": "1.2.x-dev" 720 | } 721 | }, 722 | "autoload": { 723 | "psr-4": { 724 | "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" 725 | } 726 | }, 727 | "notification-url": "https://packagist.org/downloads/", 728 | "license": [ 729 | "MIT" 730 | ], 731 | "authors": [ 732 | { 733 | "name": "Marco Pivetta", 734 | "email": "ocramius@gmail.com", 735 | "homepage": "http://ocramius.github.com/" 736 | } 737 | ], 738 | "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", 739 | "homepage": "https://github.com/doctrine/instantiator", 740 | "keywords": [ 741 | "constructor", 742 | "instantiate" 743 | ], 744 | "time": "2017-07-22T11:58:36+00:00" 745 | }, 746 | { 747 | "name": "myclabs/deep-copy", 748 | "version": "1.8.1", 749 | "source": { 750 | "type": "git", 751 | "url": "https://github.com/myclabs/DeepCopy.git", 752 | "reference": "3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8" 753 | }, 754 | "dist": { 755 | "type": "zip", 756 | "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8", 757 | "reference": "3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8", 758 | "shasum": "" 759 | }, 760 | "require": { 761 | "php": "^7.1" 762 | }, 763 | "replace": { 764 | "myclabs/deep-copy": "self.version" 765 | }, 766 | "require-dev": { 767 | "doctrine/collections": "^1.0", 768 | "doctrine/common": "^2.6", 769 | "phpunit/phpunit": "^7.1" 770 | }, 771 | "type": "library", 772 | "autoload": { 773 | "psr-4": { 774 | "DeepCopy\\": "src/DeepCopy/" 775 | }, 776 | "files": [ 777 | "src/DeepCopy/deep_copy.php" 778 | ] 779 | }, 780 | "notification-url": "https://packagist.org/downloads/", 781 | "license": [ 782 | "MIT" 783 | ], 784 | "description": "Create deep copies (clones) of your objects", 785 | "keywords": [ 786 | "clone", 787 | "copy", 788 | "duplicate", 789 | "object", 790 | "object graph" 791 | ], 792 | "time": "2018-06-11T23:09:50+00:00" 793 | }, 794 | { 795 | "name": "phar-io/manifest", 796 | "version": "1.0.3", 797 | "source": { 798 | "type": "git", 799 | "url": "https://github.com/phar-io/manifest.git", 800 | "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4" 801 | }, 802 | "dist": { 803 | "type": "zip", 804 | "url": "https://api.github.com/repos/phar-io/manifest/zipball/7761fcacf03b4d4f16e7ccb606d4879ca431fcf4", 805 | "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4", 806 | "shasum": "" 807 | }, 808 | "require": { 809 | "ext-dom": "*", 810 | "ext-phar": "*", 811 | "phar-io/version": "^2.0", 812 | "php": "^5.6 || ^7.0" 813 | }, 814 | "type": "library", 815 | "extra": { 816 | "branch-alias": { 817 | "dev-master": "1.0.x-dev" 818 | } 819 | }, 820 | "autoload": { 821 | "classmap": [ 822 | "src/" 823 | ] 824 | }, 825 | "notification-url": "https://packagist.org/downloads/", 826 | "license": [ 827 | "BSD-3-Clause" 828 | ], 829 | "authors": [ 830 | { 831 | "name": "Arne Blankerts", 832 | "email": "arne@blankerts.de", 833 | "role": "Developer" 834 | }, 835 | { 836 | "name": "Sebastian Heuer", 837 | "email": "sebastian@phpeople.de", 838 | "role": "Developer" 839 | }, 840 | { 841 | "name": "Sebastian Bergmann", 842 | "email": "sebastian@phpunit.de", 843 | "role": "Developer" 844 | } 845 | ], 846 | "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", 847 | "time": "2018-07-08T19:23:20+00:00" 848 | }, 849 | { 850 | "name": "phar-io/version", 851 | "version": "2.0.1", 852 | "source": { 853 | "type": "git", 854 | "url": "https://github.com/phar-io/version.git", 855 | "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6" 856 | }, 857 | "dist": { 858 | "type": "zip", 859 | "url": "https://api.github.com/repos/phar-io/version/zipball/45a2ec53a73c70ce41d55cedef9063630abaf1b6", 860 | "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6", 861 | "shasum": "" 862 | }, 863 | "require": { 864 | "php": "^5.6 || ^7.0" 865 | }, 866 | "type": "library", 867 | "autoload": { 868 | "classmap": [ 869 | "src/" 870 | ] 871 | }, 872 | "notification-url": "https://packagist.org/downloads/", 873 | "license": [ 874 | "BSD-3-Clause" 875 | ], 876 | "authors": [ 877 | { 878 | "name": "Arne Blankerts", 879 | "email": "arne@blankerts.de", 880 | "role": "Developer" 881 | }, 882 | { 883 | "name": "Sebastian Heuer", 884 | "email": "sebastian@phpeople.de", 885 | "role": "Developer" 886 | }, 887 | { 888 | "name": "Sebastian Bergmann", 889 | "email": "sebastian@phpunit.de", 890 | "role": "Developer" 891 | } 892 | ], 893 | "description": "Library for handling version information and constraints", 894 | "time": "2018-07-08T19:19:57+00:00" 895 | }, 896 | { 897 | "name": "phpdocumentor/reflection-common", 898 | "version": "1.0.1", 899 | "source": { 900 | "type": "git", 901 | "url": "https://github.com/phpDocumentor/ReflectionCommon.git", 902 | "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6" 903 | }, 904 | "dist": { 905 | "type": "zip", 906 | "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", 907 | "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", 908 | "shasum": "" 909 | }, 910 | "require": { 911 | "php": ">=5.5" 912 | }, 913 | "require-dev": { 914 | "phpunit/phpunit": "^4.6" 915 | }, 916 | "type": "library", 917 | "extra": { 918 | "branch-alias": { 919 | "dev-master": "1.0.x-dev" 920 | } 921 | }, 922 | "autoload": { 923 | "psr-4": { 924 | "phpDocumentor\\Reflection\\": [ 925 | "src" 926 | ] 927 | } 928 | }, 929 | "notification-url": "https://packagist.org/downloads/", 930 | "license": [ 931 | "MIT" 932 | ], 933 | "authors": [ 934 | { 935 | "name": "Jaap van Otterdijk", 936 | "email": "opensource@ijaap.nl" 937 | } 938 | ], 939 | "description": "Common reflection classes used by phpdocumentor to reflect the code structure", 940 | "homepage": "http://www.phpdoc.org", 941 | "keywords": [ 942 | "FQSEN", 943 | "phpDocumentor", 944 | "phpdoc", 945 | "reflection", 946 | "static analysis" 947 | ], 948 | "time": "2017-09-11T18:02:19+00:00" 949 | }, 950 | { 951 | "name": "phpdocumentor/reflection-docblock", 952 | "version": "4.3.0", 953 | "source": { 954 | "type": "git", 955 | "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", 956 | "reference": "94fd0001232e47129dd3504189fa1c7225010d08" 957 | }, 958 | "dist": { 959 | "type": "zip", 960 | "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/94fd0001232e47129dd3504189fa1c7225010d08", 961 | "reference": "94fd0001232e47129dd3504189fa1c7225010d08", 962 | "shasum": "" 963 | }, 964 | "require": { 965 | "php": "^7.0", 966 | "phpdocumentor/reflection-common": "^1.0.0", 967 | "phpdocumentor/type-resolver": "^0.4.0", 968 | "webmozart/assert": "^1.0" 969 | }, 970 | "require-dev": { 971 | "doctrine/instantiator": "~1.0.5", 972 | "mockery/mockery": "^1.0", 973 | "phpunit/phpunit": "^6.4" 974 | }, 975 | "type": "library", 976 | "extra": { 977 | "branch-alias": { 978 | "dev-master": "4.x-dev" 979 | } 980 | }, 981 | "autoload": { 982 | "psr-4": { 983 | "phpDocumentor\\Reflection\\": [ 984 | "src/" 985 | ] 986 | } 987 | }, 988 | "notification-url": "https://packagist.org/downloads/", 989 | "license": [ 990 | "MIT" 991 | ], 992 | "authors": [ 993 | { 994 | "name": "Mike van Riel", 995 | "email": "me@mikevanriel.com" 996 | } 997 | ], 998 | "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", 999 | "time": "2017-11-30T07:14:17+00:00" 1000 | }, 1001 | { 1002 | "name": "phpdocumentor/type-resolver", 1003 | "version": "0.4.0", 1004 | "source": { 1005 | "type": "git", 1006 | "url": "https://github.com/phpDocumentor/TypeResolver.git", 1007 | "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7" 1008 | }, 1009 | "dist": { 1010 | "type": "zip", 1011 | "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/9c977708995954784726e25d0cd1dddf4e65b0f7", 1012 | "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7", 1013 | "shasum": "" 1014 | }, 1015 | "require": { 1016 | "php": "^5.5 || ^7.0", 1017 | "phpdocumentor/reflection-common": "^1.0" 1018 | }, 1019 | "require-dev": { 1020 | "mockery/mockery": "^0.9.4", 1021 | "phpunit/phpunit": "^5.2||^4.8.24" 1022 | }, 1023 | "type": "library", 1024 | "extra": { 1025 | "branch-alias": { 1026 | "dev-master": "1.0.x-dev" 1027 | } 1028 | }, 1029 | "autoload": { 1030 | "psr-4": { 1031 | "phpDocumentor\\Reflection\\": [ 1032 | "src/" 1033 | ] 1034 | } 1035 | }, 1036 | "notification-url": "https://packagist.org/downloads/", 1037 | "license": [ 1038 | "MIT" 1039 | ], 1040 | "authors": [ 1041 | { 1042 | "name": "Mike van Riel", 1043 | "email": "me@mikevanriel.com" 1044 | } 1045 | ], 1046 | "time": "2017-07-14T14:27:02+00:00" 1047 | }, 1048 | { 1049 | "name": "phpspec/prophecy", 1050 | "version": "1.8.0", 1051 | "source": { 1052 | "type": "git", 1053 | "url": "https://github.com/phpspec/prophecy.git", 1054 | "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06" 1055 | }, 1056 | "dist": { 1057 | "type": "zip", 1058 | "url": "https://api.github.com/repos/phpspec/prophecy/zipball/4ba436b55987b4bf311cb7c6ba82aa528aac0a06", 1059 | "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06", 1060 | "shasum": "" 1061 | }, 1062 | "require": { 1063 | "doctrine/instantiator": "^1.0.2", 1064 | "php": "^5.3|^7.0", 1065 | "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0", 1066 | "sebastian/comparator": "^1.1|^2.0|^3.0", 1067 | "sebastian/recursion-context": "^1.0|^2.0|^3.0" 1068 | }, 1069 | "require-dev": { 1070 | "phpspec/phpspec": "^2.5|^3.2", 1071 | "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1" 1072 | }, 1073 | "type": "library", 1074 | "extra": { 1075 | "branch-alias": { 1076 | "dev-master": "1.8.x-dev" 1077 | } 1078 | }, 1079 | "autoload": { 1080 | "psr-0": { 1081 | "Prophecy\\": "src/" 1082 | } 1083 | }, 1084 | "notification-url": "https://packagist.org/downloads/", 1085 | "license": [ 1086 | "MIT" 1087 | ], 1088 | "authors": [ 1089 | { 1090 | "name": "Konstantin Kudryashov", 1091 | "email": "ever.zet@gmail.com", 1092 | "homepage": "http://everzet.com" 1093 | }, 1094 | { 1095 | "name": "Marcello Duarte", 1096 | "email": "marcello.duarte@gmail.com" 1097 | } 1098 | ], 1099 | "description": "Highly opinionated mocking framework for PHP 5.3+", 1100 | "homepage": "https://github.com/phpspec/prophecy", 1101 | "keywords": [ 1102 | "Double", 1103 | "Dummy", 1104 | "fake", 1105 | "mock", 1106 | "spy", 1107 | "stub" 1108 | ], 1109 | "time": "2018-08-05T17:53:17+00:00" 1110 | }, 1111 | { 1112 | "name": "phpunit/php-code-coverage", 1113 | "version": "6.0.7", 1114 | "source": { 1115 | "type": "git", 1116 | "url": "https://github.com/sebastianbergmann/php-code-coverage.git", 1117 | "reference": "865662550c384bc1db7e51d29aeda1c2c161d69a" 1118 | }, 1119 | "dist": { 1120 | "type": "zip", 1121 | "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/865662550c384bc1db7e51d29aeda1c2c161d69a", 1122 | "reference": "865662550c384bc1db7e51d29aeda1c2c161d69a", 1123 | "shasum": "" 1124 | }, 1125 | "require": { 1126 | "ext-dom": "*", 1127 | "ext-xmlwriter": "*", 1128 | "php": "^7.1", 1129 | "phpunit/php-file-iterator": "^2.0", 1130 | "phpunit/php-text-template": "^1.2.1", 1131 | "phpunit/php-token-stream": "^3.0", 1132 | "sebastian/code-unit-reverse-lookup": "^1.0.1", 1133 | "sebastian/environment": "^3.1", 1134 | "sebastian/version": "^2.0.1", 1135 | "theseer/tokenizer": "^1.1" 1136 | }, 1137 | "require-dev": { 1138 | "phpunit/phpunit": "^7.0" 1139 | }, 1140 | "suggest": { 1141 | "ext-xdebug": "^2.6.0" 1142 | }, 1143 | "type": "library", 1144 | "extra": { 1145 | "branch-alias": { 1146 | "dev-master": "6.0-dev" 1147 | } 1148 | }, 1149 | "autoload": { 1150 | "classmap": [ 1151 | "src/" 1152 | ] 1153 | }, 1154 | "notification-url": "https://packagist.org/downloads/", 1155 | "license": [ 1156 | "BSD-3-Clause" 1157 | ], 1158 | "authors": [ 1159 | { 1160 | "name": "Sebastian Bergmann", 1161 | "email": "sebastian@phpunit.de", 1162 | "role": "lead" 1163 | } 1164 | ], 1165 | "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", 1166 | "homepage": "https://github.com/sebastianbergmann/php-code-coverage", 1167 | "keywords": [ 1168 | "coverage", 1169 | "testing", 1170 | "xunit" 1171 | ], 1172 | "time": "2018-06-01T07:51:50+00:00" 1173 | }, 1174 | { 1175 | "name": "phpunit/php-file-iterator", 1176 | "version": "2.0.1", 1177 | "source": { 1178 | "type": "git", 1179 | "url": "https://github.com/sebastianbergmann/php-file-iterator.git", 1180 | "reference": "cecbc684605bb0cc288828eb5d65d93d5c676d3c" 1181 | }, 1182 | "dist": { 1183 | "type": "zip", 1184 | "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cecbc684605bb0cc288828eb5d65d93d5c676d3c", 1185 | "reference": "cecbc684605bb0cc288828eb5d65d93d5c676d3c", 1186 | "shasum": "" 1187 | }, 1188 | "require": { 1189 | "php": "^7.1" 1190 | }, 1191 | "type": "library", 1192 | "extra": { 1193 | "branch-alias": { 1194 | "dev-master": "2.0.x-dev" 1195 | } 1196 | }, 1197 | "autoload": { 1198 | "classmap": [ 1199 | "src/" 1200 | ] 1201 | }, 1202 | "notification-url": "https://packagist.org/downloads/", 1203 | "license": [ 1204 | "BSD-3-Clause" 1205 | ], 1206 | "authors": [ 1207 | { 1208 | "name": "Sebastian Bergmann", 1209 | "email": "sebastian@phpunit.de", 1210 | "role": "lead" 1211 | } 1212 | ], 1213 | "description": "FilterIterator implementation that filters files based on a list of suffixes.", 1214 | "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", 1215 | "keywords": [ 1216 | "filesystem", 1217 | "iterator" 1218 | ], 1219 | "time": "2018-06-11T11:44:00+00:00" 1220 | }, 1221 | { 1222 | "name": "phpunit/php-text-template", 1223 | "version": "1.2.1", 1224 | "source": { 1225 | "type": "git", 1226 | "url": "https://github.com/sebastianbergmann/php-text-template.git", 1227 | "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" 1228 | }, 1229 | "dist": { 1230 | "type": "zip", 1231 | "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", 1232 | "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", 1233 | "shasum": "" 1234 | }, 1235 | "require": { 1236 | "php": ">=5.3.3" 1237 | }, 1238 | "type": "library", 1239 | "autoload": { 1240 | "classmap": [ 1241 | "src/" 1242 | ] 1243 | }, 1244 | "notification-url": "https://packagist.org/downloads/", 1245 | "license": [ 1246 | "BSD-3-Clause" 1247 | ], 1248 | "authors": [ 1249 | { 1250 | "name": "Sebastian Bergmann", 1251 | "email": "sebastian@phpunit.de", 1252 | "role": "lead" 1253 | } 1254 | ], 1255 | "description": "Simple template engine.", 1256 | "homepage": "https://github.com/sebastianbergmann/php-text-template/", 1257 | "keywords": [ 1258 | "template" 1259 | ], 1260 | "time": "2015-06-21T13:50:34+00:00" 1261 | }, 1262 | { 1263 | "name": "phpunit/php-timer", 1264 | "version": "2.0.0", 1265 | "source": { 1266 | "type": "git", 1267 | "url": "https://github.com/sebastianbergmann/php-timer.git", 1268 | "reference": "8b8454ea6958c3dee38453d3bd571e023108c91f" 1269 | }, 1270 | "dist": { 1271 | "type": "zip", 1272 | "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/8b8454ea6958c3dee38453d3bd571e023108c91f", 1273 | "reference": "8b8454ea6958c3dee38453d3bd571e023108c91f", 1274 | "shasum": "" 1275 | }, 1276 | "require": { 1277 | "php": "^7.1" 1278 | }, 1279 | "require-dev": { 1280 | "phpunit/phpunit": "^7.0" 1281 | }, 1282 | "type": "library", 1283 | "extra": { 1284 | "branch-alias": { 1285 | "dev-master": "2.0-dev" 1286 | } 1287 | }, 1288 | "autoload": { 1289 | "classmap": [ 1290 | "src/" 1291 | ] 1292 | }, 1293 | "notification-url": "https://packagist.org/downloads/", 1294 | "license": [ 1295 | "BSD-3-Clause" 1296 | ], 1297 | "authors": [ 1298 | { 1299 | "name": "Sebastian Bergmann", 1300 | "email": "sebastian@phpunit.de", 1301 | "role": "lead" 1302 | } 1303 | ], 1304 | "description": "Utility class for timing", 1305 | "homepage": "https://github.com/sebastianbergmann/php-timer/", 1306 | "keywords": [ 1307 | "timer" 1308 | ], 1309 | "time": "2018-02-01T13:07:23+00:00" 1310 | }, 1311 | { 1312 | "name": "phpunit/php-token-stream", 1313 | "version": "3.0.0", 1314 | "source": { 1315 | "type": "git", 1316 | "url": "https://github.com/sebastianbergmann/php-token-stream.git", 1317 | "reference": "21ad88bbba7c3d93530d93994e0a33cd45f02ace" 1318 | }, 1319 | "dist": { 1320 | "type": "zip", 1321 | "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/21ad88bbba7c3d93530d93994e0a33cd45f02ace", 1322 | "reference": "21ad88bbba7c3d93530d93994e0a33cd45f02ace", 1323 | "shasum": "" 1324 | }, 1325 | "require": { 1326 | "ext-tokenizer": "*", 1327 | "php": "^7.1" 1328 | }, 1329 | "require-dev": { 1330 | "phpunit/phpunit": "^7.0" 1331 | }, 1332 | "type": "library", 1333 | "extra": { 1334 | "branch-alias": { 1335 | "dev-master": "3.0-dev" 1336 | } 1337 | }, 1338 | "autoload": { 1339 | "classmap": [ 1340 | "src/" 1341 | ] 1342 | }, 1343 | "notification-url": "https://packagist.org/downloads/", 1344 | "license": [ 1345 | "BSD-3-Clause" 1346 | ], 1347 | "authors": [ 1348 | { 1349 | "name": "Sebastian Bergmann", 1350 | "email": "sebastian@phpunit.de" 1351 | } 1352 | ], 1353 | "description": "Wrapper around PHP's tokenizer extension.", 1354 | "homepage": "https://github.com/sebastianbergmann/php-token-stream/", 1355 | "keywords": [ 1356 | "tokenizer" 1357 | ], 1358 | "time": "2018-02-01T13:16:43+00:00" 1359 | }, 1360 | { 1361 | "name": "phpunit/phpunit", 1362 | "version": "7.3.4", 1363 | "source": { 1364 | "type": "git", 1365 | "url": "https://github.com/sebastianbergmann/phpunit.git", 1366 | "reference": "0356331bf62896dc56e3a15030b23b73f38b2935" 1367 | }, 1368 | "dist": { 1369 | "type": "zip", 1370 | "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/0356331bf62896dc56e3a15030b23b73f38b2935", 1371 | "reference": "0356331bf62896dc56e3a15030b23b73f38b2935", 1372 | "shasum": "" 1373 | }, 1374 | "require": { 1375 | "doctrine/instantiator": "^1.1", 1376 | "ext-dom": "*", 1377 | "ext-json": "*", 1378 | "ext-libxml": "*", 1379 | "ext-mbstring": "*", 1380 | "ext-xml": "*", 1381 | "myclabs/deep-copy": "^1.7", 1382 | "phar-io/manifest": "^1.0.2", 1383 | "phar-io/version": "^2.0", 1384 | "php": "^7.1", 1385 | "phpspec/prophecy": "^1.7", 1386 | "phpunit/php-code-coverage": "^6.0.7", 1387 | "phpunit/php-file-iterator": "^2.0.1", 1388 | "phpunit/php-text-template": "^1.2.1", 1389 | "phpunit/php-timer": "^2.0", 1390 | "sebastian/comparator": "^3.0", 1391 | "sebastian/diff": "^3.0", 1392 | "sebastian/environment": "^3.1", 1393 | "sebastian/exporter": "^3.1", 1394 | "sebastian/global-state": "^2.0", 1395 | "sebastian/object-enumerator": "^3.0.3", 1396 | "sebastian/resource-operations": "^1.0", 1397 | "sebastian/version": "^2.0.1" 1398 | }, 1399 | "conflict": { 1400 | "phpunit/phpunit-mock-objects": "*" 1401 | }, 1402 | "require-dev": { 1403 | "ext-pdo": "*" 1404 | }, 1405 | "suggest": { 1406 | "ext-soap": "*", 1407 | "ext-xdebug": "*", 1408 | "phpunit/php-invoker": "^2.0" 1409 | }, 1410 | "bin": [ 1411 | "phpunit" 1412 | ], 1413 | "type": "library", 1414 | "extra": { 1415 | "branch-alias": { 1416 | "dev-master": "7.3-dev" 1417 | } 1418 | }, 1419 | "autoload": { 1420 | "classmap": [ 1421 | "src/" 1422 | ] 1423 | }, 1424 | "notification-url": "https://packagist.org/downloads/", 1425 | "license": [ 1426 | "BSD-3-Clause" 1427 | ], 1428 | "authors": [ 1429 | { 1430 | "name": "Sebastian Bergmann", 1431 | "email": "sebastian@phpunit.de", 1432 | "role": "lead" 1433 | } 1434 | ], 1435 | "description": "The PHP Unit Testing framework.", 1436 | "homepage": "https://phpunit.de/", 1437 | "keywords": [ 1438 | "phpunit", 1439 | "testing", 1440 | "xunit" 1441 | ], 1442 | "time": "2018-09-05T09:58:53+00:00" 1443 | }, 1444 | { 1445 | "name": "sebastian/code-unit-reverse-lookup", 1446 | "version": "1.0.1", 1447 | "source": { 1448 | "type": "git", 1449 | "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", 1450 | "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18" 1451 | }, 1452 | "dist": { 1453 | "type": "zip", 1454 | "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", 1455 | "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", 1456 | "shasum": "" 1457 | }, 1458 | "require": { 1459 | "php": "^5.6 || ^7.0" 1460 | }, 1461 | "require-dev": { 1462 | "phpunit/phpunit": "^5.7 || ^6.0" 1463 | }, 1464 | "type": "library", 1465 | "extra": { 1466 | "branch-alias": { 1467 | "dev-master": "1.0.x-dev" 1468 | } 1469 | }, 1470 | "autoload": { 1471 | "classmap": [ 1472 | "src/" 1473 | ] 1474 | }, 1475 | "notification-url": "https://packagist.org/downloads/", 1476 | "license": [ 1477 | "BSD-3-Clause" 1478 | ], 1479 | "authors": [ 1480 | { 1481 | "name": "Sebastian Bergmann", 1482 | "email": "sebastian@phpunit.de" 1483 | } 1484 | ], 1485 | "description": "Looks up which function or method a line of code belongs to", 1486 | "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", 1487 | "time": "2017-03-04T06:30:41+00:00" 1488 | }, 1489 | { 1490 | "name": "sebastian/comparator", 1491 | "version": "3.0.2", 1492 | "source": { 1493 | "type": "git", 1494 | "url": "https://github.com/sebastianbergmann/comparator.git", 1495 | "reference": "5de4fc177adf9bce8df98d8d141a7559d7ccf6da" 1496 | }, 1497 | "dist": { 1498 | "type": "zip", 1499 | "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/5de4fc177adf9bce8df98d8d141a7559d7ccf6da", 1500 | "reference": "5de4fc177adf9bce8df98d8d141a7559d7ccf6da", 1501 | "shasum": "" 1502 | }, 1503 | "require": { 1504 | "php": "^7.1", 1505 | "sebastian/diff": "^3.0", 1506 | "sebastian/exporter": "^3.1" 1507 | }, 1508 | "require-dev": { 1509 | "phpunit/phpunit": "^7.1" 1510 | }, 1511 | "type": "library", 1512 | "extra": { 1513 | "branch-alias": { 1514 | "dev-master": "3.0-dev" 1515 | } 1516 | }, 1517 | "autoload": { 1518 | "classmap": [ 1519 | "src/" 1520 | ] 1521 | }, 1522 | "notification-url": "https://packagist.org/downloads/", 1523 | "license": [ 1524 | "BSD-3-Clause" 1525 | ], 1526 | "authors": [ 1527 | { 1528 | "name": "Jeff Welch", 1529 | "email": "whatthejeff@gmail.com" 1530 | }, 1531 | { 1532 | "name": "Volker Dusch", 1533 | "email": "github@wallbash.com" 1534 | }, 1535 | { 1536 | "name": "Bernhard Schussek", 1537 | "email": "bschussek@2bepublished.at" 1538 | }, 1539 | { 1540 | "name": "Sebastian Bergmann", 1541 | "email": "sebastian@phpunit.de" 1542 | } 1543 | ], 1544 | "description": "Provides the functionality to compare PHP values for equality", 1545 | "homepage": "https://github.com/sebastianbergmann/comparator", 1546 | "keywords": [ 1547 | "comparator", 1548 | "compare", 1549 | "equality" 1550 | ], 1551 | "time": "2018-07-12T15:12:46+00:00" 1552 | }, 1553 | { 1554 | "name": "sebastian/diff", 1555 | "version": "3.0.1", 1556 | "source": { 1557 | "type": "git", 1558 | "url": "https://github.com/sebastianbergmann/diff.git", 1559 | "reference": "366541b989927187c4ca70490a35615d3fef2dce" 1560 | }, 1561 | "dist": { 1562 | "type": "zip", 1563 | "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/366541b989927187c4ca70490a35615d3fef2dce", 1564 | "reference": "366541b989927187c4ca70490a35615d3fef2dce", 1565 | "shasum": "" 1566 | }, 1567 | "require": { 1568 | "php": "^7.1" 1569 | }, 1570 | "require-dev": { 1571 | "phpunit/phpunit": "^7.0", 1572 | "symfony/process": "^2 || ^3.3 || ^4" 1573 | }, 1574 | "type": "library", 1575 | "extra": { 1576 | "branch-alias": { 1577 | "dev-master": "3.0-dev" 1578 | } 1579 | }, 1580 | "autoload": { 1581 | "classmap": [ 1582 | "src/" 1583 | ] 1584 | }, 1585 | "notification-url": "https://packagist.org/downloads/", 1586 | "license": [ 1587 | "BSD-3-Clause" 1588 | ], 1589 | "authors": [ 1590 | { 1591 | "name": "Kore Nordmann", 1592 | "email": "mail@kore-nordmann.de" 1593 | }, 1594 | { 1595 | "name": "Sebastian Bergmann", 1596 | "email": "sebastian@phpunit.de" 1597 | } 1598 | ], 1599 | "description": "Diff implementation", 1600 | "homepage": "https://github.com/sebastianbergmann/diff", 1601 | "keywords": [ 1602 | "diff", 1603 | "udiff", 1604 | "unidiff", 1605 | "unified diff" 1606 | ], 1607 | "time": "2018-06-10T07:54:39+00:00" 1608 | }, 1609 | { 1610 | "name": "sebastian/environment", 1611 | "version": "3.1.0", 1612 | "source": { 1613 | "type": "git", 1614 | "url": "https://github.com/sebastianbergmann/environment.git", 1615 | "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5" 1616 | }, 1617 | "dist": { 1618 | "type": "zip", 1619 | "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/cd0871b3975fb7fc44d11314fd1ee20925fce4f5", 1620 | "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5", 1621 | "shasum": "" 1622 | }, 1623 | "require": { 1624 | "php": "^7.0" 1625 | }, 1626 | "require-dev": { 1627 | "phpunit/phpunit": "^6.1" 1628 | }, 1629 | "type": "library", 1630 | "extra": { 1631 | "branch-alias": { 1632 | "dev-master": "3.1.x-dev" 1633 | } 1634 | }, 1635 | "autoload": { 1636 | "classmap": [ 1637 | "src/" 1638 | ] 1639 | }, 1640 | "notification-url": "https://packagist.org/downloads/", 1641 | "license": [ 1642 | "BSD-3-Clause" 1643 | ], 1644 | "authors": [ 1645 | { 1646 | "name": "Sebastian Bergmann", 1647 | "email": "sebastian@phpunit.de" 1648 | } 1649 | ], 1650 | "description": "Provides functionality to handle HHVM/PHP environments", 1651 | "homepage": "http://www.github.com/sebastianbergmann/environment", 1652 | "keywords": [ 1653 | "Xdebug", 1654 | "environment", 1655 | "hhvm" 1656 | ], 1657 | "time": "2017-07-01T08:51:00+00:00" 1658 | }, 1659 | { 1660 | "name": "sebastian/exporter", 1661 | "version": "3.1.0", 1662 | "source": { 1663 | "type": "git", 1664 | "url": "https://github.com/sebastianbergmann/exporter.git", 1665 | "reference": "234199f4528de6d12aaa58b612e98f7d36adb937" 1666 | }, 1667 | "dist": { 1668 | "type": "zip", 1669 | "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/234199f4528de6d12aaa58b612e98f7d36adb937", 1670 | "reference": "234199f4528de6d12aaa58b612e98f7d36adb937", 1671 | "shasum": "" 1672 | }, 1673 | "require": { 1674 | "php": "^7.0", 1675 | "sebastian/recursion-context": "^3.0" 1676 | }, 1677 | "require-dev": { 1678 | "ext-mbstring": "*", 1679 | "phpunit/phpunit": "^6.0" 1680 | }, 1681 | "type": "library", 1682 | "extra": { 1683 | "branch-alias": { 1684 | "dev-master": "3.1.x-dev" 1685 | } 1686 | }, 1687 | "autoload": { 1688 | "classmap": [ 1689 | "src/" 1690 | ] 1691 | }, 1692 | "notification-url": "https://packagist.org/downloads/", 1693 | "license": [ 1694 | "BSD-3-Clause" 1695 | ], 1696 | "authors": [ 1697 | { 1698 | "name": "Jeff Welch", 1699 | "email": "whatthejeff@gmail.com" 1700 | }, 1701 | { 1702 | "name": "Volker Dusch", 1703 | "email": "github@wallbash.com" 1704 | }, 1705 | { 1706 | "name": "Bernhard Schussek", 1707 | "email": "bschussek@2bepublished.at" 1708 | }, 1709 | { 1710 | "name": "Sebastian Bergmann", 1711 | "email": "sebastian@phpunit.de" 1712 | }, 1713 | { 1714 | "name": "Adam Harvey", 1715 | "email": "aharvey@php.net" 1716 | } 1717 | ], 1718 | "description": "Provides the functionality to export PHP variables for visualization", 1719 | "homepage": "http://www.github.com/sebastianbergmann/exporter", 1720 | "keywords": [ 1721 | "export", 1722 | "exporter" 1723 | ], 1724 | "time": "2017-04-03T13:19:02+00:00" 1725 | }, 1726 | { 1727 | "name": "sebastian/global-state", 1728 | "version": "2.0.0", 1729 | "source": { 1730 | "type": "git", 1731 | "url": "https://github.com/sebastianbergmann/global-state.git", 1732 | "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4" 1733 | }, 1734 | "dist": { 1735 | "type": "zip", 1736 | "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", 1737 | "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", 1738 | "shasum": "" 1739 | }, 1740 | "require": { 1741 | "php": "^7.0" 1742 | }, 1743 | "require-dev": { 1744 | "phpunit/phpunit": "^6.0" 1745 | }, 1746 | "suggest": { 1747 | "ext-uopz": "*" 1748 | }, 1749 | "type": "library", 1750 | "extra": { 1751 | "branch-alias": { 1752 | "dev-master": "2.0-dev" 1753 | } 1754 | }, 1755 | "autoload": { 1756 | "classmap": [ 1757 | "src/" 1758 | ] 1759 | }, 1760 | "notification-url": "https://packagist.org/downloads/", 1761 | "license": [ 1762 | "BSD-3-Clause" 1763 | ], 1764 | "authors": [ 1765 | { 1766 | "name": "Sebastian Bergmann", 1767 | "email": "sebastian@phpunit.de" 1768 | } 1769 | ], 1770 | "description": "Snapshotting of global state", 1771 | "homepage": "http://www.github.com/sebastianbergmann/global-state", 1772 | "keywords": [ 1773 | "global state" 1774 | ], 1775 | "time": "2017-04-27T15:39:26+00:00" 1776 | }, 1777 | { 1778 | "name": "sebastian/object-enumerator", 1779 | "version": "3.0.3", 1780 | "source": { 1781 | "type": "git", 1782 | "url": "https://github.com/sebastianbergmann/object-enumerator.git", 1783 | "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5" 1784 | }, 1785 | "dist": { 1786 | "type": "zip", 1787 | "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/7cfd9e65d11ffb5af41198476395774d4c8a84c5", 1788 | "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5", 1789 | "shasum": "" 1790 | }, 1791 | "require": { 1792 | "php": "^7.0", 1793 | "sebastian/object-reflector": "^1.1.1", 1794 | "sebastian/recursion-context": "^3.0" 1795 | }, 1796 | "require-dev": { 1797 | "phpunit/phpunit": "^6.0" 1798 | }, 1799 | "type": "library", 1800 | "extra": { 1801 | "branch-alias": { 1802 | "dev-master": "3.0.x-dev" 1803 | } 1804 | }, 1805 | "autoload": { 1806 | "classmap": [ 1807 | "src/" 1808 | ] 1809 | }, 1810 | "notification-url": "https://packagist.org/downloads/", 1811 | "license": [ 1812 | "BSD-3-Clause" 1813 | ], 1814 | "authors": [ 1815 | { 1816 | "name": "Sebastian Bergmann", 1817 | "email": "sebastian@phpunit.de" 1818 | } 1819 | ], 1820 | "description": "Traverses array structures and object graphs to enumerate all referenced objects", 1821 | "homepage": "https://github.com/sebastianbergmann/object-enumerator/", 1822 | "time": "2017-08-03T12:35:26+00:00" 1823 | }, 1824 | { 1825 | "name": "sebastian/object-reflector", 1826 | "version": "1.1.1", 1827 | "source": { 1828 | "type": "git", 1829 | "url": "https://github.com/sebastianbergmann/object-reflector.git", 1830 | "reference": "773f97c67f28de00d397be301821b06708fca0be" 1831 | }, 1832 | "dist": { 1833 | "type": "zip", 1834 | "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/773f97c67f28de00d397be301821b06708fca0be", 1835 | "reference": "773f97c67f28de00d397be301821b06708fca0be", 1836 | "shasum": "" 1837 | }, 1838 | "require": { 1839 | "php": "^7.0" 1840 | }, 1841 | "require-dev": { 1842 | "phpunit/phpunit": "^6.0" 1843 | }, 1844 | "type": "library", 1845 | "extra": { 1846 | "branch-alias": { 1847 | "dev-master": "1.1-dev" 1848 | } 1849 | }, 1850 | "autoload": { 1851 | "classmap": [ 1852 | "src/" 1853 | ] 1854 | }, 1855 | "notification-url": "https://packagist.org/downloads/", 1856 | "license": [ 1857 | "BSD-3-Clause" 1858 | ], 1859 | "authors": [ 1860 | { 1861 | "name": "Sebastian Bergmann", 1862 | "email": "sebastian@phpunit.de" 1863 | } 1864 | ], 1865 | "description": "Allows reflection of object attributes, including inherited and non-public ones", 1866 | "homepage": "https://github.com/sebastianbergmann/object-reflector/", 1867 | "time": "2017-03-29T09:07:27+00:00" 1868 | }, 1869 | { 1870 | "name": "sebastian/recursion-context", 1871 | "version": "3.0.0", 1872 | "source": { 1873 | "type": "git", 1874 | "url": "https://github.com/sebastianbergmann/recursion-context.git", 1875 | "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8" 1876 | }, 1877 | "dist": { 1878 | "type": "zip", 1879 | "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", 1880 | "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", 1881 | "shasum": "" 1882 | }, 1883 | "require": { 1884 | "php": "^7.0" 1885 | }, 1886 | "require-dev": { 1887 | "phpunit/phpunit": "^6.0" 1888 | }, 1889 | "type": "library", 1890 | "extra": { 1891 | "branch-alias": { 1892 | "dev-master": "3.0.x-dev" 1893 | } 1894 | }, 1895 | "autoload": { 1896 | "classmap": [ 1897 | "src/" 1898 | ] 1899 | }, 1900 | "notification-url": "https://packagist.org/downloads/", 1901 | "license": [ 1902 | "BSD-3-Clause" 1903 | ], 1904 | "authors": [ 1905 | { 1906 | "name": "Jeff Welch", 1907 | "email": "whatthejeff@gmail.com" 1908 | }, 1909 | { 1910 | "name": "Sebastian Bergmann", 1911 | "email": "sebastian@phpunit.de" 1912 | }, 1913 | { 1914 | "name": "Adam Harvey", 1915 | "email": "aharvey@php.net" 1916 | } 1917 | ], 1918 | "description": "Provides functionality to recursively process PHP variables", 1919 | "homepage": "http://www.github.com/sebastianbergmann/recursion-context", 1920 | "time": "2017-03-03T06:23:57+00:00" 1921 | }, 1922 | { 1923 | "name": "sebastian/resource-operations", 1924 | "version": "1.0.0", 1925 | "source": { 1926 | "type": "git", 1927 | "url": "https://github.com/sebastianbergmann/resource-operations.git", 1928 | "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52" 1929 | }, 1930 | "dist": { 1931 | "type": "zip", 1932 | "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", 1933 | "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", 1934 | "shasum": "" 1935 | }, 1936 | "require": { 1937 | "php": ">=5.6.0" 1938 | }, 1939 | "type": "library", 1940 | "extra": { 1941 | "branch-alias": { 1942 | "dev-master": "1.0.x-dev" 1943 | } 1944 | }, 1945 | "autoload": { 1946 | "classmap": [ 1947 | "src/" 1948 | ] 1949 | }, 1950 | "notification-url": "https://packagist.org/downloads/", 1951 | "license": [ 1952 | "BSD-3-Clause" 1953 | ], 1954 | "authors": [ 1955 | { 1956 | "name": "Sebastian Bergmann", 1957 | "email": "sebastian@phpunit.de" 1958 | } 1959 | ], 1960 | "description": "Provides a list of PHP built-in functions that operate on resources", 1961 | "homepage": "https://www.github.com/sebastianbergmann/resource-operations", 1962 | "time": "2015-07-28T20:34:47+00:00" 1963 | }, 1964 | { 1965 | "name": "sebastian/version", 1966 | "version": "2.0.1", 1967 | "source": { 1968 | "type": "git", 1969 | "url": "https://github.com/sebastianbergmann/version.git", 1970 | "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019" 1971 | }, 1972 | "dist": { 1973 | "type": "zip", 1974 | "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019", 1975 | "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019", 1976 | "shasum": "" 1977 | }, 1978 | "require": { 1979 | "php": ">=5.6" 1980 | }, 1981 | "type": "library", 1982 | "extra": { 1983 | "branch-alias": { 1984 | "dev-master": "2.0.x-dev" 1985 | } 1986 | }, 1987 | "autoload": { 1988 | "classmap": [ 1989 | "src/" 1990 | ] 1991 | }, 1992 | "notification-url": "https://packagist.org/downloads/", 1993 | "license": [ 1994 | "BSD-3-Clause" 1995 | ], 1996 | "authors": [ 1997 | { 1998 | "name": "Sebastian Bergmann", 1999 | "email": "sebastian@phpunit.de", 2000 | "role": "lead" 2001 | } 2002 | ], 2003 | "description": "Library that helps with managing the version number of Git-hosted PHP projects", 2004 | "homepage": "https://github.com/sebastianbergmann/version", 2005 | "time": "2016-10-03T07:35:21+00:00" 2006 | }, 2007 | { 2008 | "name": "squizlabs/php_codesniffer", 2009 | "version": "2.9.1", 2010 | "source": { 2011 | "type": "git", 2012 | "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", 2013 | "reference": "dcbed1074f8244661eecddfc2a675430d8d33f62" 2014 | }, 2015 | "dist": { 2016 | "type": "zip", 2017 | "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/dcbed1074f8244661eecddfc2a675430d8d33f62", 2018 | "reference": "dcbed1074f8244661eecddfc2a675430d8d33f62", 2019 | "shasum": "" 2020 | }, 2021 | "require": { 2022 | "ext-simplexml": "*", 2023 | "ext-tokenizer": "*", 2024 | "ext-xmlwriter": "*", 2025 | "php": ">=5.1.2" 2026 | }, 2027 | "require-dev": { 2028 | "phpunit/phpunit": "~4.0" 2029 | }, 2030 | "bin": [ 2031 | "scripts/phpcs", 2032 | "scripts/phpcbf" 2033 | ], 2034 | "type": "library", 2035 | "extra": { 2036 | "branch-alias": { 2037 | "dev-master": "2.x-dev" 2038 | } 2039 | }, 2040 | "autoload": { 2041 | "classmap": [ 2042 | "CodeSniffer.php", 2043 | "CodeSniffer/CLI.php", 2044 | "CodeSniffer/Exception.php", 2045 | "CodeSniffer/File.php", 2046 | "CodeSniffer/Fixer.php", 2047 | "CodeSniffer/Report.php", 2048 | "CodeSniffer/Reporting.php", 2049 | "CodeSniffer/Sniff.php", 2050 | "CodeSniffer/Tokens.php", 2051 | "CodeSniffer/Reports/", 2052 | "CodeSniffer/Tokenizers/", 2053 | "CodeSniffer/DocGenerators/", 2054 | "CodeSniffer/Standards/AbstractPatternSniff.php", 2055 | "CodeSniffer/Standards/AbstractScopeSniff.php", 2056 | "CodeSniffer/Standards/AbstractVariableSniff.php", 2057 | "CodeSniffer/Standards/IncorrectPatternException.php", 2058 | "CodeSniffer/Standards/Generic/Sniffs/", 2059 | "CodeSniffer/Standards/MySource/Sniffs/", 2060 | "CodeSniffer/Standards/PEAR/Sniffs/", 2061 | "CodeSniffer/Standards/PSR1/Sniffs/", 2062 | "CodeSniffer/Standards/PSR2/Sniffs/", 2063 | "CodeSniffer/Standards/Squiz/Sniffs/", 2064 | "CodeSniffer/Standards/Zend/Sniffs/" 2065 | ] 2066 | }, 2067 | "notification-url": "https://packagist.org/downloads/", 2068 | "license": [ 2069 | "BSD-3-Clause" 2070 | ], 2071 | "authors": [ 2072 | { 2073 | "name": "Greg Sherwood", 2074 | "role": "lead" 2075 | } 2076 | ], 2077 | "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", 2078 | "homepage": "http://www.squizlabs.com/php-codesniffer", 2079 | "keywords": [ 2080 | "phpcs", 2081 | "standards" 2082 | ], 2083 | "time": "2017-05-22T02:43:20+00:00" 2084 | }, 2085 | { 2086 | "name": "theseer/tokenizer", 2087 | "version": "1.1.0", 2088 | "source": { 2089 | "type": "git", 2090 | "url": "https://github.com/theseer/tokenizer.git", 2091 | "reference": "cb2f008f3f05af2893a87208fe6a6c4985483f8b" 2092 | }, 2093 | "dist": { 2094 | "type": "zip", 2095 | "url": "https://api.github.com/repos/theseer/tokenizer/zipball/cb2f008f3f05af2893a87208fe6a6c4985483f8b", 2096 | "reference": "cb2f008f3f05af2893a87208fe6a6c4985483f8b", 2097 | "shasum": "" 2098 | }, 2099 | "require": { 2100 | "ext-dom": "*", 2101 | "ext-tokenizer": "*", 2102 | "ext-xmlwriter": "*", 2103 | "php": "^7.0" 2104 | }, 2105 | "type": "library", 2106 | "autoload": { 2107 | "classmap": [ 2108 | "src/" 2109 | ] 2110 | }, 2111 | "notification-url": "https://packagist.org/downloads/", 2112 | "license": [ 2113 | "BSD-3-Clause" 2114 | ], 2115 | "authors": [ 2116 | { 2117 | "name": "Arne Blankerts", 2118 | "email": "arne@blankerts.de", 2119 | "role": "Developer" 2120 | } 2121 | ], 2122 | "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", 2123 | "time": "2017-04-07T12:08:54+00:00" 2124 | }, 2125 | { 2126 | "name": "webmozart/assert", 2127 | "version": "1.3.0", 2128 | "source": { 2129 | "type": "git", 2130 | "url": "https://github.com/webmozart/assert.git", 2131 | "reference": "0df1908962e7a3071564e857d86874dad1ef204a" 2132 | }, 2133 | "dist": { 2134 | "type": "zip", 2135 | "url": "https://api.github.com/repos/webmozart/assert/zipball/0df1908962e7a3071564e857d86874dad1ef204a", 2136 | "reference": "0df1908962e7a3071564e857d86874dad1ef204a", 2137 | "shasum": "" 2138 | }, 2139 | "require": { 2140 | "php": "^5.3.3 || ^7.0" 2141 | }, 2142 | "require-dev": { 2143 | "phpunit/phpunit": "^4.6", 2144 | "sebastian/version": "^1.0.1" 2145 | }, 2146 | "type": "library", 2147 | "extra": { 2148 | "branch-alias": { 2149 | "dev-master": "1.3-dev" 2150 | } 2151 | }, 2152 | "autoload": { 2153 | "psr-4": { 2154 | "Webmozart\\Assert\\": "src/" 2155 | } 2156 | }, 2157 | "notification-url": "https://packagist.org/downloads/", 2158 | "license": [ 2159 | "MIT" 2160 | ], 2161 | "authors": [ 2162 | { 2163 | "name": "Bernhard Schussek", 2164 | "email": "bschussek@gmail.com" 2165 | } 2166 | ], 2167 | "description": "Assertions to validate method input/output with nice error messages.", 2168 | "keywords": [ 2169 | "assert", 2170 | "check", 2171 | "validate" 2172 | ], 2173 | "time": "2018-01-29T19:49:41+00:00" 2174 | } 2175 | ], 2176 | "aliases": [], 2177 | "minimum-stability": "stable", 2178 | "stability-flags": [], 2179 | "prefer-stable": false, 2180 | "prefer-lowest": false, 2181 | "platform": { 2182 | "php": "~5.6|~7.0" 2183 | }, 2184 | "platform-dev": [] 2185 | } 2186 | -------------------------------------------------------------------------------- /run-tests.sh: -------------------------------------------------------------------------------- 1 | phpunit tests/ 2 | -------------------------------------------------------------------------------- /src/DotpayApi/Client.php: -------------------------------------------------------------------------------- 1 | username = $username; 39 | $this->password = $password; 40 | $this->base_url = $base_url; 41 | $this->client = new \GuzzleHttp\Client(); 42 | } 43 | 44 | /** 45 | * @param IRequest $request 46 | * @return mixed 47 | * @throws \GuzzleHttp\Exception\GuzzleException 48 | */ 49 | public function makeRequest(IRequest $request) 50 | { 51 | $options = [ 52 | 'auth' => [ 53 | $this->username, 54 | $this->password 55 | ], 56 | 'headers' => ['content-type' => 'application/json', 'Accept' => 'application/json'], 57 | 'body' => json_encode($request->toArray(), 320) 58 | ]; 59 | return json_decode($this->client->request($request->method(),$this->base_url.$request->path(), $options)->getBody()); 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /src/DotpayApi/Contracts/IRequest.php: -------------------------------------------------------------------------------- 1 | config = $config; 38 | $this->client = new Client($this->config['username'], $this->config['password'], $this->config['base_url']); 39 | $this->validator = new Validator($this->config['pin']); 40 | $this->url_creator = new UrlCreator($this->config['pin']); 41 | } 42 | 43 | /** 44 | * @param $payment 45 | * @return mixed|string 46 | * @throws \GuzzleHttp\Exception\GuzzleException 47 | */ 48 | public function createPayment($payment) 49 | { 50 | return $this->getPaymentUrl($this->client->makeRequest(new CreatePaymentLink($this->config['shop_id'], $payment))); 51 | } 52 | 53 | /** 54 | * @param $payment 55 | * @param $operation_number 56 | * @return mixed 57 | * @throws \Evilnet\Dotpay\Exceptions\RequestIntegrityException 58 | * @throws \GuzzleHttp\Exception\GuzzleException 59 | */ 60 | public function refundPayment($operation_number, $payment){ 61 | return $this->client->makeRequest(new CreateRefund($operation_number, $payment)); 62 | } 63 | 64 | /** 65 | * @param $payment 66 | * @return mixed|string 67 | */ 68 | public function getPaymentUrl($payment) 69 | { 70 | switch ($this->config['api_version']) { 71 | case 'dev': 72 | default: 73 | return $this->url_creator->getPaymentUrlWithCHK($payment); 74 | break; 75 | case 'legacy': 76 | return $this->url_creator->getPaymentUrl($payment); 77 | break; 78 | } 79 | } 80 | 81 | /** 82 | * @param $data 83 | * @return bool 84 | */ 85 | public function verifyCallback($data) 86 | { 87 | return $this->validator->verify($data); 88 | } 89 | } 90 | -------------------------------------------------------------------------------- /src/DotpayApi/Requests/AbstractRequest.php: -------------------------------------------------------------------------------- 1 | shop_id = $shop_id; 80 | 81 | foreach ($data as $key => $value) { 82 | $this->$key = $value; 83 | } 84 | } 85 | 86 | /** 87 | * @return string 88 | */ 89 | public function method() 90 | { 91 | return 'POST'; 92 | } 93 | 94 | /** 95 | * @return string 96 | */ 97 | public function path() 98 | { 99 | return 'api/v1/accounts/'.$this->shop_id.'/payment_links/'; 100 | } 101 | } 102 | -------------------------------------------------------------------------------- /src/DotpayApi/Requests/CreateRefund.php: -------------------------------------------------------------------------------- 1 | operation_number = $operation_number; 47 | 48 | foreach ($data as $key => $value) { 49 | if(!$value || is_numeric($value) && $value <= 0){ 50 | throw new RequestIntegrityException(); 51 | } 52 | $this->$key = $value; 53 | } 54 | } 55 | 56 | /** 57 | * @return string 58 | */ 59 | public function method() 60 | { 61 | return 'POST'; 62 | } 63 | 64 | /** 65 | * @return string 66 | */ 67 | public function path() 68 | { 69 | return 'api/v1/payments/'.$this->operation_number.'/refund/'; 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /src/DotpayApi/Response.php: -------------------------------------------------------------------------------- 1 | data = $data; 23 | } 24 | 25 | /** 26 | * @return mixed 27 | */ 28 | public function getControl() 29 | { 30 | return $this->data['control']; 31 | } 32 | 33 | /** 34 | * @return mixed 35 | */ 36 | public function getOperationNumber() 37 | { 38 | return $this->data['operation_number']; 39 | } 40 | 41 | /** 42 | * @return mixed 43 | */ 44 | public function getEmail() 45 | { 46 | return $this->data['email']; 47 | } 48 | 49 | /** 50 | * @return mixed 51 | */ 52 | public function getOperationAmount() 53 | { 54 | return $this->data['operation_amount']; 55 | } 56 | 57 | /** 58 | * @return mixed 59 | */ 60 | public function getOperationCurrency() 61 | { 62 | return $this->data['operation_currency']; 63 | } 64 | 65 | /** 66 | * @return mixed 67 | */ 68 | public function getOperationDateTime() 69 | { 70 | return $this->data['operation_datetime']; 71 | } 72 | 73 | /** 74 | * @return mixed 75 | */ 76 | public function getOperationStatus() 77 | { 78 | return $this->data['operation_status']; 79 | } 80 | } 81 | -------------------------------------------------------------------------------- /src/DotpayApi/UrlCreator.php: -------------------------------------------------------------------------------- 1 | pin = $pin; 23 | } 24 | 25 | /** 26 | * @param $payment 27 | * @return mixed 28 | */ 29 | public function getPaymentUrl($payment) 30 | { 31 | return $payment->payment_url; 32 | } 33 | 34 | /** 35 | * @param $payment 36 | * @return string 37 | */ 38 | public function getPaymentUrlWithCHK($payment) 39 | { 40 | return $payment->payment_url.'&chk='.hash('sha256', ($this->pin.$payment->token)); 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /src/DotpayApi/Validator.php: -------------------------------------------------------------------------------- 1 | pin = $pin; 54 | } 55 | 56 | /** 57 | * @param $data 58 | * @return bool 59 | */ 60 | public function verify($data) 61 | { 62 | $concatData = ''; 63 | foreach ($this->keys as $key) { 64 | if (isset($data[$key]) && strlen($data[$key])) { 65 | $concatData .= $data[$key]; 66 | } 67 | } 68 | $hash = hash('sha256', $this->pin . $concatData); 69 | 70 | return $data['signature'] === $hash; 71 | } 72 | } 73 | -------------------------------------------------------------------------------- /src/DotpayManager.php: -------------------------------------------------------------------------------- 1 | dotpayApi = $dotpayApi; 31 | } 32 | 33 | //It will return url for dotpay transaction 34 | 35 | /** 36 | * @param $data 37 | * @return mixed|string 38 | * @throws \GuzzleHttp\Exception\GuzzleException 39 | */ 40 | public function createPayment($data) 41 | { 42 | return $this->dotpayApi->createPayment($data); 43 | } 44 | 45 | /** 46 | * @param $operation_number 47 | * @param $data 48 | * @return mixed 49 | * @throws Exceptions\RequestIntegrityException 50 | * @throws \GuzzleHttp\Exception\GuzzleException 51 | */ 52 | public function refundPayment($operation_number, $data){ 53 | return $this->dotpayApi->refundPayment($operation_number, $data); 54 | } 55 | 56 | 57 | /** 58 | * @return mixed 59 | */ 60 | public function response() 61 | { 62 | return $this->response; 63 | } 64 | 65 | //It will listen for dotpay POST with status. We need to calculate hash and check status 66 | 67 | /** 68 | * @param array $data 69 | * @return Response 70 | */ 71 | public function callback(array $data) 72 | { 73 | if ($this->dotpayApi->verifyCallback($data)) { 74 | return new Response($data); 75 | } 76 | 77 | throw new InvalidArgumentException('invalid_hash'); 78 | } 79 | } 80 | -------------------------------------------------------------------------------- /src/DotpayServiceProvider.php: -------------------------------------------------------------------------------- 1 | publishes([ 18 | __DIR__.'/config/dotpay.php' => config_path('dotpay.php'), 19 | ]); 20 | } 21 | 22 | /** 23 | * Register any package services. 24 | * 25 | * @return void 26 | */ 27 | public function register() 28 | { 29 | $this->app->singleton(DotpayApi::class, function ($app) { 30 | return new DotpayApi($app['config']['dotpay']['api']); 31 | }); 32 | 33 | $this->app->bind('dotpay', function($app) { 34 | return new DotpayManager($app[DotpayApi::class]); 35 | }); 36 | } 37 | } -------------------------------------------------------------------------------- /src/Exceptions/RequestIntegrityException.php: -------------------------------------------------------------------------------- 1 | [ 5 | 'api_version' => 'dev', 6 | 'username' => env('DOTPAY_USERNAME'), 7 | 'password' => env('DOTPAY_PASSWORD'), 8 | 'shop_id' => env('DOTPAY_SHOP_ID'), 9 | 'pin' => env('DOTPAY_PIN'), 10 | 'base_url' => env('DOTPAY_BASE_URL') 11 | ], 12 | 'options' => [ 13 | 'url' => '127.0.0.1', 14 | 'curl' => 'callback_url', 15 | 'recipient' => [ 16 | 'company' => 'YourCompany', 17 | 'address' => [ 18 | 'street' => '', 19 | 'building_number' => '', 20 | 'postcode' => '', 21 | 'city' => "Warszawa" 22 | ] 23 | ], 24 | ] 25 | ]; 26 | -------------------------------------------------------------------------------- /tests/DotpayRefundTest.php: -------------------------------------------------------------------------------- 1 | 120, 24 | "description" => "Refund for payment", 25 | "control" => 123 26 | ] 27 | ); 28 | $this->assertTrue(isset($request)); 29 | } 30 | 31 | /** 32 | * @throws 33 | */ 34 | public function test_behavior_when_amount_is_invalid(){ 35 | $this->expectException(RequestIntegrityException::class); 36 | $request = new CreateRefund('M1006-4674', 37 | [ 38 | "amount" => -1, 39 | "description" => "Refund for payment", 40 | "control" => 123 41 | ] 42 | ); 43 | $this->assertTrue(isset($request)); 44 | } 45 | 46 | /** 47 | * @throws 48 | */ 49 | public function test_behavior_when_operation_number_is_null(){ 50 | $this->expectException(RequestIntegrityException::class); 51 | $request = new CreateRefund(null, 52 | [ 53 | "amount" => 120, 54 | "description" => "Refund for payment", 55 | "control" => 123 56 | ] 57 | ); 58 | $this->assertTrue(isset($request)); 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /tests/DotpaySignatureTest.php: -------------------------------------------------------------------------------- 1 | "12345", 16 | "operation_number" => "M0000-0000", 17 | "operation_type" => "payment", 18 | "operation_status" => "complete", 19 | "operation_amount" => "100.00", 20 | "operation_currency" => "PLN", 21 | "operation_original_amount" => "100.00", 22 | "operation_original_currency" => "PLN", 23 | "operation_datetime" => "2017-09-20 22=>12=>50", 24 | "control" => "12345", 25 | "description" => "Payment for internal_id order", 26 | "email" => "john.smith@example.com", 27 | "p_info" => "Test User (test@test.com)", 28 | "p_email" => "test@test.com", 29 | "channel" => "1", 30 | "signature" => "88be573b48612af19bf80a1bd43f7e3a219c8a6e70fd1215d596ac098b2b6733" 31 | ]; 32 | 33 | $result = $validator->verify($response); 34 | $this->assertFalse($result); 35 | } 36 | 37 | public function test_signature_fail_invalid_hash() 38 | { 39 | $pin = 12345; 40 | $validator = new Validator($pin); 41 | $response = [ 42 | "id" => "12345", 43 | "operation_number" => "M0000-0000", 44 | "operation_type" => "payment", 45 | "operation_status" => "complete", 46 | "operation_amount" => "100.00", 47 | "operation_currency" => "PLN", 48 | "operation_original_amount" => "100.00", 49 | "operation_original_currency" => "PLN", 50 | "operation_datetime" => "2017-09-20 22=>12=>50", 51 | "control" => "12345", 52 | "description" => "Payment for internal_id order", 53 | "email" => "john.smith@example.com", 54 | "p_info" => "Test User (test@test.com)", 55 | "p_email" => "test@test.com", 56 | "channel" => "1", 57 | "signature" => "dunno" 58 | ]; 59 | 60 | $result = $validator->verify($response); 61 | $this->assertFalse($result); 62 | } 63 | 64 | public function test_signature_success() 65 | { 66 | $pin = 12345; 67 | $validator = new Validator($pin); 68 | $response = [ 69 | "id" => "12345", 70 | "operation_number" => "M0000-0000", 71 | "operation_type" => "payment", 72 | "operation_status" => "complete", 73 | "operation_amount" => "100.00", 74 | "operation_currency" => "PLN", 75 | "operation_original_amount" => "100.00", 76 | "operation_original_currency" => "PLN", 77 | "operation_datetime" => "2017-09-20 22=>12=>50", 78 | "control" => "12345", 79 | "description" => "Payment for internal_id order", 80 | "email" => "john.smith@example.com", 81 | "p_info" => "Test User (test@test.com)", 82 | "p_email" => "test@test.com", 83 | "channel" => "1", 84 | "signature" => "88be573b48612af19bf80a1bd43f7e3a219c8a6e70fd1215d596ac098b2b6733" 85 | ]; 86 | 87 | $result = $validator->verify($response); 88 | $this->assertTrue($result); 89 | } 90 | } 91 | --------------------------------------------------------------------------------