{"id":20607544,"url":"https://github.com/monei/monei-php-sdk","last_synced_at":"2025-04-15T03:55:24.984Z","repository":{"id":43319861,"uuid":"296653938","full_name":"MONEI/monei-php-sdk","owner":"MONEI","description":"MONEI php SDK","archived":false,"fork":false,"pushed_at":"2025-03-14T17:37:23.000Z","size":1934,"stargazers_count":3,"open_issues_count":2,"forks_count":3,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-15T03:55:17.486Z","etag":null,"topics":["laravel","monei-api","payments","php","sdk"],"latest_commit_sha":null,"homepage":"https://docs.monei.com","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/MONEI.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-09-18T15:04:05.000Z","updated_at":"2025-03-14T17:37:26.000Z","dependencies_parsed_at":"2023-02-17T23:16:09.897Z","dependency_job_id":"70c9a712-df0a-412f-9104-802cfd296234","html_url":"https://github.com/MONEI/monei-php-sdk","commit_stats":{"total_commits":74,"total_committers":3,"mean_commits":"24.666666666666668","dds":"0.21621621621621623","last_synced_commit":"e2558aba658f21b06f0d3766fa6c07599ca09595"},"previous_names":[],"tags_count":44,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MONEI%2Fmonei-php-sdk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MONEI%2Fmonei-php-sdk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MONEI%2Fmonei-php-sdk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MONEI%2Fmonei-php-sdk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MONEI","download_url":"https://codeload.github.com/MONEI/monei-php-sdk/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249003952,"owners_count":21196794,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["laravel","monei-api","payments","php","sdk"],"created_at":"2024-11-16T10:07:48.507Z","updated_at":"2025-04-15T03:55:24.973Z","avatar_url":"https://github.com/MONEI.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# MONEI PHP SDK\n\n[![Latest Stable Version](https://img.shields.io/packagist/v/monei/monei-php-sdk.svg)](https://packagist.org/packages/monei/monei-php-sdk)\n[![Total Downloads](https://img.shields.io/packagist/dt/monei/monei-php-sdk.svg)](https://packagist.org/packages/monei/monei-php-sdk)\n[![License](https://img.shields.io/packagist/l/monei/monei-php-sdk.svg)](https://packagist.org/packages/monei/monei-php-sdk)\n[![PHP Version](https://img.shields.io/packagist/php-v/monei/monei-php-sdk.svg)](https://packagist.org/packages/monei/monei-php-sdk)\n\nThe MONEI PHP SDK provides convenient access to the [MONEI](https://monei.com/) API from applications written in server-side PHP.\n\nFor collecting customer and payment information in the browser, use [monei.js](https://docs.monei.com/docs/monei-js-overview).\n\n## Table of Contents\n\n- [MONEI PHP SDK](#monei-php-sdk)\n  - [Table of Contents](#table-of-contents)\n  - [Requirements](#requirements)\n  - [Installation](#installation)\n  - [Basic Usage](#basic-usage)\n    - [API Keys](#api-keys)\n      - [Types of API Keys](#types-of-api-keys)\n      - [API Key Security](#api-key-security)\n    - [Test Mode](#test-mode)\n    - [Basic Client Usage](#basic-client-usage)\n  - [Payment Operations](#payment-operations)\n    - [Creating a Payment](#creating-a-payment)\n    - [Retrieving a Payment](#retrieving-a-payment)\n    - [Refunding a Payment](#refunding-a-payment)\n  - [Integration Methods](#integration-methods)\n    - [Using the Prebuilt Payment Page](#using-the-prebuilt-payment-page)\n      - [Features](#features)\n      - [Integration Flow](#integration-flow)\n  - [Webhooks](#webhooks)\n    - [Signature Verification](#signature-verification)\n    - [Handling Payment Callbacks](#handling-payment-callbacks)\n      - [Important Notes About Webhooks](#important-notes-about-webhooks)\n  - [MONEI Connect for Partners](#monei-connect-for-partners)\n    - [Account ID](#account-id)\n      - [Setting Account ID after initialization](#setting-account-id-after-initialization)\n    - [Custom User-Agent](#custom-user-agent)\n      - [Examples with Proper User-Agent Format](#examples-with-proper-user-agent-format)\n    - [Managing Multiple Merchant Accounts](#managing-multiple-merchant-accounts)\n  - [Development](#development)\n    - [Building the SDK](#building-the-sdk)\n  - [Tests](#tests)\n  - [Code Style](#code-style)\n  - [Documentation](#documentation)\n\n## Requirements\n\n- PHP 7.4 or later\n\n## Installation\n\nInstall the package using Composer:\n\n```bash\ncomposer require monei/monei-php-sdk\n```\n\nThen run `composer install`\n\n## Basic Usage\n\n### API Keys\n\nThe MONEI API uses API keys for authentication. You can obtain and manage your API keys in the [MONEI Dashboard](https://dashboard.monei.com/settings/api).\n\n#### Types of API Keys\n\nMONEI provides two types of API keys:\n\n- **Test API Keys**: Use these for development and testing. Transactions made with test API keys are not processed by real payment providers.\n- **Live API Keys**: Use these in production environments. Transactions made with live API keys are processed by real payment providers and will move actual money.\n\nEach API key has a distinct prefix that indicates its environment:\n\n- Test API keys start with `pk_test_` (e.g., `pk_test_12345abcdef`)\n- Live API keys start with `pk_live_` (e.g., `pk_live_12345abcdef`)\n\nBy checking the prefix of an API key, you can quickly determine which environment you're working in. This is especially useful when you're managing multiple projects or environments.\n\n#### API Key Security\n\nYour API keys carry significant privileges, so be sure to keep them secure:\n\n- Keep your API keys confidential and never share them in publicly accessible areas such as GitHub, client-side code, or in your frontend application.\n- Use environment variables or a secure vault to store your API keys.\n- Restrict API key access to only the IP addresses that need them.\n- Regularly rotate your API keys, especially if you suspect they may have been compromised.\n\n```php\n// Example of loading API key from environment variable (recommended)\n$apiKey = getenv('MONEI_API_KEY');\n$monei = new Monei\\MoneiClient($apiKey);\n```\n\n### Test Mode\n\nTo test your integration with MONEI, you need to switch to **test mode** using the toggle in the header of your MONEI Dashboard. When in test mode:\n\n1. Generate your test API key in [MONEI Dashboard → Settings → API Access](https://dashboard.monei.com/settings/api)\n2. Configure your payment methods in [MONEI Dashboard → Settings → Payment Methods](https://dashboard.monei.com/settings/payment-methods)\n\n**Important:** Account ID and API key generated in test mode are different from those in live (production) mode and can only be used for testing purposes.\n\nWhen using test mode, you can simulate various payment scenarios using test card numbers, Bizum phone numbers, and PayPal accounts provided in the [MONEI Testing documentation](https://docs.monei.com/docs/testing/).\n\n### Basic Client Usage\n\n```php\n\u003c?php\nrequire_once(__DIR__ . '/vendor/autoload.php');\n\nuse Monei\\Model\\CreatePaymentRequest;\nuse Monei\\Model\\PaymentCustomer;\n\n// Instantiate the client using the API key\n$monei = new Monei\\MoneiClient('YOUR_API_KEY');\n\ntry {\n    // Using request classes for better type safety and IDE autocompletion\n    $request = new CreatePaymentRequest([\n        'amount' =\u003e 1250, // 12.50€\n        'order_id' =\u003e '100100000001',\n        'currency' =\u003e 'EUR',\n        'description' =\u003e 'Items description',\n        'customer' =\u003e new PaymentCustomer([\n            'email' =\u003e 'john.doe@monei.com',\n            'name' =\u003e 'John Doe'\n        ])\n    ]);\n    \n    $result = $monei-\u003epayments-\u003ecreate($request);\n    print_r($result);\n} catch (Exception $e) {\n    echo 'Error while creating payment: ', $e-\u003egetMessage(), PHP_EOL;\n}\n?\u003e\n```\n\n## Payment Operations\n\n### Creating a Payment\n\nCreate a payment with customer information:\n\n```php\n\u003c?php\nrequire_once(__DIR__ . '/vendor/autoload.php');\n\nuse Monei\\Model\\CreatePaymentRequest;\nuse Monei\\Model\\PaymentCustomer;\nuse Monei\\Model\\PaymentBillingDetails;\nuse Monei\\Model\\Address;\n\n$monei = new Monei\\MoneiClient('YOUR_API_KEY');\n\ntry {\n    $request = new CreatePaymentRequest([\n        'amount' =\u003e 1999, // Amount in cents (19.99)\n        'order_id' =\u003e '12345',\n        'currency' =\u003e 'EUR',\n        'description' =\u003e 'Order #12345',\n        'customer' =\u003e new PaymentCustomer([\n            'email' =\u003e 'customer@example.com',\n            'name' =\u003e 'John Doe',\n            'phone' =\u003e '+34600000000'\n        ]),\n        'billing_details' =\u003e new PaymentBillingDetails([\n            'address' =\u003e new Address([\n                'line1' =\u003e '123 Main St',\n                'city' =\u003e 'Barcelona',\n                'country' =\u003e 'ES',\n                'zip' =\u003e '08001'\n            ])\n        ]),\n        'complete_url' =\u003e 'https://example.com/success',\n        'fail_url' =\u003e 'https://example.com/failure',\n        'callback_url' =\u003e 'https://example.com/webhook'\n    ]);\n    \n    $result = $monei-\u003epayments-\u003ecreate($request);\n    print_r($result);\n} catch (Exception $e) {\n    echo 'Error while creating payment: ', $e-\u003egetMessage(), PHP_EOL;\n}\n?\u003e\n```\n\n### Retrieving a Payment\n\nRetrieve an existing payment by ID:\n\n```php\n\u003c?php\nrequire_once(__DIR__ . '/vendor/autoload.php');\n\nuse Monei\\ApiException;\n\n$monei = new Monei\\MoneiClient('YOUR_API_KEY');\n\ntry {\n    $payment = $monei-\u003epayments-\u003egetPayment('pay_123456789');\n    echo \"Payment status: \" . $payment-\u003egetStatus() . PHP_EOL;\n} catch (ApiException $e) {\n    echo 'Error retrieving payment: ', $e-\u003egetMessage(), PHP_EOL;\n}\n?\u003e\n```\n\n### Refunding a Payment\n\nProcess a full or partial refund:\n\n```php\n\u003c?php\nrequire_once(__DIR__ . '/vendor/autoload.php');\n\nuse Monei\\Model\\RefundPaymentRequest;\nuse Monei\\ApiException;\n\n$monei = new Monei\\MoneiClient('YOUR_API_KEY');\n\ntry {\n    $refundRequest = new RefundPaymentRequest([\n        'amount' =\u003e 500, // Partial refund of 5.00€\n        'refund_reason' =\u003e 'Customer request'\n    ]);\n    \n    $result = $monei-\u003epayments-\u003erefund('pay_123456789', $refundRequest);\n    echo \"Refund created with ID: \" . $result-\u003egetId() . PHP_EOL;\n} catch (ApiException $e) {\n    echo 'Error refunding payment: ', $e-\u003egetMessage(), PHP_EOL;\n}\n?\u003e\n```\n\n## Integration Methods\n\n### Using the Prebuilt Payment Page\n\nMONEI Hosted Payment Page is the simplest way to securely collect payments from your customers without building your own payment form.\n\n#### Features\n\n- **Designed to remove friction** — Real-time card validation with built-in error messaging\n- **Mobile-ready** — Fully responsive design\n- **International** — Supports 13 languages\n- **Multiple payment methods** — Supports multiple payment methods including Cards, PayPal, Bizum, GooglePay, Apple Pay \u0026 Click to Pay\n- **Customization and branding** — Customizable logo, buttons and background color\n- **3D Secure** — Supports 3D Secure - SCA verification process\n- **Fraud and compliance** — Simplified PCI compliance and SCA-ready\n\nYou can customize the appearance in your MONEI Dashboard → Settings → Branding.\n\n#### Integration Flow\n\n1. **Create a payment on your server**\n\n```php\n\u003c?php\nrequire_once(__DIR__ . '/vendor/autoload.php');\n\nuse Monei\\Model\\CreatePaymentRequest;\nuse Monei\\Model\\PaymentCustomer;\n\n$monei = new Monei\\MoneiClient('YOUR_API_KEY');\n\ntry {\n    $request = new CreatePaymentRequest([\n        'amount' =\u003e 110, // Amount in cents (1.10)\n        'currency' =\u003e 'EUR',\n        'order_id' =\u003e '14379133960355',\n        'description' =\u003e 'Test Shop - #14379133960355',\n        'customer' =\u003e new PaymentCustomer([\n            'email' =\u003e 'customer@example.com'\n        ]),\n        'callback_url' =\u003e 'https://example.com/checkout/callback', // For asynchronous notifications\n        'complete_url' =\u003e 'https://example.com/checkout/complete', // Redirect after payment\n        'fail_url' =\u003e 'https://example.com/checkout/cancel' // Redirect if customer cancels\n    ]);\n    \n    $result = $monei-\u003epayments-\u003ecreate($request);\n    \n    // Redirect the customer to the payment page\n    if (isset($result-\u003egetNextAction()) \u0026\u0026 isset($result-\u003egetNextAction()-\u003egetRedirectUrl())) {\n        header('Location: ' . $result-\u003egetNextAction()-\u003egetRedirectUrl());\n        exit;\n    }\n} catch (Exception $e) {\n    echo 'Error while creating payment: ', $e-\u003egetMessage(), PHP_EOL;\n}\n?\u003e\n```\n\n2. **Redirect the customer to the payment page**\n\nAfter creating a payment, you'll receive a response with a `nextAction.redirectUrl`. Redirect your customer to this URL to show them the MONEI Hosted payment page.\n\n3. **Customer completes the payment**\n\nThe customer enters their payment information and completes any required verification steps (like 3D Secure).\n\n4. **Customer is redirected back to your website**\n\n- If the customer completes the payment, they are redirected to the `complete_url` with a `payment_id` query parameter\n- If the customer cancels, they are redirected to the `fail_url`\n\n5. **Receive asynchronous notification**\n\nMONEI sends an HTTP POST request to your `callback_url` with the payment result. This ensures you receive the payment status even if the customer closes their browser during the redirect.\n\nFor more information about the hosted payment page, visit the [MONEI Hosted Payment Page documentation](https://docs.monei.com/docs/integrations/use-prebuilt-payment-page).\n\n## Webhooks\n\nWebhooks can be configured in the [MONEI Dashboard → Settings → Webhooks](https://dashboard.monei.com/settings/webhooks).\n\n### Signature Verification\n\nWhen receiving webhooks from MONEI, you should verify the signature to ensure the request is authentic:\n\n```php\n\u003c?php\nrequire_once(__DIR__ . '/vendor/autoload.php');\n\nuse Monei\\Model\\PaymentStatus;\nuse Monei\\ApiException;\n\n$monei = new Monei\\MoneiClient('YOUR_API_KEY');\n\n// Parse raw body for signature verification\n$rawBody = file_get_contents('php://input');\n\n// Get the signature from the headers\n$signature = $_SERVER['HTTP_MONEI_SIGNATURE'] ?? '';\n\ntry {\n    // Verify the signature and get the decoded payload\n    $payload = $monei-\u003everifySignature($rawBody, $signature);\n    \n    // Process the webhook\n    $eventType = $payload-\u003etype;\n    \n    // The data field contains the Payment object\n    $payment = $payload-\u003eobject;\n    \n    // Access Payment object properties directly\n    $paymentId = $payment-\u003eid;\n    $amount = $payment-\u003eamount;\n    $currency = $payment-\u003ecurrency;\n    $status = $payment-\u003estatus;\n    \n    // Handle the event based on its type\n    switch ($eventType) {\n        case 'payment.succeeded':\n            // Handle successful payment\n            echo \"Payment {$paymentId} succeeded: \" . ($amount/100) . \" {$currency}\\n\";\n            break;\n        case 'payment.failed':\n            // Handle failed payment\n            echo \"Payment {$paymentId} failed with status: {$status}\\n\";\n            break;\n        // Handle other event types\n    }\n    \n    http_response_code(200);\n    echo json_encode(['received' =\u003e true]);\n} catch (ApiException $e) {\n    // Invalid signature\n    http_response_code(401);\n    echo json_encode(['error' =\u003e 'Invalid signature']);\n}\n?\u003e\n```\n\n### Handling Payment Callbacks\n\nMONEI sends an HTTP POST request to your `callback_url` with the payment result. This ensures you receive the payment status even if the customer closes their browser during the redirect.\n\nExample of handling the callback in a PHP script:\n\n```php\n\u003c?php\nrequire_once(__DIR__ . '/vendor/autoload.php');\n\nuse Monei\\Model\\PaymentStatus;\nuse Monei\\ApiException;\n\n$monei = new Monei\\MoneiClient('YOUR_API_KEY');\n\n// Parse raw body for signature verification\n$rawBody = file_get_contents('php://input');\n$signature = $_SERVER['HTTP_MONEI_SIGNATURE'] ?? '';\n\ntry {\n    // Verify the signature\n    $payment = $monei-\u003everifySignature($rawBody, $signature);\n    \n    // Update your order status based on the payment status\n    if ($payment-\u003estatus === PaymentStatus::SUCCEEDED) {\n        // Payment successful - fulfill the order\n        // Update your database, send confirmation email, etc.\n    } else if ($payment-\u003estatus === PaymentStatus::FAILED) {\n        // Payment failed - notify the customer\n        // Log the failure, update your database, etc.\n    } else if ($payment-\u003estatus === PaymentStatus::AUTHORIZED) {\n        // Payment is authorized but not yet captured\n        // You can capture it later\n    } else if ($payment-\u003estatus === PaymentStatus::CANCELED) {\n        // Payment was canceled\n    }\n    \n    // Acknowledge receipt of the webhook\n    http_response_code(200);\n    echo json_encode(['received' =\u003e true]);\n} catch (ApiException $e) {\n    // Invalid signature\n    http_response_code(401);\n    echo json_encode(['error' =\u003e 'Invalid signature']);\n}\n?\u003e\n```\n\n#### Important Notes About Webhooks\n\n1. Always verify the signature to ensure the webhook is coming from MONEI\n2. Use the raw request body for signature verification\n3. Return a 2xx status code to acknowledge receipt of the webhook\n4. Process webhooks asynchronously for time-consuming operations\n5. Implement idempotency to handle duplicate webhook events\n\n## MONEI Connect for Partners\n\nIf you're a partner or platform integrating with MONEI, you can act on behalf of your merchants by providing their Account ID. This is part of [MONEI Connect](https://docs.monei.com/docs/monei-connect/), which allows platforms to manage multiple merchant accounts.\n\n**Important:** When using Account ID functionality, you must:\n\n1. Use a partner API key (not a regular merchant API key)\n2. Provide a custom User-Agent to identify your platform\n\nFor more information about MONEI Connect and becoming a partner, visit the [MONEI Connect documentation](https://docs.monei.com/docs/monei-connect/).\n\n### Account ID\n\n#### Setting Account ID after initialization\n\n```php\n\u003c?php\nrequire_once(__DIR__ . '/vendor/autoload.php');\n\nuse Monei\\Model\\CreatePaymentRequest;\n\n// Initialize with your partner API key\n$monei = new Monei\\MoneiClient('YOUR_PARTNER_API_KEY');\n\n// Set a custom User-Agent for your platform (required before setting Account ID)\n$monei-\u003esetUserAgent('MONEI/YourPlatform/1.0.0');\n\n// Set Account ID to act on behalf of a merchant\n$monei-\u003esetAccountId('MERCHANT_ACCOUNT_ID');\n\n// Make API calls on behalf of the merchant\ntry {\n    $request = new CreatePaymentRequest([\n        'amount' =\u003e 1250,\n        'order_id' =\u003e '12345',\n        'currency' =\u003e 'EUR'\n    ]);\n    \n    $result = $monei-\u003epayments-\u003ecreate($request);\n    print_r($result);\n} catch (Exception $e) {\n    echo 'Error while creating payment: ', $e-\u003egetMessage(), PHP_EOL;\n}\n?\u003e\n```\n\n### Custom User-Agent\n\nWhen integrating as a MONEI Connect partner, your User-Agent should follow this format:\n\n```\nMONEI/\u003cPARTNER_NAME\u003e/\u003cVERSION\u003e\n```\n\nFor example: `MONEI/YourPlatform/1.0.0`\n\nThis format helps MONEI identify your platform in API requests and is required when using the Partner API Key.\n\n#### Examples with Proper User-Agent Format\n\n```php\n\u003c?php\n// For a platform named \"ShopManager\" with version 2.1.0\n$monei-\u003esetUserAgent('MONEI/ShopManager/2.1.0');\n\n// For a platform named \"PaymentHub\" with version 3.0.1\n$monei-\u003esetUserAgent('MONEI/PaymentHub/3.0.1');\n?\u003e\n```\n\n\u003e **Note:** When using Account ID, you must set a custom User-Agent before making any API calls. The User-Agent is validated when making API requests.\n\u003e\n\u003e **Important:** To use this feature, you need to be registered as a MONEI partner and use your partner API key. Please contact connect@monei.com to register as a partner.\n\n### Managing Multiple Merchant Accounts\n\n```php\n\u003c?php\nrequire_once(__DIR__ . '/vendor/autoload.php');\n\nuse Monei\\Model\\CreatePaymentRequest;\n\n// Initialize with your partner API key\n$monei = new Monei\\MoneiClient('YOUR_PARTNER_API_KEY');\n\n// Set a custom User-Agent for your platform\n$monei-\u003esetUserAgent('MONEI/YourPlatform/1.0.0');\n\n// Function to process payments for multiple merchants\nfunction processPaymentsForMerchants($monei, $merchantAccounts) {\n    $results = [];\n\n    foreach ($merchantAccounts as $merchantId) {\n        // Set the current merchant account\n        $monei-\u003esetAccountId($merchantId);\n\n        // Process payment for this merchant\n        try {\n            $request = new CreatePaymentRequest([\n                'amount' =\u003e 1000,\n                'order_id' =\u003e 'order-' . $merchantId . '-' . time(),\n                'currency' =\u003e 'EUR'\n            ]);\n            \n            $payment = $monei-\u003epayments-\u003ecreate($request);\n            $results[$merchantId] = [\n                'success' =\u003e true,\n                'payment' =\u003e $payment\n            ];\n        } catch (Exception $e) {\n            $results[$merchantId] = [\n                'success' =\u003e false,\n                'error' =\u003e $e-\u003egetMessage()\n            ];\n        }\n    }\n\n    return $results;\n}\n\n// Example usage\n$merchantAccounts = ['merchant_1', 'merchant_2', 'merchant_3'];\n$results = processPaymentsForMerchants($monei, $merchantAccounts);\nprint_r($results);\n?\u003e\n```\n\n## Development\n\n### Building the SDK\n\nThe SDK is built using OpenAPI Generator. To build the SDK from the OpenAPI specification:\n\n```bash\n# Install dependencies\nyarn install\n\n# Generate SDK from remote OpenAPI spec\nyarn build\n\n# Generate SDK from local OpenAPI spec\nyarn build:local\n```\n\n## Tests\n\nTo run the unit tests:\n\n```bash\ncomposer install\n./vendor/bin/phpunit\n```\n\n## Code Style\n\nThis project follows the [PSR-12](https://www.php-fig.org/psr/psr-12/) coding standard. We use [PHP CS Fixer](https://github.com/FriendsOfPHP/PHP-CS-Fixer) to enforce the coding standards.\n\nTo check the code style:\n\n```bash\ncomposer cs-check\n```\n\nTo automatically fix code style issues:\n\n```bash\ncomposer cs-fix\n```\n\n## Documentation\n\nFor the full documentation, check our [Documentation portal](https://docs.monei.com/).\n\nFor a comprehensive overview of all MONEI features and integration options, visit our [main documentation portal](https://docs.monei.com/). There you can explore guides for:\n\n- Using a prebuilt payment page with MONEI Hosted payment page\n- Building a custom checkout with MONEI UI components\n- Integrating with multiple e-commerce platforms\n- Connecting with business platforms and marketplaces","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmonei%2Fmonei-php-sdk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmonei%2Fmonei-php-sdk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmonei%2Fmonei-php-sdk/lists"}