{"id":23268543,"url":"https://github.com/dubems/paystack-grails","last_synced_at":"2025-08-21T00:32:17.960Z","repository":{"id":213859094,"uuid":"94483152","full_name":"dubems/paystack-grails","owner":"dubems","description":"Paystack Payment API Implementation in Groovy/Grails","archived":false,"fork":false,"pushed_at":"2020-07-30T18:13:42.000Z","size":166,"stargazers_count":6,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-07T23:51:06.058Z","etag":null,"topics":["grails","groovy","paystack","plugin"],"latest_commit_sha":null,"homepage":"https://paystack.com/","language":"Groovy","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dubems.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}},"created_at":"2017-06-15T22:19:37.000Z","updated_at":"2023-12-04T07:27:27.000Z","dependencies_parsed_at":"2023-12-23T19:15:01.803Z","dependency_job_id":"9cde6d0c-4488-4c28-8104-ea2e27da9960","html_url":"https://github.com/dubems/paystack-grails","commit_stats":null,"previous_names":["dubems/paystack-grails"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/dubems/paystack-grails","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dubems%2Fpaystack-grails","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dubems%2Fpaystack-grails/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dubems%2Fpaystack-grails/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dubems%2Fpaystack-grails/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dubems","download_url":"https://codeload.github.com/dubems/paystack-grails/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dubems%2Fpaystack-grails/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":271409507,"owners_count":24754728,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-20T02:00:09.606Z","response_time":69,"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":["grails","groovy","paystack","plugin"],"created_at":"2024-12-19T17:19:26.813Z","updated_at":"2025-08-21T00:32:17.641Z","avatar_url":"https://github.com/dubems.png","language":"Groovy","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n# Grails Paystack Plugin\n\n## A Grails plugin to allow communication to paystack API\n\n## Installation\nAdd the below line to your build.gradle file\n\n```compile 'org.grails.plugins:paystack-grails:1.0.5'```\n## Configuration\n```yml\nInclude Paystack keys(in application.yml) gotten from your dashboard as follows\npaystack: \n    liveSecretKey: '${PAYSTACK_LIVE_SECRET_KEY}'\n    testSecretKey: '${PAYSTACK_TEST_SECRET_KEY}'\n    livePublicKey: '${PAYSTACK_LIVE_PUBLIC_KEY}'\n    testPublicKey: '${PAYSTACK_TEST_PUBLIC_KEY}'\n    endpoint:      'https://api.paystack.co'\n```\n\n* Note:Make sure to have your webhook registered in paystack dashboard.\n  eg: http://paystack.dev/test/handlePaystackCallback\nwhere:\n    * \"test\" is the controller name\n    * \"handlePayStackCallback\" is the method name\n\n## Usage\n\n* Make Payment Request\n* params\n    * _email_ (required)\n    * _amount_ (required)\n    * _plan_\n    * _first_name_\n    * _last_name_\n    * _metadata_\n    * _callback_url_\n  \n```groovy\nclass TestController {\n\n    PaystackService paystackService\n\n    def index() { }\n\n    def makePaymentRequest(){\n        String authUrl =  paystackService.getAuthUrl(params)\n        redirect(url:authUrl)\n    }\n  }\n```\n* Handle Paystack callback\n* params(paystack calls ur method with a reference parameter)\n\n```groovy\n\n    def handlePaystackCallback(){\n       final String reference = params.get('reference') // reference from paystack webhook\n        Map\u003cString, String\u003e paymentDetails =  paystackService.getPaymentData(reference)\n         println($paymentDetails)\n        // Now you have the payment details,\n        // you can store the authorization_code in your db to allow for recurrent subscriptions\n        // you can then redirect or do whatever you want\n    }\n```\n\n* Other useful methods that implement Paystack endpoints can be found below\n* NB: Methods not listed below can be found in the PaystackService Class\n\n```groovy\n\n    // Injecting PaystackService \n    PaystackService paystackService\n    \n    /**\n     * Return all customers on your Paystack account\n     * @returns Map\n     */\n    paystackService.getAllCustomers()\n    \n     /**\n     * Return all transactions on Your Paystack account\n     * @returns Map\n     */\n    paystackService.listTransactions()\n\n     /**\n     * Fetch a particular transaction\n     * @param  int id : identifier of transaction to fetch\n     * @return Map\n     */\n    paystackService.fetchTransaction(id)\n    \n    /**\n     * Return a single customer given its id\n     * @param customerId\n     * @return Map\n     */\n    paystackService.fetchCustomer(customerId)\n    \n    /**\n     * Return all plans on your paystack account\n     * @return Map\n     */\n    paystackService.getAllPlans()\n        \n    /**\n     * Get a particular plan given the plan id\n     * @param planId\n     * @return Map\n     */\n    paystackService.fetchPlan(planId)\n    \n```\n\n## TODO\n- [ ] Complete All Api calls\n- [X] Write Unit tests\n\n\n## CONTRIBUTING\n- Fork the repository, make necessary changes and send the PR.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdubems%2Fpaystack-grails","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdubems%2Fpaystack-grails","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdubems%2Fpaystack-grails/lists"}