{"id":47672912,"url":"https://github.com/prestashop/ps_onepagecheckout","last_synced_at":"2026-04-02T13:02:37.561Z","repository":{"id":344188706,"uuid":"1173692292","full_name":"PrestaShop/ps_onepagecheckout","owner":"PrestaShop","description":"PrestaShop’s native one-page checkout module.","archived":false,"fork":false,"pushed_at":"2026-03-30T15:23:06.000Z","size":289,"stargazers_count":2,"open_issues_count":8,"forks_count":2,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-30T16:17:37.693Z","etag":null,"topics":["native-module","prestashop-module"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"afl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/PrestaShop.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-05T16:40:00.000Z","updated_at":"2026-03-30T09:48:33.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/PrestaShop/ps_onepagecheckout","commit_stats":null,"previous_names":["prestashop/ps_onepagecheckout"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/PrestaShop/ps_onepagecheckout","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PrestaShop%2Fps_onepagecheckout","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PrestaShop%2Fps_onepagecheckout/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PrestaShop%2Fps_onepagecheckout/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PrestaShop%2Fps_onepagecheckout/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/PrestaShop","download_url":"https://codeload.github.com/PrestaShop/ps_onepagecheckout/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PrestaShop%2Fps_onepagecheckout/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31306710,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-02T12:59:32.332Z","status":"ssl_error","status_checked_at":"2026-04-02T12:54:48.875Z","response_time":89,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["native-module","prestashop-module"],"created_at":"2026-04-02T13:02:25.307Z","updated_at":"2026-04-02T13:02:37.549Z","avatar_url":"https://github.com/PrestaShop.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# One-page checkout (`ps_onepagecheckout`)\n\n## About\n\n`ps_onepagecheckout` is the native PrestaShop module that provides the one-page checkout experience.\n\n\u003e [!WARNING]\n\u003e This module is under heavy development. It is not production-ready and should not be used in live environments.\n\n## Compatibility\n\nPrestaShop: `9.0.0` or later.\n\n## What the module owns\n\n- checkout process injection through `actionCheckoutBuildProcess`,\n- front office AJAX endpoints for guest initialization and address form refresh,\n- back office configuration for enabling or disabling one-page checkout,\n- checkout layout configuration assets and templates shipped by the module,\n- checkout runtime flag exposure for the order page.\n\n## Code map\n\n- [`ps_onepagecheckout.php`](./ps_onepagecheckout.php): module entry point, hook registration, runtime wiring.\n- [`src/Checkout`](./src/Checkout): checkout process, availability checks, AJAX handlers.\n- [`src/Form`](./src/Form): back office configuration form and checkout form helpers.\n- [`controllers/front`](./controllers/front): FO endpoints used by the one-page checkout runtime.\n- [`controllers/admin`](./controllers/admin): BO entry point for module configuration.\n- [`views/js`](./views/js): checkout client-side behavior.\n- [`views/templates`](./views/templates): BO templates and module-owned checkout assets.\n- [`tests/php`](./tests/php): unit and integration coverage for the module.\n\n## Contributing\n\nBefore opening a PR:\n\n1. Regenerate the module autoload when PHP classes move or are added.\n2. Rebuild front assets when changing files under `views/js`, and commit the generated bundles from `views/public` (including `.LICENSE.txt` files).\n3. Run the relevant PHP tests for the area you touched.\n4. Use the decision log and implementation rules as the source of truth for sensitive changes.\n\n## Local development\n\n### PHP autoload\n\nFrom the repository root:\n\n```bash\ncomposer dump-autoload -d\n```\n\n### Front assets\n\nFrom `ps_onepagecheckout/views`:\n\n```bash\nnpm install\n\n# Development: rebuild assets on every change under views/js\nnpm run watch\n\n# Production build: generate bundles consumed by the module\nnpm run build\n```\n\nWhen you change any file under `views/js`:\n\n- run `npm run build` to regenerate:\n  - `views/public/opc-guest-init.bundle.js`\n  - `views/public/opc-address.bundle.js`\n  - their corresponding `*.LICENSE.txt` files,\n- and commit both the source changes and the updated files in `views/public`.\n\n\u003e The CI workflow `js.yml` runs `npm run build` to ensure the assets remain buildable,\n\u003e and the shared `build-release` workflow packages the module using the files present in the repository (including the generated bundles).\n\n## Testing\n\nPHP test configuration lives in [`tests/php`](./tests/php):\n\n- unit suite: `modules/ps_onepagecheckout/tests/php/phpunit.xml`\n- integration suite: `modules/ps_onepagecheckout/tests/php/phpunit-integration.xml`\n- static analysis helpers: `modules/ps_onepagecheckout/tests/php/phpstan.sh`\n\nRun PHPUnit in the same isolated Docker environment locally and in GitHub Actions:\n\n```bash\n./scripts/run-tests.sh unit\n./scripts/run-tests.sh integration\n```\n\nThe runner expects a prepared PrestaShop checkout in `../prestashop` by default.\nOverride it with `PS_ROOT_DIR_HOST=/path/to/prestashop` when needed.\nIntegration tests provision MySQL automatically inside Docker.\n\nFor end-to-end checks, use the dedicated runbook:\n\n- [`docs/E2E_RUNBOOK.md`](./docs/E2E_RUNBOOK.md)\n\n## Project references\n\n- implementation rules: [`docs/RULES.md`](./docs/RULES.md)\n- architectural decisions: [`docs/DECISIONS.md`](./docs/DECISIONS.md)\n- contributors: [`CONTRIBUTORS.md`](./CONTRIBUTORS.md)\n\n## License\n\nThis module is released under the [Academic Free License 3.0][AFL-3.0].\n\n[AFL-3.0]: https://opensource.org/licenses/AFL-3.0\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprestashop%2Fps_onepagecheckout","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fprestashop%2Fps_onepagecheckout","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprestashop%2Fps_onepagecheckout/lists"}