{"id":16355174,"url":"https://github.com/valicm/commerce_exchanger","last_synced_at":"2026-02-13T02:41:05.452Z","repository":{"id":72462244,"uuid":"210169009","full_name":"valicm/commerce_exchanger","owner":"valicm","description":"Currency exchange rates module for Drupal Commerce Core.","archived":false,"fork":false,"pushed_at":"2025-02-18T21:20:34.000Z","size":114,"stargazers_count":0,"open_issues_count":1,"forks_count":1,"subscribers_count":1,"default_branch":"2.0.x","last_synced_at":"2025-12-20T07:35:52.964Z","etag":null,"topics":["currency-exchange-rates","drupal","drupal-commerce","drupal8-module","exchange-rates"],"latest_commit_sha":null,"homepage":"https://www.drupal.org/project/commerce_exchanger","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/valicm.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2019-09-22T15:21:52.000Z","updated_at":"2025-02-18T21:20:38.000Z","dependencies_parsed_at":"2024-11-07T18:06:38.709Z","dependency_job_id":"4bd37d5d-9acd-4291-ae0e-9b3217697918","html_url":"https://github.com/valicm/commerce_exchanger","commit_stats":null,"previous_names":[],"tags_count":12,"template":false,"template_full_name":null,"purl":"pkg:github/valicm/commerce_exchanger","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/valicm%2Fcommerce_exchanger","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/valicm%2Fcommerce_exchanger/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/valicm%2Fcommerce_exchanger/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/valicm%2Fcommerce_exchanger/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/valicm","download_url":"https://codeload.github.com/valicm/commerce_exchanger/tar.gz/refs/heads/2.0.x","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/valicm%2Fcommerce_exchanger/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29393702,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-13T00:53:09.511Z","status":"online","status_checked_at":"2026-02-13T02:00:10.076Z","response_time":78,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["currency-exchange-rates","drupal","drupal-commerce","drupal8-module","exchange-rates"],"created_at":"2024-10-11T01:39:38.601Z","updated_at":"2026-02-13T02:41:05.426Z","avatar_url":"https://github.com/valicm.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"CONTENTS OF THIS FILE\n---------------------\n* Introduction\n* Requirements\n* Installation\n* Configuration\n* Custom exchange rates\n* Plugin system\n* Maintainers\n\nINTRODUCTION\n------------\n\nCurrency exchange rates module for Drupal Commerce 2.\n\nFeatures\n1. Manual or remote exchange rates sources.\n2. Built for Commerce 2\n3. Exchange rates stored in dedicated database table.\n4. Provide default price conversion calculator service.\n5. Plugin based system.\n6. Integration with Commerce Currency Resolver module\n7. Store rates in historical table per each day.\n\nBuiltin exchange rates plugins are:\n1. Manual plugin\n2. TransferWise\n2. Fixer (free and paid)\n3. Currencylayer (free and paid)\n3. European Central Bank\n\n\nREQUIREMENTS\n------------\nThis module requires Drupal Commerce 2 and it's submodule price.\n\n\nINSTALLATION\n------------\nInstall the Commerce Exchanger module as you would normally install\nany Drupal contrib module.\nVisit https://www.drupal.org/node/1897420 for further information.\n\n\nCONFIGURATION\n--------------\n    1. Navigate to Administration \u003e Extend and enable the Commerce Exchanger\n       module.\n    2. Navigate to Home \u003e Administration \u003e Commerce \u003e Configuration\n                   \u003e Exchange rates.\n\nCUSTOM EXCHANGE RATES\n--------------\nFor any provider (manual or remote) you can trough UI\noverwrite any ratio for any currency. Once you enable manually\nentered value, this one is going to be ignored from regular sync.\n\nIf you want to directly fill database table, skipping default cron,\nyou can use service `commerce_exchanger.manager` and method\n`\\Drupal\\commerce_exchanger\\ExchangerManager::setLatest`.\n\nEven it's advisable that you write your own plugin if you need additional\ncustomization.\n\nPLUGIN SYSTEM\n--------------\nSee examples of implementation for external providers inside plugin namespace.\n`\\Drupal\\commerce_exchanger\\Plugin\\Commerce\\ExchangerProvider\\`\n\nSee `\\Drupal\\commerce_exchanger\\Annotation\\CommerceExchangerProvider`\nfor available properties on CommerceExchangerProvider annotation plugin type.\n\nIn most cases it would be enough to make proper annotation type\nand implement two functions inside your plugin:\n`ExchangerProviderRemoteInterface::apiUrl`\n`ExchangerProviderRemoteInterface::getRemoteData`\n\nNote that function `getRemoteData()` should return array keyed as examples\nbelow. If you follow that format, you don't need to implement anything more\nin your plugin.\n\n```\n['HRK' =\u003e '1.3', 'USD' =\u003e '1.666']\n```\n\nor\n\n```\n['base' =\u003e 'USD', 'rates' =\u003e ['HRK' =\u003e '1.3', 'EUR' =\u003e '1.666']]\n```\n\nEither format will work.\n\nPLUGIN EXAMPLES\n--------------\nhttps://www.drupal.org/project/commerce_exchanger_hnb\nhttps://www.drupal.org/project/commerce_exchanger_nbu\n\nPLUGIN ANNOTATION\n--------------\nAll options `\\Drupal\\commerce_exchanger\\Annotation\\CommerceExchangerProvider`\n\nSome specifics to single out:\n\n**base_currency**\n\nWhen external source locked to single currency source (as ECB).\nIf you use this annotation, enterprise mode is not available,\nand exchange rates always calculated as cross conversion\nbetween non default currencies.\n\n**transform_rates**\n\nUsually most of the exchange rate providers are giving ratio based\non base currency. Like 1 EUR = 1.116 USD, and you get data in json as\n```\n[\n    {\n        \"rate\": 1.166,\n        \"source\": \"EUR\",\n        \"target\": \"USD\",\n        \"time\": \"2018-08-31T10:43:31+0000\"\n    }\n]\n```\n\nBut some of them are doing reverse.\n```\n[\n    {\n        \"rate\": 0.84,\n        \"source\": \"EUR\",\n        \"target\": \"USD\",\n        \"time\": \"2018-08-31T10:43:31+0000\"\n    }\n]\n```\nIn these cases you need us `transform_mode = TRUE` annotation on your plugin.\n\nMAINTAINERS\n-----------\n\nThe 8.x-1.x branch was created by:\n\n * https://www.drupal.org/u/valic\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvalicm%2Fcommerce_exchanger","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvalicm%2Fcommerce_exchanger","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvalicm%2Fcommerce_exchanger/lists"}