/rn-amazonpaymentservices

React Native package for Amazon Payment Services native mobile SDKs

Primary LanguageJavaMIT LicenseMIT

rn-amazon-payment-services

Amazon Payment Service Sdk react native package

Installation

npm install rn-amazon-payment-services

Android

You need to add the repository to your build file. Add it in your root build.gradle (/android/build.gradle) at the end of repositories

allprojects {
  repositories {
    ...
      maven { url "https://android-sdk.payfort.com" }
  }
}

You need to also make sure that following two permission are set in the AndroidManifest.xml (android/app/src/main/AndroidManifest.xml):

    < uses-permission android:name="android.permission.INTERNET" />
    < uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

iOS

1- Add the following code to your Podfile (inside the target section):

pod 'PayFortSDK'

2- Add the following to the bottom of your Podfile:

   post_install do |installer|
        installer.pods_project.targets.each do |target|
          if ['PayFortSDK'].include? target.name
            target.build_configurations.each do |config|
                config.build_settings['BUILD_LIBRARY_FOR_DISTRIBUTION'] = 'YES'
            end
          end
        end
      end


Usage

import {
  getDeviceId,
  FortRequestObject,
  StandardCheckout,
} from 'rn-amazon-payment-services';

// ...

export default function App() {

  const [deviceId, setDeviceId] = useState<string>('');
  const [showStandardCheckout, setShowStandardCheckout] = useState<boolean>(false);

  const setupDeviceId = async () => {
    const id: string = await getDeviceId();
    setDeviceId(id);
  };

  const onSuccess = (response: any) => {
    console.log('success', response);
    setShowCustomScreen(false);
  };

  const onFailure = (response: any) => {
    console.log('failure', response);
    setShowCustomScreen(false);
  };

  const onCancel = (response: any) => {
    console.log('cancel', response);
    setShowStandardCheckout(false);
  };

  // request object example for standard and custom ui checkout
  const requestObject: FortRequestObject = {
    command: 'PURCHASE',
    merchant_reference: 'ORD-0000007682',
    amount: '100',
    currency: 'AED',
    language: 'en',
    customer_email: 'sam@gmail.com',
    sdk_token: sdkToken,
    payment_option: 'VISA',
  };

  //...

  // Standard Checkout component
  return(
      <StandardCheckout
        showStandardCheckoutPage={showStandardCheckout}
        environment={'TEST'}
        requestCode={123455}
        showLoading={true}
        showResponsePage={true}
        requestObject={requestObject}
        onSuccess={onSuccess}
        onFailure={onFailure}
        onCancel={onCancel}
      />
  )
}

// ...

Standard Checkout Props

Name Value Description Mandatory
showStandardCheckoutPage boolean Navigates to Amazon Payment Service Standard Checkout screen Yes
environment 'TEST', 'PRODUCTION' Parameter used to determine whether the request is going to be submitted to the test or production environment. Yes
requestCode number Unique ID for this request. Yes
showLoading boolean Flag to show or hide the loading dialog. Yes
showResponsePage boolean Flag to show or hide response page after payment is done. Yes
requestObject object Parameters you need to send when you send a request (the full list of parameters is in the last section of the document) Yes
onSuccess function Callback to handle when the transaction is processed successfully. Yes
onFailure function Callback to handle when the transaction is failed. Yes
onCancel function Callback to handle when the user cancels the payment by clicking the back button. No

Custom UI Checkout

import {
  CustomCheckoutView,
} from 'rn-amazon-payment-services';


// ...


// Custom Checkout UI component
  return(
    <CustomCheckoutView
      requestObject={requestObject}
      environment={'TEST'}
      style={{ width: 300, height: 400 }}
      payButtonProps={{
        marginLeft: 20,
        marginTop: 20,
        backgroundColor: '#026cff',
        text: 'Pay',
        textSize: 20,
        textColor: '#ffffff',
        buttonWidth: 40,
        buttonHeight: 40,
        borderRadius: 20,
        borderWidth: 1,
        borderColor: '#383333',
      }}
      onFailure={onFailure}
      onSuccess={onSuccess}
    />
  )

Direct Pay Checkout

import {
  DirectPayButton,
  FortRequestObjectDirectPay,
} from 'rn-amazon-payment-services';

