{"repo":"lintangtimur/ovoid","free":true,"listed":false,"github":"https://github.com/lintangtimur/ovoid","clone":"git clone https://github.com/lintangtimur/ovoid.git","description":"Un-Official OVO API Wrapper","language":"PHP","stars":165,"topics":["indonesia","payment-gateway","ovoid","api","wrapper"],"license":"MIT","category":"api-integrations-sdks","readme_excerpt":"ovoid — Unofficial OVO API client for PHP A lightweight, zero-dependency PHP client for the OVO ( ovo.id ) mobile wallet API. It mirrors the request/response shapes the official app uses, so the endpoints behave the same way you'd see in the app. Research/educational use only. Not affiliated with OVO. This library does not bypass any protection it still needs real OTP/PIN credentials for the account it is used with, and it cannot reproduce the hardware-bound ECDSA signature used by OVO's Digibank feature. Requirements - PHP 8.1+ - ext-curl , ext-openssl - No other dependencies Quick start — login OVO's login always requires a validated OTP, even for accounts that already have a PIN set. The flow is: request OTP → validate the code → login with PIN (PIN is RSA-encrypted automatically before it leaves your machine). Two delivery channels, one validation call. The server decides which channel to use; it is reported by requestOtp() (and resolveOnboardingType() ) via otp.reff type : \"OTP\" = SMS code, \"LINK\" = magic link. Both are validated with the same validateOtp() — you only change what you pass as the $code . Echo type back into validateOtp() . The server rejects the call with OV00002 \"type: non zero value required\" when $type is empty, so always pass through the type returned by requestOtp() (values seen: LOGIN , CREATION , ...). Same for loginWithPin() : push notification id must be non-empty (the wrapper falls back to device id for you). resolveOnboardingType() is optional ","default_branch":null,"files":null,"tree":[],"storefront":"/r/lintangtimur","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/lintangtimur/ovoid/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}