1.0.1 • Published 1 year ago

@adembacaj/react-native-google-pay v1.0.1

Weekly downloads
-
License
MIT
Repository
github
Last release
1 year ago

@adembacaj/react-native-google-pay

Google Pay native modules for React-Native

Installation

npm install @adembacaj/react-native-google-pay
or
yarn add @adembacaj/react-native-google-pay

Android Extra Actions

In AndroidManifest.xml, inside you need to put:

      <!-- This is required to make Google Pay works -->
      <meta-data
      android:name="com.google.android.gms.wallet.api.enabled"
      android:value="true" />
  <!--  -->

Also inside your ./android/build.gradle file, you need to put:

buildscript {
    // ...
    // Necessary to make GooglePay work.
    allprojects {
        repositories {
            google()
            mavenCentral()
             }
    }
}

Usage

Set Environment

It is important to set environment when you entry Google Pay Screen, or in useEffect, before using isReadyToPay function

import { GooglePay } from '@adembacaj/react-native-google-pay';

// ...

GooglePay.setEnvironment(GooglePay.environments.TEST);

Check isReadyToPay

Before using Google Pay, if you want to enable/disable or show/hide Google Pay button, you need to call this function to check if device is ready to pay or not.

import { GooglePay } from '@adembacaj/react-native-google-pay';

const _allowedCardNetworksExample: AllowedCardNetworkTypes[] = [
  'AMEX',
  'DISCOVER',
  'INTERAC',
  'JCB',
  'VISA',
  'MASTERCARD',
];
/** Before you set allowedCardAuthMethods, confirm with your payment processor and acquirer on whether device tokens (CRYPTOGRAM_3DS) are supported in your region. */
const _allowedAuthMethodsExample: AllowedCardAuthMethodsTypes[] = [
  'PAN_ONLY',
  'CRYPTOGRAM_3DS',
];

// ...
const isReady: boolean = await GooglePay.isReadyToPay(_allowedCardNetworksExample,_allowedAuthMethodsExample);

Direct Google Payment

You can use different payment gateways, but you can also use direct payment.

import { GooglePay } from '@adembacaj/react-native-google-pay';
import type { IRequestData } from '@adembacaj/react-native-google-pay';

const _allowedCardNetworksExample: AllowedCardNetworkTypes[] = [
  'AMEX',
  'DISCOVER',
  'INTERAC',
  'JCB',
  'VISA',
  'MASTERCARD',
];
/** Before you set allowedCardAuthMethods, confirm with your payment processor and acquirer on whether device tokens (CRYPTOGRAM_3DS) are supported in your region. */
const _allowedAuthMethodsExample: AllowedCardAuthMethodsTypes[] = [
  'PAN_ONLY',
  'CRYPTOGRAM_3DS',
];
const _directRequestDataExample: IRequestData = {
  allowedPaymentMethods: {
    tokenizationSpecification: {
      type: 'DIRECT',
      publicKey:
        'BOdoXP+9Aq473SnGwg3JU1aiNpsd9vH2ognq4PtDtlLGa3Kj8TPf+jaQNPyDSkh3JUhiS0KyrrlWhAgNZKHYF2Y=',
    },
    allowedCardNetworks: _allowedCardNetworksExample,
    allowedAuthMethods: _allowedAuthMethodsExample,
    billingAddressRequired: false,
    billingAddressParameters: {
      format: 'FULL',
      phoneNumberRequired: true,
    },
  },
  transactionInfo: {
    totalPrice: '10',
    totalPriceStatus: 'FINAL',
    currencyCode: 'USD',
  },
  shippingAddressRequired: false,
  shippingAddressParameters: {
    phoneNumberRequired: true,
  },
  merchantName: 'Example Merchant',
};

// ...
//Check if device/creditcard is ready to pay
if (isReadyToPay) {
    const token = await GooglePay.requestPayment(_directRequestDataExample);
    Alert.alert('Token: ', token);
    }

Payment Gateway Google Payment

You can use different payment gateways, in this example we will use Adyen.

import { GooglePay } from '@adembacaj/react-native-google-pay';
import type { IRequestData } from '@adembacaj/react-native-google-pay';