//...

  const requestObjectDirectPay: FortRequestObjectDirectPay = {
    command: 'AUTHORIZATION',
    merchant_reference: 'ORD-0000007682',
    amount: '100',
    currency: 'AED',
    language: 'en',
    customer_email: 'sam@gmail.com',
    sdk_token: sdkToken,
    payment_option: 'VISA',
    token_name: tokenName,
    card_security_code: '123',
  };


  return(
      <DirectPayButton
        requestObject={requestObjectDirectPay}
        environment={'TEST'}
        style={{ width: 200, height: 100 }}
        payButtonProps={{
          marginLeft: 20,
          marginTop: 20,
          backgroundColor: '#026cff',
          text: 'Pay',
          textSize: 20,
          textColor: '#ffffff',
          buttonWidth: 40,
          buttonHeight: 40,
          borderRadius: 20,
          borderWidth: 1,
          borderColor: '#383333',
        }}
        onFailure={onFailure}
        onSuccess={onSuccess}
      />
    )

Custom UI and Direct Checkout Props

Name Value Description Mandatory
environment 'TEST', 'PRODUCTION' Parameter used to determine whether the request is going to be submitted to the test or production environment. Yes
style object Set the height and width of the view Yes
payButtonProps object Customization of the pay button Yes
requestObject object Parameters you need to send when you send a request (the full list of parameters is in the last section of the document) Yes
onSuccess function Callback to handle when the transaction is processed successfully. Yes
onFailure function Callback to handle when the transaction is failed. Yes


Request Parameters (FortRequestObject)

Attribute Type Description Mandatory Maximum Example
command Alpha Command.
Possible/ expected values: AUTHORIZATION, PURCHASE
Yes 20 PURCHASE
merchant_reference Alphanumeric The Merchant’s unique order number. Yes 40 XYZ9239-yu898
amount Numeric The transaction’s amount. *Each currency has predefined allowed decimal points that should be taken into consideration when sending the amount Yes 10 10000
currency Alpha The currency of the transaction’s amount in ISO code 3. Yes 3 AED
language Alpha The checkout page and messages language.
Possible/ expected values: en/ ar
Yes 2 en
customer_email Alphanumeric The customer’s email.
Special characters: _ - . @ +
Yes 254 customer@domain.com
sdk_token Alphanumeric An SDK Token to enable using the Amazon Payment Services Mobile SDK. Yes 100 Dwp78q3
token_name Alphanumeric The Token received from the Tokenization process.
Special characters: . @ - _
No 100 Op9Vmp
payment_option Alpha Payment option.
Possible/ expected values:
- MASTERCARD
- VISA
- AMEX
- MADA (for Purchase operations and eci Ecommerce only) Click here to download MADA Branding Document
- MEEZA (for Purchase operations and ECOMMERCE eci only)
No 10 VISA
eci Alpha Ecommerce indicator.
Possible/ expected values: ECOMMERCE
No 150 ECOMMERCE
order_description Alphanumeric A description of the order.
Special characters:'/ . _ - # : $ Space
No 150 iPhone 6-S
customer_ip Alphanumeric It holds the customer’s IP address. *It’s Mandatory, if the fraud service is active. *We support IPv4 and IPv6 as shown in the example below. No 45 IPv4 → 192.178.1.10
IPv6 → 2001:0db8:3042:0002:5a55:caff:fef6:bdbf
customer_name Alpha The customer’s name.
Special characters: _ \ / - .'
No 40 John Smith
phone_number Alphanumeric The customer’s phone number.
Special characters: + - ( ) Space
No 19 00962797219966
settlement_reference Alphanumeric The Merchant submits unique value to Amazon Payment Services. The value is then passed to the Acquiring bank and displayed to the merchant in the Acquirer settlement file. No 34 XYZ9239-yu898
merchant_extra1 Alphanumeric Extra data sent by merchant. Will be received and sent back as received. Will not be displayed in any report. No 250 JohnSmith
merchant_extra2 Alphanumeric Extra data sent by merchant. Will be received and sent back as received. Will not be displayed in any report. No 250 JohnSmith
merchant_extra3 Alphanumeric Extra data sent by merchant. Will be received and sent back as received. Will not be displayed in any report. No 250 JohnSmith
merchant_extra4 Alphanumeric Extra data sent by merchant. Will be received and sent back as received. Will not be displayed in any report. No 250 JohnSmith
merchant_extra5 Alphanumeric Extra data sent by merchant. Will be received and sent back as received. Will not be displayed in any report. No 250 JohnSmith

License

MIT