{"id":21883129,"url":"https://github.com/eendroroy/opensdk-bkash","last_synced_at":"2026-05-04T23:34:02.237Z","repository":{"id":217619806,"uuid":"744008764","full_name":"eendroroy/opensdk-bkash","owner":"eendroroy","description":null,"archived":false,"fork":false,"pushed_at":"2024-03-04T15:28:57.000Z","size":81,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-06-23T08:49:47.914Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Kotlin","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/eendroroy.png","metadata":{"files":{"readme":"README.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":"2024-01-16T13:00:59.000Z","updated_at":"2024-01-16T13:01:43.000Z","dependencies_parsed_at":null,"dependency_job_id":"200085ff-5278-4f26-b396-a306e2eb2106","html_url":"https://github.com/eendroroy/opensdk-bkash","commit_stats":null,"previous_names":["eendroroy/opensdk-bkash"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/eendroroy/opensdk-bkash","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eendroroy%2Fopensdk-bkash","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eendroroy%2Fopensdk-bkash/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eendroroy%2Fopensdk-bkash/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eendroroy%2Fopensdk-bkash/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/eendroroy","download_url":"https://codeload.github.com/eendroroy/opensdk-bkash/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eendroroy%2Fopensdk-bkash/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32628830,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-04T10:08:07.713Z","status":"ssl_error","status_checked_at":"2026-05-04T10:08:02.005Z","response_time":58,"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":[],"created_at":"2024-11-28T09:39:25.750Z","updated_at":"2026-05-04T23:34:02.223Z","avatar_url":"https://github.com/eendroroy.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"# BKash SDK\n\nImplementation of [BKash PaymentGateway Developer API v1.2.0-beta](https://developer.bka.sh/reference)\n\n*TOKEN API*\n- Grant Token [#Documentation](https://developer.bka.sh/reference/gettokenusingpost)\n- Refresh Token [#Documentation](https://developer.bka.sh/reference/refreshtokenusingpost)\n\n*CHECKOUT API*\n- Create Payment (Sale or Authorize) [#Documentation](https://developer.bka.sh/reference/createpaymentusingpost)\n- Execute Payment [#Documentation](https://developer.bka.sh/reference/executepaymentusingpost)\n- Query Payment [#Documentation](https://developer.bka.sh/reference/querypaymentusingget)\n- Capture [#Documentation](https://developer.bka.sh/reference/capturepaymentusingpost)\n- Void [#Documentation](https://developer.bka.sh/reference/voidpaymentusingpost)\n- B2C Payment [#Documentation](https://developer.bka.sh/reference/b2cpaymentusingpost)\n- Query Organization Balance [#Documentation](https://developer.bka.sh/reference/queryorganizationbalanceusingget)\n- Intra-Account Transfer [#Documentation](https://developer.bka.sh/reference/intraaccounttransferusingpost)\n- Search Transaction Details [#Documentation](https://developer.bka.sh/reference/searchtransactionusingget)\n\n### Installation\n\n*Maven*\n\n```xml\n\u003cdependency\u003e\n    \u003cgroupId\u003eio.github.eendroroy\u003c/groupId\u003e\n    \u003cartifactId\u003eopensdk-bkash\u003c/artifactId\u003e\n    \u003cversion\u003e0.0.1-beta2\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\n*Gradle*\n\n```groovy\ndependencies {\n    implementation(\"io.github.eendroroy:opensdk-bkash:0.0.1-beta2\")\n}\n```\n\n### Usage\n\n#### **Configuration**\n\n**Loading from properties file**\nCreate a file `/path/to/bkash-sdk.properties` and load the configuration using :\n\n```\nBkashConfiguration configuration = BkashFileConfiguration.withConfig(\"/path/to/bkash-sdk.properties\");\n```\n\n`bkash-sdk.properties` example:\n\n```\nbaseUrl=https://checkout.sandbox.bka.sh\nusername=testUser\npassword=testPass\nappKey=123123123\nappSecret=456456456\ndisableRootCaVerification=false # Optional, default value is 'false'\ntimeOut=30 # Optional, default value is '30'\n```\n\n\n**Implementing the `BkashConfiguration` class**\nCreate a class `Configuration` to put the configurations:\n\n```java\npublic class Configuration extends AbstractBkashConfiguration {\n    @Override public String baseUrl() { return \"BASE-URL\"; }\n    @Override public String username() { return \"USERNAME\"; }\n    @Override public String password() { return \"PASSWORD\"; }\n    @Override public String appKey() { return \"APP-KEY\"; }\n    @Override public String appSecret() { return \"APP-SECRET\"; }\n}\n```\n\n#### **Logging** (__Optional__)\n\nCreate a class `LoggingInterceptor` to add the logging mechanism:\n\n```java\npublic class LoggingInterceptor extends AbstractBkashInterceptor {\n\n    @Override\n    public Request interceptRequest(Request request) {\n        System.out.println();\n        System.out.println();\n        System.out.println(request.headers());\n        System.out.println(request.url());\n        System.out.println(rawRequestBody(request));\n        return request;\n    }\n\n    @Override\n    public Response interceptResponse(Response response) {\n        System.out.println();\n        System.out.println();\n        System.out.println(response.code());\n        System.out.println(response.message());\n        System.out.println(response.headers());\n        System.out.println(rawResponseBody(response));\n        return response;\n    }\n}\n\n```\n\n#### **AuthProvider**\n\nBkash access token expires every 60 minutes.\n\nThe implementation of `AuthProvider` should handle all the necessary logic\nto store the token in local storage and refresh the token before it expires.\n\n```java\npublic class AuthProvider implements BkashAuthProvider {\n    private static final Configuration configuration = new Configuration();\n\n    private static final BkashAuthClient client = new BkashClientFactory(configuration).bkashAuthClient();\n\n    public String getAccessToken() {\n        GrantTokenRequest request = GrantTokenRequest.builder()\n                .appKey(configuration.appKey())\n                .appSecret(configuration.appSecret())\n                .build();\n        try {\n            BkashTokenResponse response = client.grantToken(request);\n            return response.getIdToken();\n        } catch (Exception e) {\n            e.printStackTrace();\n            return null;\n        }\n    }\n}\n```\n\n### Using the client\n\n**Example**\n\n```java\npublic class BkashAuthClientTest {\n    private static BkashCheckoutClient client;\n\n    public static void main(String[] args) throws Exception {\n        client = new BkashClientFactory(new Configuration(), new LoggingInterceptor())\n                .bkashCheckoutPaymentClient(new AuthProvider());\n\n        OrganizationBalanceResponse response = client.organizationBalance();\n        System.out.println(response);\n    }\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feendroroy%2Fopensdk-bkash","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feendroroy%2Fopensdk-bkash","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feendroroy%2Fopensdk-bkash/lists"}