Library Updates Required
Topics covered on this page
Updating Omise Libraries and Server Certificates
Overview
Omise's official libraries used to rely on certificate pinning, a security technique that hardcodes the expected server certificate inside the library itself. Certificate pinning is no longer considered best practice, so it has been removed from Omise's libraries — but any copy of a library still running the old, pinned version will stop trusting Omise's servers once the pinned certificate rotates. In practice, that means API requests — including charge creation — can fail without warning if you're running an outdated library.
There's a second, related issue: Omise's TLS certificate chain roots to a DigiCert G2 certificate. Most systems already trust it, but older or infrequently patched servers may not, and will need it installed manually.
Verified October 2026: A certificate chain check against api.omise.co shows Omise's API currently chains to DigiCert Global Root G2 (via the Thawte TLS RSA CA G1 intermediate), so the following G2 instructions are currently accurate. DigiCert will begin transitioning default TLS issuance to a new G5 hierarchy on November 12, 2026 (see DigiCert's official advisory). However, the current certificate was renewed on October 1, 2026—before that cutover—and remains on the G2 hierarchy.
The current certificate expires on April 17, 2027. Re-verify this page's guidance after that renewal, as a future certificate may be issued from the G5 hierarchy instead.
Two separate things to check: (1) your Omise library version, and (2) your server's trusted root certificates. Most integrations only need the first, but if requests still fail after updating your library, work through the second as well.
What you might be seeing, by platform:
- Python/curl/OpenSSL-based:
certificate verify failed,unable to get local issuer certificate - Java:
sun.security.validator.ValidatorException: PKIX path building failed,unable to find valid certification path to requested target - Android:
javax.net.ssl.SSLHandshakeException: Trust anchor for certification path not found - Go:
x509: certificate signed by unknown authority - iOS/Swift:
NSURLErrorDomain error -1202, "server certificate is invalid" - Ruby/PHP/Node:
SSL_connect returned=1 errno=0 ... certificate verify failed,SELF_SIGNED_CERT_IN_CHAIN, orcURL error 60
A connection reset with no other explanation, or a charge-creation request that times out with no clear API error body, can also be a symptom. If any of this looks familiar, this page is for you.
Check and fix your version in three steps
- Find your library's current version in your project's dependency file (see the FAQ if you're not sure where to look).
- Compare it against the minimum required version for your library.
- If you're below it, follow the update instructions for your language, then verify the fix.
Diagnose before you fix
If you want to confirm the actual problem before changing anything, inspect the certificate chain your server currently sees from a terminal:
openssl s_client -connect api.omise.co:443 -showcerts
Look at the certificate chain in the output. A chain that terminates in a root your system doesn't recognize, or a handshake that fails outright, confirms a certificate trust issue rather than something else (a network/firewall block, a DNS problem, or an application-level bug). This command works the same regardless of which language or library you use, since it tests the underlying TLS connection directly.
Minimum required library versions
The following table lists the minimum required version of each library, its release date, and a link to its full changelog. If you're not already on at least the listed version, upgrade before it affects your integration.
A library not listed here is not known to be affected. Check this page periodically, since that can change with future releases.
| Integration | Minimum required version | Release date | Changelog |
|---|---|---|---|
| Android | 3.0.0 | 31 Oct 2019 | CHANGELOG.md |
| Go | 1.0.5 | 31 Jul 2020 | tags |
| iOS | 3.2.0 | 29 Aug 2019 | releases |
| Java | 3.1.1 | 6 Aug 2019 | CHANGELOG.md |
| PHP | 3.0.0 | 10 Jun 2025 | CHANGELOG.md |
| Python | 0.9.0 | 3 Sep 2020 | CHANGELOG.md |
| Ruby | 0.8.0 | 4 Nov 2019 | CHANGELOG.md |
| EC-CUBE | 2.2 | 5 Sep 2023 | CHANGELOG.md |
| Magento | 2.18.6 | 16 Sep 2021 | CHANGELOG.md |
| OpenCart | 2.5 | 5 Sep 2023 | CHANGELOG.md |
| PrestaShop | 1.7.10 | 5 Sep 2023 | CHANGELOG.md |
| WooCommerce | 4.8 | 19 Apr 2021 | CHANGELOG.md |
How to update each library
Each section shows a basic update example. Your build setup may differ, and any method that gets you to at least the minimum required version works.
Jump to: Android · iOS · Go · Java · PHP · Python · Ruby
SDK: Android
Update the version in your app's build.gradle:
dependencies {
implementation 'co.omise:omise-android:3.0.0'
}
- TLS 1.1 dropped (2.6.5 → 2.6.6): Omise requires TLS 1.2 or higher for all connections. For the full list of supported cipher suites, see Security Best Practices.
SDK: iOS
See the upgrade steps for Swift Package Manager. The 4.x branch no longer supports iOS 10 or Swift 4.
SDK version isn't the whole story on mobile. Android and iOS both use the device's own OS-level trust store for certificate validation, separate from your app's SDK version. A device running a very old OS version may not trust a current root certificate no matter which SDK version your app ships with — there's no app-side fix for that beyond encouraging users to update their device OS.
Library: Go
Update to the latest version:
go get github.com/omise/omise-go
Update to a specific version:
go get github.com/omise/omise-go@v1.0.5
Library: Java
Update the version in your app's build.gradle:
dependencies {
implementation 'co.omise:omise-java:3.1.1'
}
- No breaking changes (4.x → latest): the upgrade should be smooth.
- Breaking changes (3.1.1 → 4.0): see the migration guide. If you can't move to the latest version yet, upgrade to at least 3.1.1.
Library: PHP
Using a PHP-based plugin? If you use the Omise plugin for EC-CUBE, Magento, OpenCart, PrestaShop, or WooCommerce, follow the Updating PHP-based plugins instructions instead of updating omise-php directly.
Update the version in composer.json to at least the minimum required version, then run:
composer update omise-php
If you're upgrading from an older 2.x release, check the changelog before updating — the jump to 3.0.0 spans several releases, so review what's changed for your specific starting version rather than assuming a drop-in replacement.
PHP security update (October 2026): Two critical vulnerabilities in PHP itself allow unauthenticated remote code execution. The vulnerabilities are not in omise-php, and the minimum required omise-php version is unchanged, but you need to update PHP on your server to a patched version. See PHP Security Update (October 2026).
Library: Python
Update the version in requirements.txt to at least the minimum required version, then run:
pip install --upgrade omise
Upgrading from any version is straightforward with no breaking changes. Use a non-EOL Python version if you can.
Library: Ruby
Update the version in your Gemfile to at least the minimum required version, then run:
bundle update omise
Upgrading from any version is straightforward with no breaking changes. Use a non-EOL Ruby version if you can.
If you're not using an Omise library
The certificate-pinning issue only affects the libraries listed here. But the DigiCert root certificate issue is library-agnostic — it affects the TLS connection itself, so it can affect you even if you call the Omise API directly with curl, a raw HTTP client, or a language/framework not covered on this page.
If that's your setup: the minimum-version table and per-library steps don't apply, but the diagnostic command and the server root certificate update still do. Run the diagnostic first to confirm whether this is actually your issue.
Updating PHP-based plugins
Manually downgraded omise-php? Magento and WooCommerce both build on the omise-php library. If you've manually downgraded it on either platform, upgrade back to at least the minimum required version to close the underlying security issue.
PHP security update (October 2026): If you host EC-CUBE, Magento, OpenCart, PrestaShop, or WooCommerce on your own server, update PHP to a patched version to fix two critical vulnerabilities in PHP itself. You do not need to update the Omise plugin for this issue. See PHP Security Update (October 2026).
EC-CUBE
See the official EC-CUBE plugin documentation for installation and configuration details.
Magento
See the official Magento plugin documentation for installation and configuration details.
OpenCart
See the official OpenCart plugin documentation for installation and configuration details.
PrestaShop
See the official PrestaShop plugin documentation for installation and configuration details.
WooCommerce
Recommended version: The minimum required version of the Omise WooCommerce plugin is 4.8, but use at least version 5.3.1 for better performance. Version 5.3.1 stops the plugin from calling the Omise Capability API on every page load.
See the official WooCommerce plugin documentation for installation and configuration details.
Updating your server's root certificate
If API requests still fail after your library is up to date, your server's trusted root certificates are likely out of date. Omise's certificate chain roots to DigiCert Global Root G2 — see DigiCert's root certificate update advisory for background.
Running in a container or serverless platform? "Update your server" doesn't apply the same way. Your CA bundle comes from your base image (Docker) or your provider's managed runtime (AWS Lambda, Google Cloud Functions, etc.), not a persistent OS you patch directly. Rebuild your image from an up-to-date base (e.g. a current debian: or alpine: tag) rather than patching a running container, and for managed serverless runtimes, check your provider's documentation for how they roll out CA updates — you typically can't do this yourself.
On Linux
Linux keeps CA certificates in /etc/ssl/certs/, and a normal OS update refreshes them automatically. To update manually:
RHEL and clones
- Create
/etc/pki/ca-trust/source/anchorsif it doesn't already exist. - Download the DigiCert Global Root G2 certificate.
- Copy the downloaded PEM file into
/etc/pki/ca-trust/source/anchors. - Add it to the system's trust store:
sudo update-ca-trust extract
Debian and derivatives
- Create
/usr/local/share/ca-certificatesif it doesn't already exist. - Download the DigiCert Global Root G2 certificate.
- Copy the downloaded PEM file into
/usr/local/share/ca-certificates, renaming it with a.crtextension. - Add it to the system's trust store:
sudo update-ca-certificates
On macOS
A normal macOS update refreshes root certificates automatically. To add the certificate manually, download the DigiCert Global Root G2 certificate, then add it to the System keychain and trust it for SSL, adjusting the filename in the command that follows to match what you downloaded:
sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain path/to/downloaded-certificate.crt
On Windows
A normal Windows update refreshes root certificates automatically. To update manually:
- Open Windows PowerShell as Administrator.
Go to a working folder, for example
C:\Temp:cd C:\TempDownload the current trusted root certificates from Windows Update into a file named
Rootstore.sst:certutil -generateSSTFromWU Rootstore.sstImport the certificates into the local machine's trusted root store:
Import-Certificate -FilePath C:\Temp\Rootstore.sst -CertStoreLocation Cert:\LocalMachine\Root
Server without internet access: Run steps 1–3 on a Windows machine that has internet access, copy Rootstore.sst to the offline server, then run step 4 on the offline server in an administrator PowerShell session, using the path where you copied the file.
Confirm it's fixed
After updating your library, your server's root certificates, or both, confirm the fix before moving on:
- Send a test request — a charge creation in test mode is the most direct check, since that's the request most likely to have been failing.
- If it succeeds without a certificate or connection error, you're done.
- If it still fails the same way, work through whichever of the two fixes you haven't done yet — most integrations only need the library update, but some servers also need the root certificate update.
- If it still fails after both, check status.omise.co to rule out a wider incident, then contact Omise support with the exact error message.
FAQ
Q: How do I check which library version I'm currently running?
A: Check your dependency manifest (composer.json, requirements.txt, Gemfile, build.gradle, or your go.mod/Podfile/package manager of choice) for the pinned Omise library version, or inspect the installed package directly with your language's package manager.
Q: My library isn't listed in the minimum versions table. Am I affected? A: Not that Omise is aware of, but check this page periodically, since the list can change as new releases ship.
Q: I updated my library and requests are still failing. What else should I check? A: Update your server's trusted root certificates next — see Updating your server's root certificate. Outdated server-side trust stores are the next most common cause.
Q: Do I need to do anything if I only use a hosted checkout or redirect flow, with no library installed? A: No — this only applies to integrations using an Omise-provided library or plugin.
Q: I call the Omise API directly (curl, a raw HTTP client, or a language not listed here) — does this affect me? A: The library-version issue doesn't, since it's specific to Omise's own libraries. The server root certificate issue can still affect you, since it's about the TLS connection itself. See If you're not using an Omise library.
Q: My app is on the latest Omise SDK version, but users on older phones still get certificate errors. Why? A: Android and iOS validate certificates against the device's own OS-level trust store, separate from your app's SDK version. A device on a very old OS release may not trust a current root certificate no matter what SDK version you ship. There's no in-app fix for this beyond encouraging affected users to update their device OS.
Q: Do I need to update my Omise library or plugin because of the October 2026 PHP vulnerabilities? A: No. The vulnerabilities are in PHP itself, and the minimum required versions on this page are unchanged. Update PHP on your server instead — see PHP Security Update (October 2026).
Q: What actually breaks if I don't update? A: API requests — including charge creation — can start failing without warning once the certificate your library pinned to is no longer valid.
Q: Where can I get more help? A: Contact Omise support with your library or plugin version, your language or PHP version, and the exact error message.