Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message
Agents
adyen/php-api-library
claude-code
cursor
adyen

This is the Adyen PHP API Library, providing PHP developers with an easy way to interact with the Adyen API. The library is a wrapper around the Adyen API, with services and models generated from OpenAPI specifications.

Install
php artisan boost:add-skill adyen/php-api-library

Save this content to: AGENTS.md

## Overview

This is the Adyen PHP API Library, providing PHP developers with an easy way to interact with the Adyen API. The library is a wrapper around the Adyen API, with services and models generated from OpenAPI specifications.

## Code Generation

A significant portion of this library, particularly the API services and models, is automatically generated.

- **Engine**: We use [OpenAPI Generator](https://openapi-generator.tech/) with custom [Mustache](https://mustache.github.io/) templates to convert Adyen's OpenAPI specifications into PHP code.
- **Templates**: The custom templates are located in the `/templates` directory. These templates are tailored to generate models and services that integrate with our custom HTTP client and overall library structure.
- **Automation**:
    - **Centralized**: The primary generation process is managed in a separate repository, [`adyen-sdk-automation`](https://github.com/Adyen/adyen-sdk-automation). Changes to the OpenAPI specs trigger a GitHub workflow in that repository, which generates the code and opens Pull Requests in this library.
    - **Local**: For development and testing, you must use the [`adyen-sdk-automation`](https://github.com/Adyen/adyen-sdk-automation) repository.

### Local Code Generation

To test new features or changes to the templates, you must run the generation process from a local clone of the `adyen-sdk-automation` repository.

1.  **Clone the automation repository**:
    ```bash
    git clone https://github.com/Adyen/adyen-sdk-automation.git
    ```

2.  **Link this library**: The automation project needs to target your local clone of `adyen-php-api-library`. From inside the `adyen-sdk-automation` directory, run the following commands. This will replace the `php/repo` directory with a symlink to your local project. For example, if you cloned both repositories in the same parent directory:
    ```bash
    rm -rf php/repo
    ln -s ../adyen-php-api-library php/repo
    ```

3.  **Run the generator**: You can now run the Gradle commands to generate code.
    - **To generate all services for the PHP library**:
      ```bash
      ./gradlew :php:services
      ```
    - **To generate a single service (e.g., Checkout)**:
      ```bash
      ./gradlew :php:checkout
      ```
    - **To clean the repository before generating**:
      ```bash
      ./gradlew :php:cleanRepo :php:checkout
      ```

## Core Components

- **`Adyen\Client`**: The main class for configuring the library (API key, environment, etc.) and making API calls. It acts as the entry point for accessing different services.
- **`Adyen\HttpClient\ClientInterface`**: An interface for the HTTP client, allowing developers to inject their own client implementation.
- **`Adyen\HttpClient\CurlClient`**: The default HTTP client implementation using cURL.
- **`Adyen\Service\*`**: This directory contains the generated service classes (e.g., `Checkout`, `Management`) that expose methods for specific API endpoints.
- **`Adyen\Model\*`**: This directory contains the generated model classes used for request and response data structures, ensuring type safety and easier object construction.

## Development Workflow

This project uses [Composer](https://getcomposer.org/) for dependency management and [PHPUnit](https://phpunit.de/) for testing.

### Setup

To install the library and its development dependencies, run:
```bash
composer install
```

### Running Tests

You can run the unit tests using the following command:
```bash
vendor/bin/phpunit --testsuite unit
```
This command executes the test suite defined in `phpunit.xml`. For some tests to pass, you may need to configure your test credentials in `tests/config/test.ini`, as described in the main `README.md`.

## Release Process

The release process is automated via GitHub Actions. When a release is triggered:
1.  A script determines the next version number (major, minor, or patch).
2.  The `src/Adyen/Client.php` and `README.md` are updated.
3.  A pull request is created with the version bump for review.
4.  Once merged, a GitHub release is created, and the new version is published to [Packagist](https://packagist.org/packages/adyen/php-api-library).

Overview

This is the Adyen PHP API Library, providing PHP developers with an easy way to interact with the Adyen API. The library is a wrapper around the Adyen API, with services and models generated from OpenAPI specifications.

Code Generation

A significant portion of this library, particularly the API services and models, is automatically generated.

  • Engine: We use OpenAPI Generator with custom Mustache templates to convert Adyen's OpenAPI specifications into PHP code.
  • Templates: The custom templates are located in the /templates directory. These templates are tailored to generate models and services that integrate with our custom HTTP client and overall library structure.
  • Automation:
    • Centralized: The primary generation process is managed in a separate repository, adyen-sdk-automation. Changes to the OpenAPI specs trigger a GitHub workflow in that repository, which generates the code and opens Pull Requests in this library.
    • Local: For development and testing, you must use the adyen-sdk-automation repository.

Local Code Generation

To test new features or changes to the templates, you must run the generation process from a local clone of the adyen-sdk-automation repository.

  1. Clone the automation repository:

    git clone https://github.com/Adyen/adyen-sdk-automation.git
    
  2. Link this library: The automation project needs to target your local clone of adyen-php-api-library. From inside the adyen-sdk-automation directory, run the following commands. This will replace the php/repo directory with a symlink to your local project. For example, if you cloned both repositories in the same parent directory:

    rm -rf php/repo
    ln -s ../adyen-php-api-library php/repo
    
  3. Run the generator: You can now run the Gradle commands to generate code.

    • To generate all services for the PHP library:
      ./gradlew :php:services
      
    • To generate a single service (e.g., Checkout):
      ./gradlew :php:checkout
      
    • To clean the repository before generating:
      ./gradlew :php:cleanRepo :php:checkout
      

Core Components

  • Adyen\Client: The main class for configuring the library (API key, environment, etc.) and making API calls. It acts as the entry point for accessing different services.
  • Adyen\HttpClient\ClientInterface: An interface for the HTTP client, allowing developers to inject their own client implementation.
  • Adyen\HttpClient\CurlClient: The default HTTP client implementation using cURL.
  • Adyen\Service\*: This directory contains the generated service classes (e.g., Checkout, Management) that expose methods for specific API endpoints.
  • Adyen\Model\*: This directory contains the generated model classes used for request and response data structures, ensuring type safety and easier object construction.

Development Workflow

This project uses Composer for dependency management and PHPUnit for testing.

Setup

To install the library and its development dependencies, run:

composer install

Running Tests

You can run the unit tests using the following command:

vendor/bin/phpunit --testsuite unit

This command executes the test suite defined in phpunit.xml. For some tests to pass, you may need to configure your test credentials in tests/config/test.ini, as described in the main README.md.

Release Process

The release process is automated via GitHub Actions. When a release is triggered:

  1. A script determines the next version number (major, minor, or patch).
  2. The src/Adyen/Client.php and README.md are updated.
  3. A pull request is created with the version bump for review.
  4. Once merged, a GitHub release is created, and the new version is published to Packagist.
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
shitoudev/permissionmanager
johannesclimacus/laravel-tui
hocvt/seotools
vitalybaev/sypexgeo
amphibee/themosis-ignition
gito-me/fast-excel
frankyso/laravel-ipaymu
geolize-studio/laravel-chile
boomerangui/chat
jinas/dhivatar
store-doc/laravel-storage-driver
plus-it/laravel-translation-manager
diephp/perhaps
diephp/telegraph
osmaviation/spreadsheet
microsoft/fluentui-system-icons
mmccook/php-json-canonicalization-scheme
middlewares/firewall
qubiqx/montapacking
nyoncode/laravel-package-console