1.0.4 • Published 7 years ago

rave-javascript-sdk v1.0.4

Weekly downloads
3
License
MIT
Repository
github
Last release
7 years ago

Rave-Javascript-SDK

License: MIT npm version npm

Implement Rave by Flutterwave easily with Javascript frameworks and Libraries

Tested on

  • VueJS
  • NuxtJS
  • ReactJS

Installation

npm install rave-javascript-sdk --save

ReactJS and VueJS

Add this Rave Inline Script to your index.html for a test account

<script src="https://rave-api-v2.herokuapp.com/flwv3-pug/getpaidx/api/flwpbf-inline.js"></script>

Add this Rave Inline Script to your index.html for a live account

<script src="https://api.ravepay.co/flwv3-pug/getpaidx/api/flwpbf-inline.js"></script>

Nuxt

Add this to your nuxt.config.js or in Vue Page head for a test account

head: {
    script: [
      ---
      { src: 'https://rave-api-v2.herokuapp.com/flwv3-pug/getpaidx/api/flwpbf-inline.js', body: true }
      ---
    ]
  },

Add this to your nuxt.config.js or in Vue Page head for a live account

head: {
    script: [
      ---
      { src: 'https://api.ravepay.co/flwv3-pug/getpaidx/api/flwpbf-inline.js', body: true }
      ---
    ]
  },

Basic Usage

VueJS Sample

  <template>
    <button v-on:click="buy">Buy</button>
  </template>
  <script>
  import Rave from 'rave-javascript-sdk'
  export default {
    methods: {
      buy() {
        var rave = new Rave();
        
        rave.setEmail('flamekeed@gmail.com')
            .setAmount("3000")
            .setPublicKey("FLWPUBK-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-X")
            .setModalTitle("Flamez fresh")
            .setMeta([
                      { metaname: 'Room', metavalue: "36A" },
                      { metaname: 'Colour', metavalue: "Blue" }
                    ])
            .initialize()
      }
    }
  }
  </script>

ReactJS Sample

import React, { Component } from 'react';
import Rave from 'rave-javascript-sdk';

class Events extends Component {
  constructor(props) {
    super(props);
    this.buy = this.buy.bind(this);
  }

  buy() {
    var rave = new Rave();
        
    rave.setEmail('flamekeed@gmail.com')
        .setAmount("3000")
        .setPublicKey("FLWPUBK-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-X")
        .setModalTitle("Flamez fresh")
        .setMeta([
                  { metaname: 'Room', metavalue: "36A" },
                  { metaname: 'Colour', metavalue: "Blue" }
                ])
        .initialize()
  }

  render() {
    return (
      <div>
          <button onClick={this.buy}>Buy</button>
      </div>
    )
  }
}

Available Rave methods

NameTypeDefaultRequiredDescription
setPublicKeyStringYesYour merchant public key provided when you sign up for rave.
setEmailStringYesEmail of the customer.
setAmountStringYesAmount to charge.
setPhoneStringNoPhone number of the customer.
setPaymentMethodStringbothNoThis allows you select the payment option you want for your users, this can be both, card, ussd or account.
setMetaObject Array[]NoThese are additional information you want to pass through the payment gateway .
setCurrencyStringNGNNoThe currency you want to charge the customer.
setRedirectURLStringNoURL to redirect to when transaction is completed.
setCountryStringNGNoThe country of operation.
setFirstnameStringNoFirst name of the customer.
setLastNameStringNoLast name of the customer.
setModalTitleStringNoText to be displayed as the title of the payment modal.
setDescriptionStringNoText to be displayed as a short modal description.
setLogoStringNoLink to the Logo image.
setTransactionReferenceStringIt will be generated automatically when left blankNoUnique transaction reference provided by the merchant.
setCallbackFunctionNoA function to be called on successful card charge. User’s can always be redirected to a successful or failed page supplied by the merchant here based on response.
setCancelFunctionNoA function to be called when the pay modal is closed.

Available Functions

  1. RequeryTransaction({ live, txref, SECKEY })