const _allowedCardNetworksExample: AllowedCardNetworkTypes[] = [
  'AMEX',
  'DISCOVER',
  'INTERAC',
  'JCB',
  'VISA',
  'MASTERCARD',
];
/** Before you set allowedCardAuthMethods, confirm with your payment processor and acquirer on whether device tokens (CRYPTOGRAM_3DS) are supported in your region. */
const _allowedAuthMethodsExample: AllowedCardAuthMethodsTypes[] = [
  'PAN_ONLY',
  'CRYPTOGRAM_3DS',
];
const _adyenRequestDataExample: IRequestData = {
  allowedPaymentMethods: {
    tokenizationSpecification: {
      type: 'PAYMENT_GATEWAY',
      gateway: 'adyen',
      gatewayMerchantId: 'PAYRAILS',
    },
    allowedCardNetworks: _allowedCardNetworksExample,
    allowedAuthMethods: _allowedAuthMethodsExample,
    billingAddressRequired: true,
    billingAddressParameters: {
      format: 'FULL',
      phoneNumberRequired: true,
    },
  },
  transactionInfo: {
    totalPrice: '10',
    totalPriceStatus: 'FINAL',
    currencyCode: 'USD',
    checkoutOption: 'COMPLETE_IMMEDIATE_PURCHASE',
  },
  merchantName: 'Example Merchant',
};

// ...
//Check if device/creditcard is ready to pay
if (isReadyToPay) {
    const token = await GooglePay.requestPayment(_adyenRequestDataExample);
    Alert.alert('Token: ', token);
    }

Contributing

See the contributing guide to learn how to contribute to the repository and the development workflow.

License

MIT


Made with create-react-native-library

