react-payscript
React client for payscript
Installation
Npm
npm install react-payscript --save
Yarn
yarn add react-payscript
UMD
<script src="https://unpkg.com/react-payscript@latest/dist/index.js"></script>
Usage
Module
import React from 'react';
import { Form, Group, Input, CreditCard, Button } from 'react-payscript';
const Example = () => {
function onProcessing(e) {
console.log("Processing", e);
}
function onSuccess(e) {
console.log("Success", e);
}
function onError(e) {
console.log("Error", e);
}
return (
<Form
apitoken="xxxxxxx-xxxxx-xxxx-xxxx-xxxxxxx"
payscripttoken="xxxxxxxxxxxxxxxxxxxxxxxxxx"
gateway="xxxxx"
onProcessing={onProcessing}
onSuccess={onSuccess}
onError={onError}
styles={{ 'theme': 'ready!' }} >
<Group>
<CreditCard label="Card" />
<Input label="Name" id="name" placeholder="Card holder's name" required />
</Group>
<Group>
<Input label="Email" id="email" placeholder="example@email.com" />
<Input label="Phone" id="phone" placeholder="(123) 456-7890" />
<Input label="Street" id="street" placeholder="Card billing street" required />
<Input label="Zip" id="zip" placeholder="Card billing zip code" required />
<Input label="Custom 1" id="custom_1" placeholder="Custom 1" />
<Input label="Long Custom text example" id="custom_2" placeholder="Custom 2" />
</Group>
<Button label="PayScript $25" />
</Form>
)
};
export default Example;
UMD
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>React Payscript</title>
</head>
<body>
<main></main>
<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.8.38/browser.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.2.0/umd/react.development.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.2.0/umd/react-dom.development.js"></script>
<script src="https://unpkg.com/react-payscript@latest/dist/index.js"></script>
<script type="text/babel" data-plugins="transform-react-jsx,transform-do-expressions,transform-object-rest-spread" >
const { Form, Group, Input, CreditCard, Button } = reactPayscript;
class Example extends React.Component {
onProcessing(e) {
console.log("Processing", e);
}
onSuccess(e) {
console.log("Success", e);
}
onError(e) {
console.log("Error", e);
}
render() {
return (
<Form
apitoken="xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx"
payscripttoken="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
gateway="xxxxx"
onProcessing={this.onProcessing}
onSuccess={this.onSuccess}
onError={this.onError}
styles={{ 'theme': 'ready!' }} >
<Group>
<CreditCard label="Card" />
<Input label="Name" id="name" placeholder="Card holder's name" required />
</Group>
<Group>
<Input label="Email" id="email" placeholder="example@email.com" />
<Input label="Phone" id="phone" placeholder="(123) 456-7890" />
<Input label="Street" id="street" placeholder="Card billing street" required />
<Input label="Zip" id="zip" placeholder="Card billing zip code" required />
<Input label="Custom 1" id="custom_1" placeholder="Custom 1" />
<Input label="Long Custom text example" id="custom_2" placeholder="Custom 2" />
</Group>
<Button label="PayScript $25" />
</Form>
);
}
}
ReactDOM.render(<Example />,document.querySelector("main"));
</script>
</body>
</html>
Options
Form
- apitoken: string
- payscripttoken: string
- gateway: string
- onProcessing: function
- onSuccess: function
- onError: function
- styles: json
Group
Input
- label: string
- id: string !important
- placeholder: string
- required: boolean
CreditCard
Button
Conventional
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>React Payscript</title>
</head>
<body>
<main></main>
<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.8.38/browser.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.2.0/umd/react.development.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.2.0/umd/react-dom.development.js"></script>
<script type="text/babel" data-plugins="transform-react-jsx,transform-do-expressions,transform-object-rest-spread" >
class Example extends React.Component {
constructor(props) {
super(props)
this.onProcessingCallback = this.onProcessingCallback.bind(this);
this.hostRequest = this.hostRequest.bind(this);
this.onSuccessCallback = this.onSuccessCallback.bind(this);
this.onErrorCallback = this.onErrorCallback.bind(this);
this.onFieldError = this.onFieldError.bind(this);
}
onProcessingCallback(e) {
console.log("Processing")
}
onSuccessCallback(e) {
console.log("Success")
console.log(e)
const TcToken = e.detail.cardToken
const SStoken =e.detail.sessionToken
this.hostRequest(TcToken, SStoken)
}
onErrorCallback(e) {
console.log("Error")
console.log(e.detail)
}
onFieldError(e) {
console.log(e);
}
hostRequest(TcToken, SStoke) {
var data = "ResponseType=json&storecard=1&TransType=Sale&CardToken="+ TcToken +"&SessionToken=" + SStoken + "&apitoken=" + apitoken + "&amount=1.11"
let http = new XMLHttpRequest();
let url = 'http://localhost:8090/ws/encgateway2.asmx/ProcessCreditCard';
http.open("POST", url, true);
http.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
http.send(data);
http.onreadystatechange = function() {
if (http.readyState === 4) {
if (http.status === 200) {
alert(http.responseText)
payScript.removeForm();
payScript.setContent("<h3> create your custom content here! </h3>");
} else {
console.log('failed');
alert(http.responseText)
}
}
}
}
componentWillMount(){
const script = document.createElement("script");
script.src = "http://localhost:8090/public/payscript.js";
script.async = true;
document.body.appendChild(script);
}
componentDidMount() {
var apitoken = null;
window.onload = function () {
payScript.onProcessing = this.onProcessingCallback;
payScript.onSuccess = this.onSuccessCallback;
payScript.onError = this.onErrorCallback;
var fieldStyles = 'payscript-field';
payScript.addField('payscript_field_cardNumber', 'cardNumber', 'credit-card-input payscript-card-input', true, this.onFieldError, 'Card Number');
payScript.addField('payscript_field_cardExpire', 'cardExpire', fieldStyles, true, this.onFieldError, 'MM/YY');
payScript.addField('payscript_field_cardholderName', 'cardholderName', fieldStyles, false, this.onFieldError, 'Card Holder');
payScript.addField('payscript_field_cardVerification', 'cardVerification', fieldStyles, false, this.onFieldError, 'CVV');
payScript.addField('payscript_field_cardZip', 'cardZip', fieldStyles, false, this.onFieldError, 'Card billing zip code');
payScript.addField('payscript_field_cardStreet', 'cardStreet', fieldStyles, false, this.onFieldError);
payScript.addField('payscript_field_cardStreet2', 'cardStreet2', fieldStyles, false, this.onFieldError);
payScript.addField('payscript_field_cardCity', 'cardCity', fieldStyles, false, this.onFieldError);
payScript.addField('payscript_field_cardState', 'cardState', fieldStyles, false, this.onFieldError);
payScript.addField('payscript_field_cardCountry', 'cardCountry', fieldStyles, false, this.onFieldError);
payScript.addField('payscript_field_email', 'cardEmail', 'payscript-field', false, this.onFieldError, 'Email address');
payScript.addField('payscript_field_custStatus', 'custStatus', fieldStyles, false, this.onFieldError);
payScript.addField('payscript_field_custFirstName', 'custFirstName', fieldStyles, false, this.onFieldError);
payScript.addField('payscript_field_custLastName', 'custLastName', fieldStyles, false, this.onFieldError);
payScript.addField('payscript_field_custEmail', 'custEmail', fieldStyles, false, this.onFieldError);
payScript.addField('payscript_field_custTitle', 'custTitle', fieldStyles, false, this.onFieldError);
payScript.addField('payscript_field_custCompany', 'custCompany', fieldStyles, false, this.onFieldError);
payScript.addField('payscript_field_custDepartment', 'custDepartment', fieldStyles, false, this.onFieldError);
payScript.addField('payscript_field_custStreet1', 'custStreet1', fieldStyles, false, this.onFieldError, 'Card Address');
payScript.addField('payscript_field_custStreet2', 'custStreet2', fieldStyles, false, this.onFieldError);
payScript.addField('payscript_field_custCity', 'custCity', fieldStyles, false, this.onFieldError);
payScript.addField('payscript_field_custState', 'custState', fieldStyles, false, this.onFieldError);
payScript.addField('payscript_field_custZip', 'custZip', fieldStyles, false, this.onFieldError);
payScript.addField('payscript_field_custCountry', 'custCountry', fieldStyles, false, this.onFieldError);
payScript.addField('payscript_field_custMobilePhone', 'custMobilePhone', fieldStyles, false, this.onFieldError);
payScript.addField('payscript_field_custDayPhone', 'custDayPhone', fieldStyles, false, this.onFieldError, '(123) 456-7890');
payScript.addField('payscript_field_custNightPhone', 'custNightPhone', fieldStyles, false, this.onFieldError);
payScript.addField('payscript_field_custFax', 'custFax', fieldStyles, false, this.onFieldError);
payScript.addField('payscript_field_custDob', 'custDob', fieldStyles, false, this.onFieldError, 'j');
payScript.addField('payscript_field_custSsn', 'custSsn', fieldStyles, false, this.onFieldError, 'k');
payScript.addField('payscript_field_custDln', 'custDln', fieldStyles, false, this.onFieldError, 'l');
payScript.addField('payscript_field_custDlnSt', 'custDlnSt', fieldStyles, false, this.onFieldError, 'm');
payScript.addField('payscript_field_checkAccount', 'checkAccount', fieldStyles, false, this.onFieldError, 'a');
payScript.addField('payscript_field_checkRouting', 'checkRouting', fieldStyles, false, this.onFieldError, 'b');
payScript.addField('payscript_field_checkAccountType', 'checkAccountType', fieldStyles, false, this.onFieldError, 'c');
payScript.addField('payscript_field_checkAccountKind', 'checkAccountKind', fieldStyles, false, this.onFieldError, 'd');
payScript.addField('payscript_field_checkOwnerName', 'checkOwnerName', fieldStyles, false, this.onFieldError, 'e');
payScript.addField('payscript_field_checkBankCity', 'checkBankCity', fieldStyles, false, this.onFieldError, 'f');
payScript.addField('payscript_field_checkMICR', 'checkMICR', fieldStyles, false, this.onFieldError, 'g');
payScript.addField('payscript_field_checkRawMicr', 'checkRawMicr', fieldStyles, false, this.onFieldError, 'h');
payScript.addField('payscript_field_checkNumber', 'checkNumber', fieldStyles, false, this.onFieldError, 'i');
payScript.addField('payscript_field_custStatus', 'custStatus', fieldStyles, false, this.onFieldError, 'estatus')
payScript.addField('payscript_field_custom1', 'meta', fieldStyles, false, this.onFieldError, "Mothers Name");
payScript.addField('payscript_field_custom2', 'meta', fieldStyles, false, this.onFieldError, "Fathers Name");
payScript.addStyle('http://smarttec.com.do/payscript/public/leo.css');
apitoken = '56B73FDC-8857-1B35-A24A-C565F24F6EAA';
var payscripttoken = 'ed1efeeb3847e623088702d25ad6121ed8415fa7';
var gateway = '10001';
var vendor = '706'
payScript.init(gateway, apitoken, payscripttoken, vendor);
};
}
render() {
return (
<form id="payscript_form">
<div className="payscript-container">
<div className="payscript-box">
<div className="_1tu41si">
<div className="payscript-group">
<div className="payscript-credit-card">
<label className="payscript-label">
<span>Card</span>
<div className="payscript-card-container sc-bdVaJa ixTfPP">
<div className="payscript-card-field sc-bwzfXH iaLzsl" id="field-wrapper">
<img className="payscript-card-image sc-htpNat dcxtLi" src="data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgNTc2IDM3NyIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4gICAgICAgIDx0aXRsZT5wbGFjZWhvbGRlcjwvdGl0bGU+ICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPiAgICA8ZGVmcz48L2RlZnM+ICAgIDxnIGlkPSJQYWdlLTEiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPiAgICAgICAgPGcgaWQ9InBsYWNlaG9sZGVyIj4gICAgICAgICAgICA8cGF0aCBkPSJNNTI3LjkzMzc5MywzNzYuOTk4MjggTDQ4LjA2NjIwNjksMzc2Ljk5ODI4IEMzNS40MjM0ODAzLDM3Ny4xMDM5NjggMjMuMjU2NTg2NCwzNzIuMTg3ODkgMTQuMjQyMzI4MSwzNjMuMzMxNjE4IEM1LjIyODA2OTc1LDM1NC40NzUzNDYgMC4xMDQ5MTcxMDIsMzQyLjQwNDQwNyAwLDMyOS43NzQ0OTQgTDAsNDcuMjI1NDU1NCBDMC4xMDQ5MTcxMDIsMzQuNTk1NTQyNSA1LjIyODA2OTc1LDIyLjUyNDYwNCAxNC4yNDIzMjgxLDEzLjY2ODMzMTkgQzIzLjI1NjU4NjQsNC44MTIwNTk4NSAzNS40MjM0ODAzLC0wLjEwNDAxODI5NiA0OC4wNjYyMDY5LDAuMDAxNjY5NDg2NDYgTDUyNy45MzM3OTMsMC4wMDE2Njk0ODY0NiBDNTQwLjU3NjUyLC0wLjEwNDAxODI5NiA1NTIuNzQzNDE0LDQuODEyMDU5ODUgNTYxLjc1NzY3MiwxMy42NjgzMzE5IEM1NzAuNzcxOTMsMjIuNTI0NjA0IDU3NS44OTUwODMsMzQuNTk1NTQyNSA1NzYsNDcuMjI1NDU1NCBMNTc2LDMyOS45NzI5MTMgQzU3NS42NzI3ODYsMzU2LjE5NTY2MyA1NTQuMTg0MjczLDM3Ny4yMTg4NTcgNTI3LjkzMzc5MywzNzYuOTk4MjggWiIgaWQ9InNoYXBlIiBmaWxsPSIjRThFQkVFIiBmaWxsLXJ1bGU9Im5vbnplcm8iPjwvcGF0aD4gICAgICAgICAgICA8cmVjdCBpZD0iUmVjdGFuZ2xlIiBzdHJva2U9IiM3NTc1NzUiIHN0cm9rZS13aWR0aD0iMjAiIHg9IjQxOCIgeT0iNTgiIHdpZHRoPSI5MSIgaGVpZ2h0PSI2MyIgcng9IjMwIj48L3JlY3Q+ICAgICAgICAgICAgPHJlY3QgaWQ9IlJlY3RhbmdsZS0yIiBmaWxsPSIjNzU3NTc1IiB4PSI1MyIgeT0iMjA4IiB3aWR0aD0iMTA3IiBoZWlnaHQ9IjQwIiByeD0iOCI+PC9yZWN0PiAgICAgICAgICAgIDxyZWN0IGlkPSJSZWN0YW5nbGUtMiIgZmlsbD0iIzc1NzU3NSIgeD0iNDEzIiB5PSIyMDgiIHdpZHRoPSIxMDciIGhlaWdodD0iNDAiIHJ4PSI4Ij48L3JlY3Q+ICAgICAgICAgICAgPHJlY3QgaWQ9IlJlY3RhbmdsZS0yIiBmaWxsPSIjNzU3NTc1IiB4PSIyOTMiIHk9IjIwOCIgd2lkdGg9IjEwNyIgaGVpZ2h0PSI0MCIgcng9IjgiPjwvcmVjdD4gICAgICAgICAgICA8cmVjdCBpZD0iUmVjdGFuZ2xlLTIiIGZpbGw9IiM3NTc1NzUiIHg9IjE3MyIgeT0iMjA4IiB3aWR0aD0iMTA3IiBoZWlnaHQ9IjQwIiByeD0iOCI+PC9yZWN0PiAgICAgICAgPC9nPiAgICA8L2c+PC9zdmc+" />
<label className="sc-bxivhb lifJiC" data-max="9999 9999 9999 9999 9999">
<div id="payscript_field_cardNumber" />
</label>
</div>
</div>
</label>
</div>
<label className="payscript-label">
<span>Expiration</span>
<div id="payscript_field_cardExpire" />
</label>
<label className="payscript-label">
<span>CVV</span>
<div id="payscript_field_cardVerification" />
</label>
<label className="payscript-label">
<span>Name</span>
<div id="payscript_field_cardholderName" />
</label>
</div>
<div className="payscript-group">
<label className="payscript-label">
<span>Email</span>
<div id="payscript_field_email" />
</label>
<label className="payscript-label">
<span>Phone</span>
<div id="payscript_field_custDayPhone" />
</label>
<label className="payscript-label">
<span>Street</span>
<div id="payscript_field_custStreet1" />
</label>
<label className="payscript-label">
<span>Zip</span>
<div id="payscript_field_cardZip" />
</label>
<label className="payscript-label">
<span>Custom 1</span>
<div id="payscript_field_custom1" />
</label>
<label className="payscript-label">
<span>Long Custom text example</span>
<div id="payscript_field_custom2" />
</label>
<label className="payscript-label">
<span> payscript_field_checkAccount </span>
<div id="payscript_field_checkAccount" />
</label>
<label className="payscript-label">
<span> payscript_field_checkRouting </span>
<div id="payscript_field_checkRouting" />
</label>
<label className="payscript-label">
<span> payscript_field_checkAccountType </span>
<div id="payscript_field_checkAccountType" />
</label>
<label className="payscript-label">
<span> payscript_field_checkAccountKind </span>
<div id="payscript_field_checkAccountKind" />
</label>
<label className="payscript-label">
<span> payscript_field_checkOwnerName </span>
<div id="payscript_field_checkOwnerName" />
</label>
<label className="payscript-label">
<span> payscript_field_checkBankCity </span>
<div id="payscript_field_checkBankCity" />
</label>
<label className="payscript-label">
<span> payscript_field_checkMICR </span>
<div id="payscript_field_checkMICR" />
</label>
<label className="payscript-label">
<span> payscript_field_checkRawMicr </span>
<div id="payscript_field_checkRawMicr" />
</label>
<label className="payscript-label">
<span> payscript_field_checkNumber </span>
<div id="payscript_field_checkNumber" />
</label>
<label className="payscript-label">
<span> payscript_field_custDob </span>
<div id="payscript_field_custDob" />
</label>
<label className="payscript-label">
<span> payscript_field_custSsn </span>
<div id="payscript_field_custSsn" />
</label>
<label className="payscript-label">
<span> payscript_field_custDln </span>
<div id="payscript_field_custDln" />
</label>
<label className="payscript-label">
<span> payscript_field_custDlnSt </span>
<div id="payscript_field_custDlnSt" />
</label>
<label className="payscript-label">
<span> payscript_field_custStatus </span>
<div id="payscript_field_custStatus" />
</label>
</div>
<div className="payscript-pay-content">
<div className="payscript-outcome">
<div className="payscript-error _xqnadn">
<div className="payscript-error-item alert-payscipt" id="error-payscript">
</div>
</div>
</div>
<button className="payscript-button" id="payscript_submit" type="button">Submit</button>
</div>
</div>
</div>
</div>
</form>
)
}
}
ReactDOM.render(<Example />,document.querySelector("main"));
</script>
</body>
</html>
Result
License
MIT © PAYSCRIPT