0.2.53-0 • Published 4 years ago

@paytheory/payments v0.2.53-0

Weekly downloads
2
License
MIT
Repository
github
Last release
4 years ago

@paytheory/payments

React components and hooks for Pay Theory payments

NPM JavaScript Style Guide

Install

  • payments has the following peer dependencies
    • react
    • react-dom
npm install --save @paytheory/payments @paytheory/tags react react-dom

Usage

Import

  • CreditCardProvider is a component where you provide configuration; it provides the necessary context for payment processing
  • CreditCardInput is a component that establishes the markup where the credit card input will appear
  • usePayTheory is a function that returns the context needed for working with payments, it provides

    • loading - a boolean state value that changes to false once Pay Theory is ready
    • valid - can be undefined, true or false based on what has been entered
    • error - contains an error message if not false
    • mount - a function which will mount the payment input (must be called after CreditCardInput has been rendered)
    • initTransaction - a function which accepts an optional buyerOptions object and triggers card tokenization and authorization
import React, { useState, useEffect } from 'react'
import {
    CreditCardProvider,
    CreditCardInput,
    usePayTheory
} from '@paytheory/payments'

Configure

  • payments requires configuration of:

    • a Pay Theory API key
    • a Pay Theory Client ID
    • an amount in cents
    • optionally styles you want applied
const api = 'pt-sandbox-c421a13e91d2594cc627cdd982edb5ed'
const client = 'IDvwtJwLdkja7CMk5oR6QNDk'
const styles = {
    default: {
        color: 'black',
        fontSize: '14px'
    },
    success: {
        color: '#5cb85c',
        fontSize: '14px'
    },
    error: {
        color: '#d9534f',
        fontSize: '14px'
    }
}

const WrappedApp = (props) => {
    return (
        <CreditCardProvider
            apiKey={api}
            client={client}
            amount={props.amount}
            styles={styles}
        >
            <App />
        </CreditCardProvider>
    )
}

Process payments

  • to initialize the form mount() is called once
  • when the form is ready for submission call initTransaction and pass in optional buyerOptions
  • buyerOptions include

    • name - the name on the card
    • billing address composed of

      • line1
      • line2
      • city
      • region
      • postal_code
      • country
const App = (props) => {
    const { loading, mount, initTransaction } = usePayTheory()
    const [mounted, setMounted] = useState(false)
    const [nameOnCard, setNameOnCard] = useState('')

    useEffect(() => {
        if (!loading && !mounted) {
            mount()
            setMounted(true)
        }
    }, [loading, mount, mounted])

    return (
        <form
            onSubmit={(e) => {
                e.preventDefault()
                initTransaction({ name: nameOnCard })
            }}
        >
            <input
                type='text'
                placeholder='name on card'
                onChange={(e) => {
                    setNameOnCard(e.currentTarget.value)
                }}
                value={nameOnCard}
            />
            <div>
                <CreditCardInput />
            </div>
            <button />
        </form>
    )
}

License

MIT © aron23

0.2.51-0

4 years ago

0.2.53-0

4 years ago

0.2.52-0

4 years ago

0.2.49-0

4 years ago

0.2.48-0

4 years ago

0.2.47-0

4 years ago

0.2.43-0

4 years ago

0.2.46-0

4 years ago

0.2.45-0

4 years ago

0.2.39-0

4 years ago

0.2.38-0

4 years ago

0.2.36-0

4 years ago

0.2.35-0

4 years ago

0.2.34-0

4 years ago

0.2.33-0

4 years ago

0.2.32-0

4 years ago

0.2.31-0

4 years ago

0.2.30-0

4 years ago

0.2.29-0

4 years ago

0.2.28-0

4 years ago

0.2.26-0

4 years ago

0.2.25-0

4 years ago

0.2.23-0

4 years ago

0.2.24-0

4 years ago

0.2.21-0

4 years ago

0.2.22-0

4 years ago

0.2.20-0

4 years ago

0.2.19-0

4 years ago

0.2.18-0

4 years ago

0.2.17-0

4 years ago

0.2.16-0

4 years ago

0.2.15-0

4 years ago

0.2.14

4 years ago

0.2.13

4 years ago

0.2.12

4 years ago

0.2.11

4 years ago

0.2.10

4 years ago

0.2.9

4 years ago

0.2.7

4 years ago

0.2.6

4 years ago

0.2.8

4 years ago

0.2.4

4 years ago

0.2.3

4 years ago

0.2.2

4 years ago

0.2.1

4 years ago

0.2.0

4 years ago

0.1.5

4 years ago

0.1.4

4 years ago

0.1.3

4 years ago

0.1.2

4 years ago

0.1.1

4 years ago

0.1.0

4 years ago