npm install react-native-square-pos --save
oryarn add react-native-square-pos
react-native link
- Add
RNSquarePos
to your Podfile:pod 'RNSquarePos', :path => '../node_modules/react-native-square-pos'
, and runpod install
- In the "Getting Started" section from Square Docs, complete the following sections: "Update your Info.plist", and "Register your app with Square". Take note of the URL Scheme and the Application ID.
- Make sure you've modified
AppDelegate.m
to includeRCTLinking
.
- Follow "Step 2: Register your application" in Square Android docs.
- Take note of your Application ID (this is found in the Square Developer dashboard, under "Credentials")
Import the package
import SquarePOS from 'react-native-square-pos'
Configure the package
SquarePOS.configure({
applicationId: 'Your Square application ID',
callbackUrl: 'yourUrlScheme://some-unique-path'
})
Make a transaction
const amountInCents = 100
const currency = 'CAD' // 🇨🇦
const options = {
tenderTypes: [
'CARD',
'CARD_ON_FILE',
'CASH',
'OTHER'
],
note: 'This note shows up on the transaction',
locationId: 'Optionally pass location Id', // only on iOS at the moment
}
SquarePOS.transaction(amountInCents, currency, options)
.then((result) => {
// the transaction was successful
const { transactionId, clientTransactionId } = result
})
.catch((err) => {
// the transaction failed.
// see error codes below.
const { errorCode } = err
})
There are a number of different error codes, which may differ on Android / iOS. Eventually, an exhaustive list should be compiled here. For now, here are the important ones:
CANNOT_OPEN_SQUARE
: The user doesn't have the Square POS app installedNOT_LOGGED_IN
: The user isn't logged into a Square accountUSER_NOT_ACTIVE
: Not totally sure what this doesPAYMENT_CANCELLED
: The payment got cancelled from within the appNO_NETWORK_CONNECTION
: No network connection on the phoneAMOUNT_TOO_SMALL
:amountInCents
was too small (iOS only)AMOUNT_TOO_LARGE
:amountInCents
was too large (iOS only)INVALID_REQUEST
: Square Point-of-Sale couldn't process the request (because of malformed data or other) (Android only, checkerr.squareResponse
for more information)
Additionally, because this is a young project:
UNKNOWN_ANDROID_ERROR
, if the response from Square Android SDK if the response wasn't handled by this package. On Android, you'll have access toerr.squareResponse
to see the entire response data sent back from Square Point-of-Sale.UNKNOWN_IOS_ERROR
, if the response from Square iOS SDK wasn't handled by this package.