{"id":16767598,"url":"https://github.com/ii64/ovopy","last_synced_at":"2026-03-11T22:42:42.745Z","repository":{"id":131280953,"uuid":"179027084","full_name":"ii64/ovopy","owner":"ii64","description":"Un-official OVO API Wrapper","archived":false,"fork":false,"pushed_at":"2020-04-07T06:38:43.000Z","size":93,"stargazers_count":35,"open_issues_count":5,"forks_count":9,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-04-04T01:41:24.896Z","etag":null,"topics":["api","indonesia","ovoid","payment-gateway","python3","wrapper-api"],"latest_commit_sha":null,"homepage":"","language":"Python","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/ii64.png","metadata":{"files":{"readme":"README.id.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":"2019-04-02T07:54:12.000Z","updated_at":"2024-12-09T01:34:58.000Z","dependencies_parsed_at":"2023-07-30T16:46:07.889Z","dependency_job_id":null,"html_url":"https://github.com/ii64/ovopy","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/ii64/ovopy","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ii64%2Fovopy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ii64%2Fovopy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ii64%2Fovopy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ii64%2Fovopy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ii64","download_url":"https://codeload.github.com/ii64/ovopy/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ii64%2Fovopy/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30405706,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-11T22:36:59.286Z","status":"ssl_error","status_checked_at":"2026-03-11T22:36:57.544Z","response_time":84,"last_error":"SSL_read: 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":["api","indonesia","ovoid","payment-gateway","python3","wrapper-api"],"created_at":"2024-10-13T06:09:28.368Z","updated_at":"2026-03-11T22:42:42.740Z","avatar_url":"https://github.com/ii64.png","language":"Python","funding_links":["https://www.patreon.com/anysz"],"categories":[],"sub_categories":[],"readme":"# ovopy\n[![BuildStatus](https://travis-ci.org/anysz/ovopy.svg?branch=master)](https://travis-ci.org/anysz/ovopy)\n[![Version 1.0.0](https://img.shields.io/badge/stable-1.0.0-brightgreen.svg \"Version 1.0.0\")](https://github.com/anysz/ovopy)\n[![Supported python versions: 3.6](https://img.shields.io/badge/python-3.6-green.svg \"Supported python versions: 3.6\")](https://www.python.org/download/releases/3.6/)\n[![License](https://img.shields.io/github/license/anysz/ovopy.svg)](https://github.com/anysz/ovopy/blob/master/LICENSE)\n[![Codacy Badge](https://api.codacy.com/project/badge/Grade/e8dfd96812194ac393d40ec5ef478a54)](https://www.codacy.com/app/anysz/ovopy?utm_source=github.com\u0026amp;utm_medium=referral\u0026amp;utm_content=anysz/ovopy\u0026amp;utm_campaign=Badge_Grade)\n[![Donate](https://img.shields.io/badge/donate-patreon-orange.svg)](https://www.patreon.com/anysz)\n\n*Un-official OVOid Python3 Client*\n\nBahasa: [English](README.md) [Indonesia](README.id.md)\n\n---\n## Instal\n`python3 setup.py install`\n\n## Status Fungsi\n| Fungsi                  \t| Status               \t|\n|-------------------------\t|----------------------\t|\n| `login2FA`              \t| OK                   \t|\n| `verifyLogin2FA`        \t| OK                   \t|\n| `loginSecurityCode`     \t| OK                   \t|\n| `getBudget`             \t| OK                   \t|\n| `getFrontModel`         \t| OK                   \t|\n| `generateTrxId`         \t| OK                   \t|\n| `transferOvoBalance`    \t| Error: Invalid Model \t|\n| `logout`                \t| OK                   \t|\n| `getUnreadNotification` \t| OK                   \t|\n| `getWalletTransaction`  \t| OK                   \t|\n\nTelah dites pada OVO v2.8.0 | 27/03/2019 | Python 3.6\n\n## Contoh Penggunaan\n\n![](fig1.jpg)\n\n### Login\nUntuk contoh penggunaan bisa cek di file `test.py`.  \n\nPERHATIAN: Setelah masuk pertama kali, pastikan token yang didapat tersimpan, karena OVO membatasi akun tiap deviceId\n```python\nimport ovopy\n# By default, settings saved to local .json file, so when you attempted to login with phone number (again) it'll use token that saved on local .json file resolved by phone number. You can disable this feature by adding `save_auth=False` at OVO class argument.\n# ovo = ovopy.OVO(save_auth=False)\n\novo = ovopy.OVO()\n# with phone_number\nl2fa  = ovo.login('\u003cphone_number\u003e')\nvl2fa = ovo.verifyLogin2FA(l2fa.refId, '\u003cSMS Pincode\u003e', '\u003cphone_number\u003e')\nlsc   = ovo.loginSecurityCode('\u003c6digit of security code\u003e', vl2fa.updateAccessToken)\n\n# with token\nlwt  = ovo.login(token='\u003ctoken here JWT\u003e')\n\n# Test now! :D\nprint(ovo.getFrontModel())\n```\n\n### Informasi Akun\nMendapatkan informasi tentang akun\n```python\nr = ovo.getFrontModel()\nprint(r) # resp: FrontResponse(...)\n```\n\n### Detail Budget\nMendapatkan informasi seputar budget\n```python\nr = ovo.getBudget()\nprint(r) # resp: BudgetResponse(budget=History(amount=0, categoryId=None, spending=0), totalSpending=0, cycleDate=1, summary=[...])\n```\n\n### Histori Transaksi\nMendapatkan daftar histori transaksi\n```python\nr = ovo.getWalletTransaction(page=1, limit=1)\nprint(r) # resp: WalletTransactionResponse(...)\n```\n\n### Transfer Saldo\nUntuk sementara, hanya bisa melakukan transfer dua kali, untuk yang ketiga membutuhkan header signature. Bila anda menemukan implementasi signature bisa membuat request pull, Terima kasih.\n```python\nrtrx = ovo.transferOvoBalance('\u003cto_phone_number\u003e', 10000, None)\nprint(rtrx) # resp: CustomerTransferResponse(...)\n```\n\n### Notifikasi\n```python\n# Get all notifications\nrx = ovo.getAllNotification()\nprint(rx) # resp: NotificationAllRespone(notifications=[...])\n\n# Get total unread notification\nr = ovo.getUnreadNotification()\nprint(r)  # resp: NotificationUnreadResponse(Total=0)\n```\n\n### Logout\nLogout dari client\n```python\nr = ovo.logout()\nprint(r) # resp: LogoutResponse(httpStatus=200)\n```\n\n## Error\n### OVOUnexpectedError\nSebuah error terjadi karena respon kode http bukan 200, Kebanyakkan terjadi karena invalid client payload\n\n## Bahasa Program Lainnya\nCek juga Un-official OVO\\[id] client yang lainnya!\n\n| Repositori                                                   \t| Bahasa   \t|\n|--------------------------------------------------------------\t|----------\t|\n| [@lintangtimur/ovoid](https://github.com/lintangtimur/ovoid) \t| PHP      \t|\n| [@anysz/ovopy](https://github.com/anysz/ovopy)               \t| Python   \t|\n\n## Author\nAnysz / [@Anysz](https://github.com/anysz)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fii64%2Fovopy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fii64%2Fovopy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fii64%2Fovopy/lists"}