acornacorn-walkabsolute-pathacorn-jsxabort-controlleradd-streamagent-baseaggregate-errorJSONStreamansi-escapesajvacceptsansi-fragmentsanseransi-stylesansi-regexansi-alignappdirsjsanymatchargparsearr-flattenargarr-diffarr-unionarray-unionarray-uniquearray.prototype.flatmaparray-includesarray-ifyarray.prototype.maparrifyasaparray.prototype.tosortedastral-regexast-typesassign-symbolsasync-limiterasync-retryatobbabel-jestbabel-corebabel-plugin-istanbulasyncbabel-plugin-jest-hoistbabel-plugin-polyfill-corejs2babel-plugin-polyfill-corejs3babel-plugin-syntax-trailing-function-commasavailable-typed-arraysbabel-plugin-polyfill-regeneratorbabel-preset-jestbasebabel-preset-current-node-syntaxbabel-preset-fbjsbalanced-matchbefore-after-hookbase64-jsboxenblbserbrace-expansionbrowserslistbufferbracesbuffer-fromcache-basecacheable-lookupcacheable-requestbytescall-bindcaller-pathcaller-callsitechalkcallsitescamelcasecamelcase-keyschar-regexci-infocaniuse-litechardetcjs-module-lexerclass-utilsclean-stackcli-widthcli-cursorcli-boxescloneclone-deepcollect-v8-coveragecolor-convertcli-spinnerscolorettecommandercommand-existscolor-namecliuicollection-visitcompare-funccompressiblecomponent-emittercocommondircompressionconcat-mapconfig-chainconcat-streamconventional-changelogconventional-changelog-angularconfigstoreconventional-changelog-coreconventional-changelog-atomconventional-changelog-conventionalcommitsconventional-changelog-codemirrorconventional-changelog-eslintconnectconventional-changelog-jqueryconventional-changelog-jshintconventional-changelog-emberconventional-changelog-preset-loaderconventional-commits-parserconventional-commits-filterconvert-source-mapconventional-changelog-expressconventional-recommended-bumpconventional-changelog-writercopy-descriptorcore-util-iscosmiconfigcosmiconfig-typescript-loadercross-spawncsstypecrypto-random-stringdargscore-js-compatdayjsdebugcreate-requiredateformatdata-uri-to-bufferdedentdecompress-responsedecamelizedecamelize-keysdeep-extenddeep-isdefaultsdeepmergedefine-lazy-propdecode-uri-componentdefer-to-connectdefine-propertydefine-propertiesdegeneratordenodeifydeprecated-react-native-prop-typesdepddeprecationdestroydiff-sequencesdeldetect-newlinedir-globdoctrinedot-propdiffeastasianwidthelectron-to-chromiumee-firstemoji-regexend-of-streamemitteryenvinfoes-abstracterrorhandleres-get-iteratorerror-exes-set-tostringtagencodeurles-shim-unscopableses-array-method-boxes-properlyerror-stack-parseres-to-primitiveescaladeescape-htmlescape-goateslint-plugin-eslint-commentsescape-string-regexpescodegeneslint-plugin-jesteslint-plugin-react-hookseslint-plugin-reacteslint-plugin-ft-floweslint-plugin-react-nativeeslint-scopeeslint-utilsespreeeslint-plugin-react-native-globalseslint-visitor-keysesprimaesutilsestraverseesqueryevent-target-shimesrecurseexecaexitexpand-bracketsexpectetagextend-shallowextglobfast-globfast-json-stable-stringifyfastqexternal-editorfb-watchmanfast-levenshteinfetch-blobfiguresfile-entry-cachefile-uri-to-pathfill-rangefast-difffinalhandlerfast-deep-equalfind-cache-dirflat-cachefind-upfor-inform-data-encoderformdata-polyfillfragment-cacheflow-parserflattedfor-eachfreshfs.realpathfs-extraftpfunction-bindfunction.prototype.namefseventsget-intrinsicgensyncget-caller-fileget-package-typeget-streamget-symbol-descriptionget-urifunctions-have-namesgit-remote-origin-urlgit-semver-tagsget-pkg-repogit-url-parsegitconfiglocalgit-raw-commitsgit-upget-valueglob-parentglobal-dirsglobglobalsglobalthisglobbygotgraceful-fsgopdgrapheme-splitterhandlebarshard-rejectionhas-bigintshas-flaghas-property-descriptorshas-protohas-symbolshashas-valueshas-tostringtaghas-yarnhas-valuehosted-git-infohermes-profile-transformerhtml-escaperhttp-errorshermes-parserhttp-cache-semanticshttp-proxy-agenticonv-litehuman-signalshttps-proxy-agentignoreieee754import-freshhttp2-wrapperimport-localimport-lazyhermes-estreeindent-stringinflightimage-sizeinquirerinheritsiniimurmurhashipinternal-slotinterpretis-absoluteinvariantis-argumentsis-array-bufferis-bigintis-accessor-descriptoris-boolean-objectis-bufferis-core-moduleis-arrayishis-callableis-data-descriptoris-ciis-directoryis-extendableis-extglobis-date-objectis-generator-fnis-dockeris-descriptoris-fullwidth-code-pointis-git-dirtyis-git-repositoryis-installed-globallyis-mapis-negative-zerois-globis-interactiveis-npmis-objis-numberis-path-cwdis-plain-objectis-number-objectis-plain-objis-path-insideis-sshis-relativeis-shared-array-bufferis-streamis-symbolis-text-pathis-stringis-regexis-typed-arrayis-setis-unc-pathis-unicode-supportedis-typedarrayis-weakrefisarrayis-yarn-globalistanbul-lib-coverageistanbul-lib-reportistanbul-lib-instrumentistanbul-reportsis-windowsis-wsliterate-iteratorisobjectjest-clijest-diffisexejest-circusiterate-valueistanbul-lib-source-mapsjest-docblockjest-changed-filesjest-environment-nodejest-matcher-utilsjest-get-typejest-leak-detectorjest-eachjest-message-utiljest-configjest-haste-mapjest-pnp-resolverjest-mockjest-resolvejest-resolve-dependenciesjest-runnerjest-runtimejest-snapshotjest-utiljest-regex-utiljest-workerjest-validatejoijest-serializerjetifierjest-watcherjs-sdsljscodeshiftjs-tokensjsc-androidjsescjs-yamljson-parse-better-errorsjson-parse-even-better-errorsjson-bufferjson5jsonfilejson-stringify-safejson-stable-stringify-without-jsonifyjson-schema-traversejsonparsekeyvjsx-ast-utilslatest-versionlevnkind-ofkleurlines-and-columnslocate-pathlevenload-json-filelodash.isfunctionlodash.camelcaselodash.ismatchlodash.debouncelodash.kebabcaselodash.isplainobjectlodash.mergelodash.startcaselodash.uniqlodash.throttlelodashlog-symbolslogkittylodash.upperfirstloose-envifylodash.mergewithlru-cachemacos-releasemake-errorlodash.snakecasemakeerrormake-dirmap-cachemap-objmeowlowercase-keysmemoize-onemerge-streammetromerge2metro-cachemap-visitmetro-cache-keymetro-configmetro-coremetro-file-mapmetro-minify-tersermetro-babel-transformermetro-hermes-compilermetro-react-native-babel-transformermetro-inspector-proxymetro-resolvermetro-react-native-babel-presetmetro-runtimemetro-minify-uglifymetro-source-mapmetro-symbolicatemetro-transform-workermicromatchmimemimic-responsemetro-transform-pluginsmime-typesmimic-fnmime-dbmin-indentminimatchmixin-deepmodify-valuesmute-streamminimistmkdirpmsnanomatchnatural-comparenatural-compare-litenetmasknew-github-release-urlnegotiatorminimist-optionsnice-trynode-dirnocacheneo-asyncnode-domexceptionnode-fetchnode-int64node-stream-zipnormalize-package-datanpm-run-pathnormalize-urlnode-releasesob1normalize-pathobject-assignobject-inspectobject-keysobject-visitobject.assignnullthrowsobject.entriesobject.hasownobject.fromentriesobject.valuesobject-copyon-headersonceonetimeopenon-finishedoptionatoros-nameoraobject.pickos-tmpdirp-finallyp-mapp-tryp-locatepac-resolverp-cancelablepackage-jsonp-limitparse-jsonpac-proxy-agentparse-pathpascalcasepath-keyparseurlpath-is-absoluteparse-urlparent-modulepath-existspath-parsepath-typepiratespkg-dirpifypretty-formatpicomatchposix-character-classesprop-typesprocess-nextick-argspromise.allsettledpicocolorsprettier-linter-helpersproto-listprelude-lspromptspromiseproxy-from-envprotocolspunycodepupaqqueue-microtaskrange-parserquick-lruproxy-agentraw-bodypumpreact-devtools-corercreact-native-gradle-pluginreact-native-codegenreact-isreact-shallow-rendererread-pkg-upreadable-streamrecastreadlineregeneraterechoirredentregex-notread-pkgregexp.prototype.flagsreact-refreshregenerate-unicode-propertiesregistry-urlregjsgenregistry-auth-tokenregexpu-coreregenerator-runtimeregjsparserrequire-from-stringrequire-directoryrepeat-stringrepeat-elementregenerator-transformresolve-alpnresolve-cwdregexppresolve-fromrequire-main-filenameresolveresponselikeresolve-urlresolve-globalretryrimrafrun-asyncrun-parallelresolve.exportsrxjssafe-bufferschedulerreusifyrestore-cursorsafer-buffersafe-regex-testsafe-regexsemver-diffsendserialize-errorsemversetprototypeofset-blockingserve-staticset-valueshebang-commandshelljsretside-channelshell-quoteshebang-regexsignal-exitshallow-clonesisteransislice-ansisockssmart-buffersnapdragonsnapdragon-nodesocks-proxy-agentsnapdragon-utilsource-mapsource-map-resolvesource-map-supportsource-map-urlslashspdx-correctspdx-expression-parsespdx-exceptionssplit-stringsplit2splitstatic-extendstackframesprintf-jsspdx-license-idsstack-utilsstacktrace-parserstatusesstop-iteration-iteratorstring-lengthstring.prototype.matchallstring_decoderstring-natural-comparestrip-bomstring-widthstring.prototype.trimstartstrip-final-newlinestrip-indentstring.prototype.trimendstrip-ansisupports-colorsudo-promptstrip-eofsupports-hyperlinkssupports-preserve-symlinks-flagstrip-json-commentstempterminal-linktest-excludetext-extensionstext-tablethrough2throatto-fast-propertiesthroughtmptersertmplto-object-pathto-regexts-nodetr46toidentifierto-regex-rangetrim-newlinestsutilstslibtype-festtype-detecttype-checktypedarraytypedarray-to-bufferuglify-jsunicode-match-property-ecmascriptuglify-estyped-array-lengthunc-path-regexunique-stringunicode-property-aliases-ecmascriptunicode-match-property-value-ecmascriptunion-valueunicode-canonical-property-names-ecmascriptunbox-primitiveunpipeuniversalifyunset-valueupdate-notifierurixurl-joinuri-jsupdate-browserslist-dbutil-deprecateusev8-compile-cache-libuse-sync-external-storeuniversal-user-agentv8-to-istanbulwalkervaryutils-mergevlqvm2wcwidthvalidate-npm-package-licenseweb-streams-polyfillwebidl-conversionswhatwg-fetchwhich-boxed-primitivewidest-linewhatwg-urlwhich-typed-arraywhichwhich-modulewildcard-matchwordwrapwindows-releasewrappyword-wrapwrap-ansixregexpwsxdg-basediryallistyamlyargs-parserwrite-file-atomicyocto-queuey18nxtendyargsyn
1.0.1

1 year ago

1.0.0

1 year ago