This requeries a transaction, useful to check if a failed transaction is successful

  • live: false or true Set to true if you are using a live account and vice versa
  • txref: The transaction reference
  • SECKEY: Your API secret key
RequeryTransaction({ live: false, txref: response.tx.txRef, SECKEY: "FLWSECK-XXXXXXXXXXXXXXXXXXXXXXXXXXXX-X" })
.then(function (resp) {
  // console.log(resp);
})
.catch(function (error) {
  // console.log(error);
});
  1. VerifyTransaction({ live, txref, SECKEY })

This validates a transaction, you can get your metas passed through this

  • live: false or true Set to true if you are using a live account and vice versa
  • txref: The transaction reference
  • SECKEY: Your API secret key
var currency = "NGN"; //Gotten from server or hardcoded
var amount = "3000"; //Gotten from server or hardcoded

VerifyTransaction({ live: false, txref: response.tx.txRef, SECKEY: "FLWSECK-XXXXXXXXXXXXXXXXXXXXXXXXXXXX-X" })
.then(function (resp) {
  // console.log(resp);
  var chargeResponse = resp.data.data.flwMeta.chargeResponse;
  var chargeAmount = resp.data.data.amount;
  var chargeCurrency = resp.data.data.transaction_currency;


  if ((chargeResponse == "00" || chargeResponse == "0") && (chargeAmount == amount) && (chargeCurrency == currency)) {
    console.log("Successful");
    
    console.log(resp.data);
    
    //Give Value and return to Success page
  } else {
    console.log("Error");
    console.log(resp);
    
    
    //Dont Give Value and return to Failure page
  }
})
.catch(function (error) {
  // console.log(error);
});

More Samples

VueJS with Transaction Verification

  <template>
    <button v-on:click="buy">Buy</button>
  </template>
  <script>
  import Rave from 'rave-javascript-sdk'
  export default {
    methods: {
      buy() {
        var rave = new Rave();
        
        rave.setEmail('flamekeed@gmail.com')
            .setAmount("3000")
            .setPublicKey("FLWPUBK-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-X")
            .setModalTitle("Flamez fresh")
            .setCancel(this.cancel)
            .setCallback(this.callback)
            .setMeta([
                      { metaname: 'Room', metavalue: "36A" },
                      { metaname: 'Colour', metavalue: "Blue" }
                    ])
            .initialize()
      },
      callback(resp) {
        return VerifyTransaction({ live: false, txref: resp.tx.txRef, SECKEY: "FLWSECK-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-X" })
          .then(function (response) {
            console.log(response);
            ;
          })
          .catch(function (error) {
            console.log(error);

          });
      },
      cancel() {
        console.log("closed"); 
      }
    }
    }
  }
  </script>

ReactJS with Transaction Verification

import React, { Component } from 'react';
import Rave, { VerifyTransaction } from 'rave-javascript-sdk';

class Events extends Component {
  constructor(props) {
    super(props);
    this.buy = this.buy.bind(this);
  }

  buy() {
    var rave = new Rave();

    rave.setEmail('flamekeed@gmail.com')
        .setAmount("3000")
        .setPublicKey("FLWPUBK-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-X")
        .setModalTitle("Flamez fresh")
        .setCancel(this.cancel)
        .setCallback(this.callback)
        .setMeta([
                  { metaname: 'Room', metavalue: "36A" },
                  { metaname: 'Colour', metavalue: "Blue" }
                ])
        .initialize()
  }


  callback(resp) {
    return VerifyTransaction({ live: false, txref: resp.tx.txRef, SECKEY: "FLWSECK-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-X" })
      .then(function (response) {
        console.log(response);
      })
      .catch(function (error) {
        console.log(error);

      });
  }

  cancel() {
    console.log("closed");
  }

  render() {
    return (
      <div>
          <button onClick={this.buy}>Buy</button>
      </div>
    )
  }
}

Contributing

Please feel free to fork this package and contribute by submitting a pull request to enhance the functionalities.

Kindly star the GitHub repo and share ❤️. I ❤️ Flutterwave

Kindly follow me on twitter!

Credits

License

The MIT License (MIT). Please see License File for more information.