diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..97585fd --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,83 @@ +# Community contribution guide + +Thank you for taking the time to contribute to our library🙌🏾. + +In this section, we detail everything you need to know about contributing to this library. + + + +**[Code of Conduct](https://github.com/probot/template/blob/master/CODE_OF_CONDUCT.md)** + +## **I don't want to contribute, I have a question** + +Please don't raise an issue to ask a question. You can ask questions on our [forum](http://forum.flutterwave.com) or developer [slack](https://bit.ly/34Vkzcg). We have an army of Engineers on hand to answer your questions there. + +## How can I contribute? + +### Reporting a bug + +Have you spotted a bug? Fantastic! Before raising an issue, here are some things to do: + +1. Search to see if another user has reported the bug. For existing issues that are still open, add a comment instead of creating a new one. +2. Check our forum and developer slack to confirm that we did not address it there. + +When you report an issue, it is important to: + +1. Explain the problem + - Use a clear and descriptive title to help us to identify the problem. + - Describe steps we can use to replicate the bug and be as precise as possible. + - Include screenshots of the error messages. +2. Include details about your configuration and setup + - What version of the library are you using? + - Did you experience the bug on test mode or live? + - Do you have the recommended versions of the library dependencies? + +> 💡 Please make use of the issue template when reporting bugs. + +### Requesting a feature + +If you need an additional feature added to the library, kindly send us an email at developers@flutterwavego.com. Be sure to include the following in your request: + +1. A clear title that helps us to identify the requested feature. +2. A brief description of the use case for that feature. +3. Explain how this feature would be helpful to your integration. +4. Library name and version. + +### Submitting changes (PR) + +Generally, you can make any of the following changes to the library: + +1. Bug fixes +2. Performance improvement +3. Documentation update +4. Functionality change (usually new features) + +> 💡 Changes that are cosmetic in nature and do not add anything substantial to the stability, functionality, or testability of the library will generally not be accepted. + +Follow these steps when making a pull request to the library: + +1. Fork the repository and create your branch from master. +2. For all types of changes (excluding documentation updates), add tests for the changes. +3. If you are making a functionality change, update the docs to show how to use the new feature. +4. Ensure all your tests pass. +5. Make sure your code lints. +6. Write clear log messages for your commits. one-liners are fine for small changes, but bigger changes should have a more descriptive commit message (see sample below). +7. Use present tense for commit messages, "Add feature" not "Added feature”. +8. Ensure that you fill out all sections of the PR template. +9. Raise the PR against the `dev` branch. +10. After you submit the PR, verify that all [status checks](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/collaborating-on-repositories-with-code-quality-features/about-status-checks) are passing + +```markdown +$ git commit -m "A brief summary of the commit +> +> A paragraph describing what changed and its impact." +``` + +> 💡 For your pull request to be reviewed, you need to meet the requirements above. We may ask you to complete additional tests, or other changes before your pull request can be ultimately accepted. + + +We encourage you to contribute and help make the library better for the community. Got questions? send us a [message](https://bit.ly/34Vkzcg). + +Thank you. + +The Flutterwave team 🦋 diff --git a/LICENSE b/LICENSE.md similarity index 96% rename from LICENSE rename to LICENSE.md index 7e0fa87..1c9bc22 100644 --- a/LICENSE +++ b/LICENSE.md @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2020 Joel Ugwumadu +Copyright (c) 2020 Flutterwave Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/README.md b/README.md index 50626f3..299acfc 100644 --- a/README.md +++ b/README.md @@ -8,31 +8,44 @@   + + +## Introduction + +The React SDK helps you create seamless payment experiences in your React mobile or web app. By connecting to our modal, you can start collecting payment in no time. + +Available features include: + +- Collections: Card, Account, Mobile money, Bank Transfers, USSD, Barter, NQR. +- Recurring payments: Tokenization and Subscriptions. +- Split payments + ## Table of Contents -- [About](#about) -- [Getting Started](#getting-started) -- [Usage](#usage) -- [Deployment](#deployment) -- [Built Using](#build-tools) -- [References](#references) +1. [Requirements](#requirements) +2. [Installation](#installation) +3. [Initialization](#initialization) +4. [Usage](#usage) +5. [Support](#support) +6. [Contribution Guidelines](#contribution-guidelines) +7. [License](#license) - -## About + -This is a react package for implementing Flutterwave gateway with different payment methods. +## Requirements - +1. Flutterwave version 3 API keys +2. Node version >= 6.9.x and npm >= 3.x.x +3. React version >= 14 -## Getting Started -These instructions will get you a copy of the project up and running on your local machine for development and testing purposes. See [deployment](#deployment) for notes on how to deploy the project on a live system. -See [references](#references) for links to dashboard and API documentation. + +## Installation -### Installation +Install the SDK ```bash $ npm install flutterwave-react-v3 @@ -40,12 +53,97 @@ $ npm install flutterwave-react-v3 # or $ yarn add flutterwave-react-v3 +``` + + + +## Initialization + +Import useFlutterwave to any component in your application and pass your config + +```javascript +import { useFlutterwave } from 'flutterwave-react-v3'; + const config = { + public_key: 'FLWPUBK-**************************-X', + tx_ref: Date.now(), + amount: 100, + currency: 'NGN', + payment_options: 'card,mobilemoney,ussd', + customer: { + email: 'user@gmail.com', + phonenumber: '07064586146', + name: 'joel ugwumadu', + }, + customizations: { + title: 'my Payment Title', + description: 'Payment for items in cart', + logo: 'https://st2.depositphotos.com/4403291/7418/v/450/depositphotos_74189661-stock-illustration-online-shop-log.jpg', + }, + }; + useFlutterwave(config) ``` + + + ## Usage +You can use Flutterwave in your projects as a component or as a react Hooks: + +1. [As a Component](#using-flutterwave-as-a-component) +2. [Directly in your code](#using-flutterwave-as-a-hook) + + + +### Components + +```javascript +import React from 'react'; +import { FlutterWaveButton, closePaymentModal } from 'flutterwave-react-v3'; + +export default function App() { + const config = { + public_key: 'FLWPUBK-**************************-X', + tx_ref: Date.now(), + amount: 100, + currency: 'NGN', + payment_options: 'card,mobilemoney,ussd', + customer: { + email: 'user@gmail.com', + phonenumber: '07064586146', + name: 'joel ugwumadu', + }, + customizations: { + title: 'My store', + description: 'Payment for items in cart', + logo: 'https://st2.depositphotos.com/4403291/7418/v/450/depositphotos_74189661-stock-illustration-online-shop-log.jpg', + }, + }; + + const fwConfig = { + ...config, + text: 'Pay with Flutterwave!', + callback: (response) => { + console.log(response); + closePaymentModal() // this will close the modal programmatically + }, + onClose: () => {}, + }; + + return ( +