บทแนะนำ

ทำตามขั้นตอนในบทแนะนำนี้เพื่อผสานรวมเว็บแอปพลิเคชันกับ Google Pay API และกำหนดค่าให้ยอมรับบัตรชำระเงิน

ขั้นตอนที่ 1: กำหนดเวอร์ชัน Google Pay API

ประกาศเวอร์ชันของ Google Pay API ที่เว็บไซต์ของคุณใช้ ต้องระบุเวอร์ชันหลักและเวอร์ชันย่อยในช่องของแต่ละออบเจ็กต์ที่ส่ง และจะรวมไว้ในการตอบกลับ

ตัวอย่างโค้ดต่อไปนี้แสดงเวอร์ชัน API ที่ประกาศไว้

const baseRequest = {
  apiVersion: 2,
  apiVersionMinor: 0
};

ขั้นตอนที่ 2: ขอโทเค็นการชำระเงินสำหรับผู้ให้บริการชำระเงิน

Google จะเข้ารหัสข้อมูลเกี่ยวกับบัตรที่ผู้ชำระเงินเลือกเพื่อให้ผู้ให้บริการชำระเงินประมวลผลได้อย่างปลอดภัย

const tokenizationSpecification = {
  type: 'PAYMENT_GATEWAY',
  parameters: {
    'gateway': 'example',
    'gatewayMerchantId': 'exampleGatewayMerchantId'
  }
};

แทนที่ example และ exampleGatewayMerchantId ด้วย ค่าที่เหมาะสมสำหรับผู้ให้บริการชำระเงิน ใช้ตารางต่อไปนี้เพื่อค้นหาค่า gateway และ gatewayMerchantId ที่เฉพาะเจาะจงสำหรับผู้ให้บริการชำระเงิน

เกตเวย์ พารามิเตอร์และเอกสาร
9Pay
  "gateway": "ninepay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

ABA PayWay
  "gateway": "ababank"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

accept.blue
  "gateway": "acceptblue"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

ACI
  "gateway": "aciworldwide"
  "gatewayMerchantId": "YOUR_ENTITY_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

ACpay
  "gateway": "acpay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Acquired.com
  "gateway": "acquired"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Adyen
  "gateway": "adyen"
  "gatewayMerchantId": "YOUR_MERCHANT_ACCOUNT_NAME"

เอกสารประกอบสำหรับนักพัฒนาแอป

AI Fintech
  "gateway": "aifintech"
  "gatewayMerchantId": "YOUR_MERCHANT_ACCOUNT_NAME"

เอกสารประกอบสำหรับนักพัฒนาแอป

Airba Pay
  "gateway": "airbapay""
  "gatewayMerchantId": "YOUR_MERCHANT_ACCOUNT_NAME"

เอกสารประกอบสำหรับนักพัฒนาแอป

Airvend
  "gateway": "airvend"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Airwallex
  "gateway": "airwallex"
  "gatewayMerchantId": "YOUR_MERCHANT_ACCOUNT_NAME"

เอกสารประกอบสำหรับนักพัฒนาแอป

Akurateco
  "gateway": "akuratecolab"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Alfa-Bank
  "gateway": "alfabank"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Algoritma
  "gateway": "algoritma"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Allinpay
  "gateway": "allinpayintl"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

AllPayments
  "gateway": "allpayments"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

alticepay
  "gateway": "alticepay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

AMO FINTECH LLC
  "gateway": "amofintech"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Amwal Pay
  "gateway": "amwalalraqamia"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

ไม่มีเอกสารสำหรับนักพัฒนาแอป

Anedot
  "gateway": "anedot"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

ApcoPay
  "gateway": "apcopay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

APPEX
  "gateway": "epos"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

AsiaBill
  "gateway": "asiabill"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

ไม่มีเอกสารสำหรับนักพัฒนาแอป

แอสซิสต์
  "gateway": "assist"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Assist Belarus
  "gateway": "belassist"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Assist Kazakhstan
  "gateway": "assistkz"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Aurus
  "gateway": "auruspay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Authorize.net
  "gateway": "authorizenet"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Axerve
  "gateway": "gestpay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

azericardgpay
  "gateway": "azericardgpay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

B2B Soft Pay
  "gateway": "b2bsoftpay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

ธนาคาร 131
  "gateway": "bank131"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

BANK RBK
  "gateway": "bankrbkkzpay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Bank Vostok
  "gateway": "bankvostok"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Barclaycard
  "gateway": "barclayssmartpayadvance"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Barion
  "gateway": "barion"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Basis Theory
  "gateway": "basistheory"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

BCC.KZ
  "gateway": "bccpay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

bePaid
  "gateway": "ecomcharge"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Bereke Bank
  "gateway": "berekepay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

ระบบการเรียกเก็บเงิน
  "gateway": "billingsystems"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Bindo Labs Limited
  "gateway": "bindo"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

bisys.kz
  "gateway": "bisysgpay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Bizzon
  "gateway": "bizzon"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

บล็อก
  "gateway": "blocks"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Bluefin
  "gateway": "bluefin"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Bluefin Europe
  "gateway": "bluefineurope"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Blue Media
  "gateway": "bluemedia"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

BlueSnap
  "gateway": "bluesnap"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

BORICA
  "gateway": "borica"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

BPC
  "gateway": "bpcpay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

BR-DGE
  "gateway": "comcarde"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Braintree
  "gateway": "braintree"
  "braintree:apiVersion": "v1"
  "braintree:sdkVersion": "braintree.client.VERSION"
  "braintree:merchantId": "YOUR_BRAINTREE_MERCHANT_ID"
  "braintree:clientKey": "YOUR_BRAINTREE_TOKENIZATION_KEY"

เอกสารประกอบสำหรับนักพัฒนาแอป

Braspag
  "gateway": "cielo"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

BridgerPay
  "gateway": "bridgerpay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

BT Pay
  "gateway": "btpay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Buckaroo
  "gateway": "buckaroo"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Buya
  "gateway": "buya"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

CardCom
  "gateway": "cardcom"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

CardConnect
  "gateway": "cardconnect"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Cardknox
  "gateway": "cardknox"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

cardlink
  "gateway": "cardlink"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Cardstream
  "gateway": "crst"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

กระแสเงินสด
  "gateway": "cashflowsgateway"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Cathay United Bank
  "gateway": "cathaybk"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

CCAvenue UAE
  "gateway": "ccavenueuae"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

CCV
  "gateway": "ccv"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Cecabank
  "gateway": "cecabank"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Celerispay
  "gateway": "celerispay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

CentralPay
  "gateway": "centralpay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Chargehive
  "gateway": "chargehive"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

CharityEngine
  "gateway": "charityengine"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Chase Merchant Services
  "gateway": "chase"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Checkout.com
  "gateway": "checkoutltd"
  "gatewayMerchantId": "YOUR_PUBLIC_KEY"

เอกสารประกอบสำหรับนักพัฒนาแอป

CityPay
  "gateway": "citypay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Payment Gateway ของ Cloud9 (C9PG)
  "gateway": "c9pg"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

CloudPayments
  "gateway": "cloudpayments"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

CloudWalk
  "gateway": "cloudwalk"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Coinflow
  "gateway": "coinflow"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Computop
  "gateway": "computop"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

ConcordPay
  "gateway": "concordpay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Connectum
  "gateway": "connectum"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

ConnexPay
  "gateway": "connexpay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

CoralPay
  "gateway": "coralpay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Corefy
  "gateway": "paycoreio"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Corvus Pay
  "gateway": "corvuspay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Credorax
  "gateway": "credorax"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

CrossPay
  "gateway": "crosspay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

ครอสสวิตช์
  "gateway": "crossswitch"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

CSG Forte
  "gateway": "csgforte"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

CTBC Bank
  "gateway": "ctbcbank"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

CURO Payments
  "gateway": "curopayments"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

CYBERBIZ
  "gateway": "cyberbizpay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Cybersource
  "gateway": "cybersource"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

danube.pay
  "gateway": "danubepay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Datacap Systems, Inc.
  "gateway": "datatrans"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Datatrans
  "gateway": "datatrans"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

DECTA
  "gateway": "decta"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

ไม่มีเอกสารสำหรับนักพัฒนาแอป

Dejavoo
  "gateway": "denovosystempay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

DEUNA
  "gateway": "deuna"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Deutsche Bank AG
  "gateway":
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

ไม่มีเอกสารสำหรับนักพัฒนาแอป

Deutsche Bank – Merchant Solutions
  "gateway":
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

DG Financial Technology, Inc.
  "gateway": "veritrans"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

การเงินดิจิทัล
  "gateway": "digitalfinance"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Dintero
  "gateway": "dintero"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

dLocal
  "gateway": "dlocal"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

DNA Payments
  "gateway": "dnapayments"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Dojo
  "gateway": "dojo"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Dotpay
  "gateway": "dotpay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

e-SiTef - Software Express
  "gateway": "softwareexpress"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

easycard
  "gateway": "easycard"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

EasyPay
  "gateway": "easypay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Easypay EU
  "gateway": "easypaypt"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

EBANX
  "gateway": "ebanx"
  "gatewayMerchantId": "YOUR_PUBLIC_INTEGRATION_KEY"

เอกสารประกอบสำหรับนักพัฒนาแอป

eCard
  "gateway": "ecard"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

ECOMMPAY
  "gateway": "ecommpay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Ecopaynet
  "gateway": "ecopaynet"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

ECPay
  "gateway": "ecpay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

ไม่มีเอกสารสำหรับนักพัฒนาแอป

eftcorporation
  "gateway": "eftcorporation"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

eGHL
  "gateway": "eghl"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Elavon (Converge)
  "gateway": "convergepay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Emerchantpay
  "gateway": "emerchantpay"
  "gatewayMerchantID": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

emspay
  "gateway": "emsonline"
  "gatewayMerchantID": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

เข้ารหัส
  "gateway": "encoded"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

epay
  "gateway": "epay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

EPAYJSC
  "gateway": "epayjsc"
  "gatewayMerchantID": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

EpicPay
  "gateway": "epicpay"
  "gatewayMerchantID": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Espago
  "gateway": "espago"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Etisalat
  "gateway": "etisalatpaymentgateway"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

ไม่มีเอกสารสำหรับนักพัฒนาแอป

EveryPay S.A.
  "gateway": "EveryPay S.A."
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Evervault
  "gateway": "evervault"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

EVONET
  "gateway": "cardinfolink"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

EVOPAY
  "gateway": "EVOPAY"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Evo Payment Gateway
  "gateway": "evopaymentgateway"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

ไม่มีเอกสารสำหรับนักพัฒนาแอป

exactly.com
  "gateway": "exactly"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

การชำระเงินที่แน่นอน
  "gateway": "exactpay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Fat Zebra
  "gateway": "fatzebra"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Fenige
  "gateway": "fenige"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Fexco payUnite
  "gateway": "fexco"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Fibonatix
  "gateway": "fibonatixparagon"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Financial Line
  "gateway": "finline"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Finanso UA
  "gateway": "finansoua"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

fincode byGMO
  "gateway": "fincode"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

FINEXUS
  "gateway": "finexus"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Finix
  "gateway": "finix"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

First American by Deluxe
  "gateway": "firstpay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Fiuu (เดิมคือ Razer Merchant Services และ MOLPay)
  "gateway": "molpay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

FIS Biller Solutions
  "gateway": "fisglobalbsp"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Fiserv
  "gateway": "fiserv"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Fiserv
  "gateway": "fiservipg"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Flitt
  "gateway": "flitt"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Fluid Pay
  "gateway": "fluidpay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

FM Finance LTD
  "gateway": "fmfinanceltd"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

ForteBank
  "gateway": "fortebank"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

สาทิสรูป
  "gateway": "fractal"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Freedom Finance Bank
  "gateway": "axayscom"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

FreedomPay
  "gateway": "freedompay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

FreedomPay.Money
  "gateway": "payboxmoney"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Freepay
  "gateway": "freepay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Frontstream
  "gateway": "frontstreampayments"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Fung Payments
  "gateway": "fungpayments"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

GBPayments
  "gateway": "gbpayments"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

geidea
  "gateway": "geidea"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

GETTRX
  "gateway": "globalelectronictechnology"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Global One Pay
  "gateway": "globalonepay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

ไม่มีเอกสารสำหรับนักพัฒนาแอป

การชำระเงินทั่วโลก
  "gateway": "globalpayments"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

globalpaymentsinc
  "gateway": "globalpaymentsinc"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

GMO Payment Gateway
  "gateway": "gmopg"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

GoDaddy Payments
  "gateway": "godaddypayments"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Good Idea Technologies
  "gateway": "git"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

GoPay
  "gateway": "gopay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

GP Webpay
  "gateway": "gpwebpay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

ไม่มีเอกสารสำหรับนักพัฒนาแอป

Gravity Payments
  "gateway": "gravitypayments"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Gr4vy
  "gateway": "gr4vy"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Halyk Bank
  "gateway": "halykbank"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Helcim
  "gateway": "helcim"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

HIPS
  "gateway": "hips"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

HiTrust
  "gateway": "hitrustpay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

hutko
  "gateway": "hutko"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Hyp
  "gateway": "hyp"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

icard
  "gateway": "icardwallet"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

iCount
  "gateway": "iCount"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

IDid Tecnologia Ltda
  "gateway": "idid"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

iKhokha
  "gateway": "ikhokha"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

IMOJE
  "gateway": "imoje"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Impaya
  "gateway": "impayarus"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

การชำระเงินของ Inovio
  "gateway": "inoviopay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

InPlat
  "gateway": "inplat"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

InstaMed
  "gateway": "instamed"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

IntaSend Solutions Limited
  "gateway": "intasend"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

IntellectMoney
  "gateway": "intellectmoney"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

โซลูชันธุรกรรมแบบอินเทอร์แอกทีฟ
  "gateway": "interactivets"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Interswitch Payment Gallery
  "gateway": "interswitch"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Intervale
  "gateway": "intervale"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

ioka fintech
  "gateway": "ioka"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

iPay88
  "gateway": "ipay88"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

IPSI
  "gateway": "ipsi"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

iQmetrix
  "gateway": "iqmetrixpaymentservicesgateway"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

IXOPAY
  "gateway": "ixopay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

JetPay
  "gateway": "jetpay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

JudoPay
  "gateway": "judopay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

ไม่มีเอกสารสำหรับนักพัฒนาแอป

KapitalBank
  "gateway": "eCommerceKapitalBank"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Kassa
  "gateway": "kassacom"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

kassa24pay
  "gateway": "kassa24pay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Kineox
  "gateway": "kineox"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Klix by Citadele
  "gateway": "klix"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Koin
  "gateway": "koin"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

KPay Group
  "gateway": "kpaygroup"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

การชำระเงินของ Lapsa
  "gateway": "lapsapayments"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

LHV Pank
  "gateway": "lhvpank"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Liberty
  "gateway": "liberty"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Life Pay
  "gateway": "lifepay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Limepay
  "gateway": "limepay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Linkly
  "gateway": "linkly"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

LiqPay
  "gateway": "liqpay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

LITIQON OÜ
  "gateway": "nuvex"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Littlepay
  "gateway": "littlepay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

LogPay
  "gateway": "logpay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Loyale
  "gateway": "loyale"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

lynck
  "gateway": "lynck"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

ดาวไลรา
  "gateway": "lyra"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Magnetiq Bank
  "gateway": "magnetiq"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

maib
  "gateway": "maibecomm"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

MakeCommerce (Maksekeskus)
  "gateway": "maksekeskus"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Maksu GMBH
  "gateway": "maksupayeu"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

จีนกลาง
  "gateway": "mandarin"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Market Pay
  "gateway": "marketpay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

บริการเกตเวย์การชำระเงินของ Mastercard
  "gateway": "mpgs"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

MerchantE
  "gateway": "merchante"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Midtrans
  "gateway": "midtrans"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Merchant Warrior
  "gateway": "merchantwarrior"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Minsait Payments Systems
  "gateway": "minsaitpaymentsgateway"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

MITEC
  "gateway": "mitecmx"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

MIXPLAT
  "gateway": "mixplat"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

MOBI.Money
  "gateway": "mobimoney"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Modulbank
  "gateway": "modulbank"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Mollie
  "gateway": "mollie"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Mondido
  "gateway": "mondido"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Monei
  "gateway": "monei"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

โมเนก
  "gateway": "monek"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Moneris
  "gateway": "moneris"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Moneta
  "gateway": "moneta"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

ไม่มีเอกสารสำหรับนักพัฒนาแอป

Monext
  "gateway": "monext"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

MoneyHash
  "gateway": "moneyhash"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Money.Mail.Ru
  "gateway": "moneymailru"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

monripayments
  "gateway": "monripayments"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Moov
  "gateway": "moov"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

MPay
  "gateway": "managepay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

mstartipg
  "gateway": "mstartipg"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Multicarta
  "gateway": "mulitcarta"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

MultiSafepay
  "gateway": "multisafepay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Mundipagg
  "gateway": "mundipagg"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

MyCheck
  "gateway": "mycheck"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

MyChoice2Pay
  "gateway": "mychoice2pay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

MyFatoorah
    "gateway": "myfatoorah"
    "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

MyPay
  "gateway": "mypay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

ไม่มีเอกสารสำหรับนักพัฒนาแอป

myPOS
  "gateway": "mypos"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

N&TS Group
  "gateway": "netsgroup"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

NCCC
  "gateway": "nccc"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Neolink
  "gateway": "neolinkprocessing"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Neon Pay
  "gateway": "neonpay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Netopia
  "gateway": "netopia"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Netvalve
  "gateway": "netvalve"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Network International
  "gateway": "networkintl"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Newebpay (เดิมชื่อ STPath, Pay2Go)
  "gateway": "newebpay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Newtech
  "gateway": "newtechmobile"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Nexi
  "gateway": "nexi"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Nexi Easy
  "gateway": "easy"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

NMI
  "gateway": "gatewayservices"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

noon payments
  "gateway": "noonpayments"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Noqoody Pay
  "gateway": "noqoodypay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Novalnet
  "gateway": "novalnet"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Nexi Relay
  "gateway": "nexirelay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

NTT DATA
  "gateway": "nttdatahk"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Nuvei
  "gateway": "nuvei"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Oceanpayment
  "gateway": "oceanpayment"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Omise
  "gateway": "omise"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Omno
  "gateway": "omno"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

One Inc
  "gateway": "oneinc"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Onelya
  "gateway": "onelya"
  "gatewayMerchantId": "YOUR_GATWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Onerway
  "gateway": "ronghan"
  "gatewayMerchantId": "YOUR_GATWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

OneVision Limited
  "gateway": "onevision"
  "gatewayMerchantId": "YOUR_GATWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

OnPay
  "gateway": "onpayio"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Opayo โดย Elavon
  "gateway": "opayoelavon"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

OrkestaPay
  "gateway": "orkestapay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Oschadbank
  "gateway": "oschadbank"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

pagarme
  "gateway": "pagarme"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

PagBank
  "gateway": "pagbank"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

PagBrasil
  "gateway": "pagbrasil"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

PagSeguro
  "gateway": "pagsegurointernational"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

PAY2M
  "gateway": "pay2m"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Payarc
  "gateway": "payarc"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Pay.com
  "gateway": "paycom"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

PAYCOMET
  "gateway": "paycomet"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Paycross Ltd
  "gateway": "paycross"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Paydock
  "gateway": "paydock"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

PayEase
  "gateway": "payeasenet"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

PayEngine
  "gateway": "payengine"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

PayerMax
  "gateway": "payermax"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

PayFabric
  "gateway": "payfabric"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

PayFacto
  "gateway": "payfacto"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

PayFast
  "gateway": "gopayfastuat"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

paygent
  "gateway": "paygent"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Payhub
  "gateway": "payhub"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

PayKKa
  "gateway": "paykkaeu"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

PayLane
  "gateway": "paylane"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Payler
  "gateway": "payler"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

PayLink®
  "gateway": "paylink"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

เพย์โหลด
  "gateway": "payload"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Paymark
  "gateway": "paymark"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

PayMaster
  "gateway": "paymaster"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Payment Fusion
  "gateway": "paymentfusion"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Paymentvision
  "gateway": "paymentvision"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Paymentwall
  "gateway": "paymentwall"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Paymo
  "gateway": "paymo"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Paymob
  "gateway": "gpaymob"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

PayMongo
  "gateway": "paymongo"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Paymtech
  "gateway": "paymtech"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

PayNearMe
  "gateway": "paynearme"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Payneteasy
  "gateway": "payneteasy"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Pay.nl
  "gateway": "paynl"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Paynopain
  "gateway": "paynopain"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

PayOne
  "gateway": "payone"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

PayOnline
  "gateway": "payonline"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Payoo
  "gateway": "payoo"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

ทฤษฎีการชำระเงิน
  "gateway": "paytheory"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

PayPlus
  "gateway": "payplus"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

PayPro Pvt Ltd
  "gateway": "paypro"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

ไม่มีเอกสารสำหรับนักพัฒนาแอป

Payrails
  "gateway": "payrails"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Payrexx
  "gateway": "payrexx"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

PayRiff
  "gateway": "payriff"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Payrix
  "gateway": "payrix"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Paysafe
  "gateway": "paysafe"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Payscout
  "gateway": "payscout"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Paysend Business
  "gateway": "paysend"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Paysoft
  "gateway": "paysoft"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Pay360
  "gateway": "pay360"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

PayTech
  "gateway": "paytechsolutions"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

PayTech Ukraine
  "gateway": "paytech"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Payten Payment Gateway
  "gateway": "paytentr"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Paythru
  "gateway": "paythru"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Payture
  "gateway": "payture"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

PayU
  "gateway": "payu"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

PayU LATAM
  "gateway": "payulatam"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

PAYUNi
  "gateway": "payuni"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

PayU โรมาเนีย
  "gateway": "payuro"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

PayU Russia
  "gateway": "payuru"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Payway
  "gateway": "payway"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Paywiser
  "gateway": "paywiser"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Payzone Ireland
  "gateway": "payzoneireland"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

PBT Gateway Services Ltd
  "gateway": "pbtgateway"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Pelecard
  "gateway": "pelecard"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Pensopay
  "gateway": "pensopay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Pikassa
  "gateway": "pikassa"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

PingPong
  "gateway": "pingpongx"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Pin Payments
  "gateway": "pinpayments"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

ดาวเคราะห์
  "gateway": "cccpayment"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

PlanetPay
  "gateway": "itcardpaymentservice"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Plategka.com
  "gateway": "plategkacom"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Platon
  "gateway": "platon"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

ส้มโอ
  "gateway": "pomelopay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Portmone
  "gateway": "portmonecom"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Preczn
  "gateway": "preczn"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

PrimePay
  "gateway": "primepay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Primer
  "gateway": "primer"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Procard
  "gateway": "procard"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

ProcessOut
  "gateway": "processout"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Przelewy24
  "gateway": "przelewy24"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

PSCB
  "gateway": "pscbru"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

PSiGate Inc.
  "gateway": "psigate"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

PXP Financial
  "gateway": "pxpfinancial"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Qenta Payment CEE
  "gateway": "qenta"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

QIWI
  "gateway": "qiwi"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Qualpay
  "gateway": "qualpay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

QuickPay
  "gateway": "quickpay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Qvalent
  "gateway": "qvalent"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

รัศมี
  "gateway": "radial"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Raiffeisen Processing Centre
  "gateway": "raiffeisenprocessingcentre"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Rapyd
  "gateway": "rapyd"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

RBK.money
  "gateway": "rbkmoney"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Rebail Capital
  "gateway": "rebailcapital"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Rebilly
  "gateway": "Rebilly"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Recurly
  "gateway": "recurly"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Reddot
  "gateway": "reddotpayment"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Rede
  "gateway": "rede"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Redsys
  "gateway": "redsys"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Reepay
  "gateway": "reepay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

RocketGate
  "gateway": "rocketgate"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

รูทไลน์
  "gateway": "rootline"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Russian Standard Bank
  "gateway": "rsb"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Ryft
  "gateway": "ryft"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Safepay
  "gateway": "safepay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Saferpay
  "gateway": "worldlinesaferpay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Safexpay
  "gateway": "safexpay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Sberbank
  "gateway": "sberbank"
  "gatewayMerchantId": "YOUR_ORGANIZATION_NAME"

เอกสารประกอบสำหรับนักพัฒนาแอป

SEB Baltic
  "gateway": "sebbaltic"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

SEBES Technology
  "gateway": "sebes"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

SecurePay
  "gateway": "securepay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Sense Bank
  "gateway": "sensebank"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

SensePass
  "gateway": "sensepass"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Servicios Digitales Popular S.A.
  "gateway": "pagosazul"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Shift4
  "gateway": "shift4payments"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Shiji Group
  "gateway": "shijipaymentsolutions"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

การคุกคามทางเพศ (SH) ที่มีความรุนแรงสูง
  "gateway": "shstartpay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

shvarenapay
  "gateway": "shvarenapay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

simbasoft
  "gateway": "simbasoft"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Sipay
  "gateway": "sipay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

SmartPay
  "gateway": "smartpay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

บริการชำระเงินของ Softbank
  "gateway": "sbps"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Softtouch POS and Payments
  "gateway": "softtouch"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

ของแข็ง
  "gateway": "solid"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

บริการชำระเงินของ Sony
  "gateway": "sonypaymentservices"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Splitit
  "gateway": "splitit"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Spreedly
  "gateway": "spreedly"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

สี่เหลี่ยมจัตุรัส
  "gateway": "square"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

SredaPay
  "gateway": "sredapay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

SSLCOMMERZ
  "gateway": "sslcommerz"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Stancer
  "gateway": "stancer"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Stripe
  "gateway": "stripe"
  "stripe:version": "2018-10-31"
  "stripe:publishableKey": "YOUR_PUBLIC_STRIPE_KEY"

เอกสารประกอบสำหรับนักพัฒนาแอป

SUMIT
  "gateway": "sumit"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Suntech
  "gateway": "esafe"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

การชำระเงินของ Surfboard
  "gateway": "surfboard"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Svea Bank
  "gateway": "svea"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Swedbank Baltic
  "gateway": "swedbankbaltic"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Swedbank Pay
  "gateway": "payexswedbankpay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

TabaPay
  "gateway": "tabapay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

TapPay (Cherri Tech)
  "gateway": "tappay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

TapPayments
  "gateway": "tappayments"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

tarlanpayments
  "gateway": "tarlanpayments"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

ลิงก์ TAS
  "gateway": "taslink"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Tatra banka (CardPay)
  "gateway": "tatrabanka"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

ไม่มีเอกสารสำหรับนักพัฒนาแอป

TEKO
  "gateway": "teko"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

theMAP
  "gateway": "themap"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Till Payments
  "gateway": "tillpayments"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Time Project LLC
  "gateway": "timeproject"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Tinkoff
  "gateway": "tinkoff"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

TIPTOP PAY
  "gateway": "tiptoppay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

ไม่มีเอกสารสำหรับนักพัฒนาแอป

TPay
  "gateway": "tpaycom"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

TPay.com
  "gateway": "tpay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Transact Campus
  "gateway": "transactcampus"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Transact Pro
  "gateway": "transactpro"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

เครือข่ายบริการธุรกรรม
  "gateway": "tns"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Transpayrent
  "gateway": "transpayrent"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Tranzila
  "gateway": "tranzila"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Tranzzo
  "gateway": "tranzzo"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Tribe Payments
  "gateway": "tribepayments"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Truevo
  "gateway": "truevo"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

TrustPay
  "gateway": "trustpay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

การชำระเงินที่เชื่อถือได้
  "gateway": "trustpayments"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

ปลาทูน่า
  "gateway": "tuna"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

2can&ibox
  "gateway": "twocan"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

UAPAY
  "gateway": "uapay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

UBRR
  "gateway": "ubrrpay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Ukrcardpay
  "gateway": "ukrcardpay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

UkrGasBank Pay
  "gateway": "ukrgasbankpay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Unibank OJSC
  "gateway": "unibankcheckout"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

unitedfinancialcorporation
  "gateway": "unitedfinancialcorporation"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Uniteller
  "gateway": "uniteller"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Unitpay
  "gateway": "unitpay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Unlimint
  "gateway": "unlimint"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Unzer
  "gateway": "unzer"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Unzer Austria
  "gateway": "unzeraustria"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

UPC
  "gateway": "upc"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Upgate
  "gateway": "upgate"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

USAePay
  "gateway": "usaepay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

UseePay
  "gateway": "useepay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

USIO, Inc.
  "gateway": "usio"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Valitor
  "gateway": "valitor"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

value.io
  "gateway": "inspirecommerce"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Vanco
  "gateway": "vanco"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

VantagePay
  "gateway": "vantagepay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

ไม่มีเอกสารสำหรับนักพัฒนาแอป

Vantiv
  "gateway": "vantiv"
  "vantiv:merchantPayPageId": "YOUR_PAY_PAGE_ID"
  "vantiv:merchantOrderId": "YOUR_ORDER_ID"
  "vantiv:merchantTransactionId": "YOUR_TRANSACTION_ID"
  "vantiv:merchantReportGroup": "*web"

เอกสารประกอบสำหรับนักพัฒนาแอป

Vayapay
  "gateway": "vayapay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

ไม่มีเอกสารสำหรับนักพัฒนาแอป

Vendo
  "gateway": "vendoservices"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Verestro
  "gateway": "verestro"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

การรักษาความปลอดภัยดีมาก
  "gateway": "verygoodsecurity"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Victoriabank
  "gateway": "victoriabank"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Vindicia
  "gateway": "vindicia"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Viva Wallet
  "gateway": "vivawallet"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

VTEX
  "gateway": "vtex"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Waffo
  "gateway": "waffo"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Wallee
  "gateway": "wallee"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Walletdoc
  "gateway": "walletdoc"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Walletto
  "gateway": "walletto"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

WayForPay
  "gateway": "wayforpay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

WEAT
  "gateway": "weatpay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

WhenThen
  "gateway": "whenthen"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Windcave
  "gateway": "windcave"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Wirebank
  "gateway": "wirebank"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Wirecard
  "gateway": "wirecard"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

WOOPPAY
  "gateway": "wooppay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

WooshPay
  "gateway": "swooshtransfer"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Worldline (GlobalCollect)
  "gateway": "globalcollect"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Worldline - Ingenico (WL Online Checkout)
  "gateway": "worldlineingenicoogone"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Worldline Nordics (Worldline Online Checkout)
  "gateway": "worldlineonlinecheckout"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Worldline Sips
  "gateway": "wlsips"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Worldnet
  "gateway": "worldnet"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Worldpay
  "gateway": "worldpay"
  "gatewayMerchantId": "YOUR_WORLDPAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Wpay
  "gateway": "wpayaus"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

WSPay
  "gateway": "wspay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

xMoney
  "gateway": "xmoneypay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

XPATE
  "gateway": "xpate"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

xpay
  "gateway": "xpaycomua"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

XPay by PostEx
  "gateway": "xpaybypostex"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

YabandPay B.V.
  "gateway": "yabandpay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

ระบบการชำระเงิน YIĞIM
  "gateway": "yigim"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

ไม่มีเอกสารสำหรับนักพัฒนาแอป

ЮKassa (YooKassa)
  "gateway": "yoomoney"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Yuno
  "gateway": "yuno"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Z-credit
  "gateway": "zcredit"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Zalopay
  "gateway": "zalopay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

ZEN.com
  "gateway": "zen"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Zest
  "gateway": "zestpayment"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

Zuora
  "gateway": "zuora"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

เอกสารประกอบสำหรับนักพัฒนาแอป

เคล็ดลับ: example เป็นชื่อเกตเวย์ที่ถูกต้องในสภาพแวดล้อมการทดสอบ หากต้องการลองใช้ API คุณสามารถปล่อยให้ตัวอย่างโค้ดด้านบนเป็นไปตามเดิมได้ เมื่อคุณใช้exampleเกตเวย์ ไซต์จะไม่ได้รับข้อมูลบัตรที่ใช้ทำธุรกรรมได้ แต่ขั้นตอนของผู้ใช้จะเหมือนเดิม

PAYMENT_GATEWAYประเภทการแปลงข้อมูลเป็นโทเค็นเป็นรูปแบบการติดตั้งใช้งานของผู้ขายที่พบบ่อยที่สุด ของวิธีการชำระเงินด้วยบัตรใน Google Pay API หากระบบไม่รองรับผู้ให้บริการชำระเงินของคุณ คุณอาจรับ Google Pay ได้โดยการผสานรวมโดยตรง ดูข้อมูลเพิ่มเติมได้ที่ เอกสารประกอบ การแปลงโทเค็นโดยตรง

ขั้นตอนที่ 3: กำหนดเครือข่ายบัตรชำระเงินที่รองรับ

กำหนดเครือข่ายบัตรที่เว็บไซต์ของคุณยอมรับ ดูตัวอย่างโค้ดต่อไปนี้

const allowedCardNetworks = ["AMEX", "DISCOVER", "INTERAC", "JCB", "MASTERCARD", "VISA"];

Google Pay API อาจแสดงบัตรที่บันทึกไว้ใน Google.com (PAN_ONLY) หรือโทเค็นอุปกรณ์ในอุปกรณ์ที่ใช้ Android ซึ่งได้รับการตรวจสอบสิทธิ์ด้วยรหัสลับ 3-D Secure (CRYPTOGRAM_3DS) คุณสามารถควบคุมได้ว่าจะให้แสดงทั้ง 2 วิธีหรือเพียงวิธีเดียว

ก่อนตั้งค่า allowedCardAuthMethods โปรดสอบถามผู้ประมวลผลการชำระเงินและ ผู้รับชำระเงินว่าภูมิภาคของคุณรองรับโทเค็นอุปกรณ์ (CRYPTOGRAM_3DS) หรือไม่

ดูตัวอย่างโค้ดต่อไปนี้

const allowedCardAuthMethods = ["PAN_ONLY", "CRYPTOGRAM_3DS"];

ดูข้อมูลเพิ่มเติมได้ที่ CardParameters ในเอกสารประกอบการอ้างอิงออบเจ็กต์ นอกจากนี้ โปรดตรวจสอบกับเกตเวย์หรือผู้ประมวลผลเพื่อดูเครือข่ายบัตรที่รองรับ และการรองรับโทเค็นอุปกรณ์ Android

สำคัญ:
  • ตรวจสอบว่าคุณได้ใช้การตรวจสอบความเสี่ยงและการควบคุมที่มีอยู่สำหรับการชำระเงิน ธุรกรรมกับธุรกรรม Google Pay ด้วย การตรวจสอบความถูกต้องและการตรวจสอบการฉ้อโกงของ Google Pay ไม่ได้มีวัตถุประสงค์เพื่อแทนที่กระบวนการจัดการความเสี่ยงของคุณ
  • หากคุณรองรับ PAN_ONLY ให้ตรวจสอบว่าคุณทริกเกอร์ 3D Secure (การตรวจสอบสิทธิ์แบบเพิ่มขั้นตอน) สำหรับธุรกรรม PAN ของ Google Pay PAN_ONLY ในลักษณะเดียวกับที่คุณทริกเกอร์ 3D Secure สำหรับธุรกรรมบัตรปกติ

ขั้นตอนที่ 4: อธิบายวิธีการชำระเงินที่อนุญาต

หากต้องการอธิบายวิธีการชำระเงินที่อนุญาต ให้ทำตามขั้นตอนต่อไปนี้

  1. รวมวิธีการตรวจสอบสิทธิ์ที่รองรับและเครือข่ายบัตรที่รองรับเพื่อ อธิบายการรองรับCARDวิธีการชำระเงินของเว็บไซต์ ดูตัวอย่างโค้ดต่อไปนี้
    const baseCardPaymentMethod = {
      type: 'CARD',
      parameters: {
        allowedAuthMethods: allowedCardAuthMethods,
        allowedCardNetworks: allowedCardNetworks
      }
    };
  2. ขยายออบเจ็กต์วิธีการชำระเงินของบัตรพื้นฐานเพื่ออธิบายข้อมูลที่คุณคาดว่าจะได้รับคืน ไปยังแอปพลิเคชัน ระบุคำอธิบายของข้อมูลการชำระเงินที่ใช้โทเค็น ดูตัวอย่างโค้ดต่อไปนี้
    const cardPaymentMethod = Object.assign(
      {tokenizationSpecification: tokenizationSpecification},
      baseCardPaymentMethod
    );
  3. ดูข้อมูลเพิ่มเติมเกี่ยวกับ parameters ที่รองรับได้ที่ CardParameters

    ปัจจุบัน Google Pay รองรับเฉพาะประเภทวิธีการชำระเงิน CARD

ขั้นตอนที่ 5: โหลดไลบรารี JavaScript ของ Google Pay API

หากต้องการโหลดไลบรารี JavaScript ของ Google Pay API ให้ทำตามขั้นตอนต่อไปนี้

  1. รวม JavaScript ที่โฮสต์ของ Google ไว้ในหน้าเว็บ ดูตัวอย่างโค้ดต่อไปนี้
    <script
      async
      src="https://pay.google.com/gp/p/js/pay.js"
      onload="console.log('TODO: add onload function')">
    </script>
  2. หลังจากโหลดไลบรารี JavaScript ของ Google Pay API แล้ว ให้เริ่มต้นออบเจ็กต์ PaymentsClient การพัฒนาครั้งแรกใช้สภาพแวดล้อม TEST ซึ่งจะแสดงวิธีการชำระเงินจำลอง ที่เหมาะสำหรับการอ้างอิงโครงสร้างของการตอบกลับการชำระเงิน ใน สภาพแวดล้อมนี้ วิธีการชำระเงินที่เลือกไม่สามารถทำธุรกรรมได้ ดูตัวอย่างโค้ดต่อไปนี้
    หมายเหตุ: เราขอแนะนำให้คุณเริ่มต้น paymentsClient เพียงครั้งเดียว ใช้อินสแตนซ์เดียวกันเมื่อเรียกใช้ API อื่นๆ ทั้งหมด เช่น CreateButton, IsReadyToPay, PrefetchPaymentData และ LoadPaymentData
    const paymentsClient =
        new google.payments.api.PaymentsClient({environment: 'TEST'});

    ดูข้อมูลเพิ่มเติมเกี่ยวกับข้อกำหนดสำหรับสภาพแวดล้อม PRODUCTION ที่ แสดงวิธีการชำระเงินที่เรียกเก็บเงินได้ที่รายการตรวจสอบการผสานรวม

ขั้นตอนที่ 6: กำหนดความพร้อมในการชำระเงินด้วย Google Pay API

หากต้องการพิจารณาความพร้อมในการชำระเงินด้วย Google Pay API ให้ทำตามขั้นตอนต่อไปนี้

  1. เพิ่มวิธีการชำระเงินที่อนุญาตไปยังออบเจ็กต์คำขอฐาน ดูตัวอย่างโค้ดต่อไปนี้
    const isReadyToPayRequest = Object.assign({}, baseRequest);
    isReadyToPayRequest.allowedPaymentMethods = [baseCardPaymentMethod];
  2. เรียกใช้ isReadyToPay() เพื่อ ตรวจสอบว่าอุปกรณ์และเบราว์เซอร์ปัจจุบันรองรับ Google Pay API สำหรับ วิธีการชำระเงินที่ระบุหรือไม่ ดูตัวอย่างโค้ดต่อไปนี้
    paymentsClient.isReadyToPay(isReadyToPayRequest)
        .then(function(response) {
          if (response.result) {
            // add a Google Pay payment button
          }
        })
        .catch(function(err) {
          // show error in developer console for debugging
          console.error(err);
        });

ขั้นตอนที่ 7: เพิ่มปุ่มชำระเงินด้วย Google Pay

เพิ่มปุ่มชำระเงินด้วย Google Pay ลงในหน้าเว็บเพื่อกระตุ้นให้ผู้เลือกซื้อชำระเงินด้วยวิธีการชำระเงินที่ API ของ Google Pay และเว็บไซต์ของคุณรองรับ ดูข้อมูลเพิ่มเติมเกี่ยวกับ ประเภทปุ่ม สี และข้อกำหนดในการแสดงที่มี ได้ที่หลักเกณฑ์การใช้แบรนด์

ดูตัวอย่างโค้ดปุ่มชำระเงินต่อไปนี้

const button =
    paymentsClient.createButton({onClick: () => console.log('TODO: click handler'),
    allowedPaymentMethods: []}); // same payment methods as for the loadPaymentData() API call
document.getElementById('container').appendChild(button);

ขั้นตอนที่ 8: สร้างออบเจ็กต์ PaymentDataRequest

หากต้องการสร้างออบเจ็กต์ PaymentDataRequest ให้ทำตามขั้นตอนต่อไปนี้

  1. สร้างออบเจ็กต์ JavaScript ที่อธิบายการรองรับ Google Pay API ของเว็บไซต์ ดูรายการพร็อพเพอร์ตี้ทั้งหมดที่รองรับได้ที่ PaymentDataRequest ดูตัวอย่างโค้ดต่อไปนี้
    const paymentDataRequest = Object.assign({}, baseRequest);
  2. เพิ่มวิธีการชำระเงินที่แอปของคุณรองรับ เช่น การกำหนดค่าข้อมูลเพิ่มเติม ที่คาดว่าจะได้รับในการตอบกลับ ดูตัวอย่างโค้ดต่อไปนี้
    paymentDataRequest.allowedPaymentMethods = [cardPaymentMethod];
  3. กำหนดราคารวมและสกุลเงินเพื่อให้ผู้เลือกซื้อให้สิทธิ์ ดูตัวอย่างโค้ดต่อไปนี้
    สำคัญ: ผู้ขายที่ประมวลผลธุรกรรมในเขตเศรษฐกิจยุโรป (EEA) หรือประเทศอื่นๆ ที่อยู่ภายใต้การยืนยันตัวตนลูกค้าแบบขั้นสูง (SCA) ต้องระบุพารามิเตอร์ countryCode, totalPrice และ merchantName เพื่อให้เป็นไปตามข้อกำหนด SCA
    paymentDataRequest.transactionInfo = {
      totalPriceStatus: 'FINAL',
      totalPrice: '123.45',
      currencyCode: 'USD',
      countryCode: 'US'
    };
  4. ระบุชื่อผู้ขายที่ผู้ใช้มองเห็นได้ และใช้ค่า TEST merchantId เมื่ออยู่ใน TEST ดูรายละเอียดเพิ่มเติมและข้อมูลเกี่ยวกับเวลาที่ต้องแทนที่ค่า TEST merchantId ได้ที่ MerchantInfo ดูตัวอย่างโค้ดต่อไปนี้ของชื่อผู้ขายที่ผู้ใช้มองเห็นได้
    paymentDataRequest.merchantInfo = {
      merchantName: 'Example Merchant'
      merchantId: '12345678901234567890'
    };
    หมายเหตุ: ค่า TEST merchantId ของเราเป็นตัวเลข merchantId ที่เฉพาะเจาะจงอาจเป็นตัวเลขหรือตัวอักษรและตัวเลขคละกัน ดูรายละเอียดเพิ่มเติมเกี่ยวกับวิธีขอรับ merchantId ที่เฉพาะเจาะจงได้ที่ MerchantInfo

ขั้นตอนที่ 9: ลงทะเบียนตัวแฮนเดิลเหตุการณ์สําหรับท่าทางสัมผัสของผู้ใช้

หากต้องการลงทะเบียนตัวแฮนเดิลเหตุการณ์สำหรับท่าทางของผู้ใช้ ให้ทำตามขั้นตอนต่อไปนี้

  1. ลงทะเบียนตัวแฮนเดิลเหตุการณ์คลิกสําหรับปุ่มซื้อ ตัวแฮนเดิลเหตุการณ์จะเรียกใช้ loadPaymentData() ทันทีหลังจากที่โต้ตอบกับปุ่มชำระเงินของ Google Pay
  2. หลังจากผู้ใช้ Google ให้สิทธิ์เว็บไซต์ของคุณในการรับข้อมูลเกี่ยวกับรูปแบบการชำระเงินที่ผู้ใช้เลือกและข้อมูลติดต่อที่ไม่บังคับ ให้จัดการการตอบกลับจาก Google Pay API
  3. ดึงโทเค็นการชำระเงินจากpaymentDataการตอบกลับ หากคุณใช้การผสานรวมเกตเวย์ ให้ส่งโทเค็นนี้ไปยังเกตเวย์โดยไม่ต้องแก้ไข
    หมายเหตุ: ในสภาพแวดล้อม TEST การตอบกลับการชำระเงิน จะมีข้อมูลสรุปเกี่ยวกับวิธีการชำระเงินที่เลือกซึ่งเหมาะ สำหรับการแสดงในหน้ายืนยัน การตอบกลับการชำระเงินไม่มี วิธีการชำระเงินที่ทำธุรกรรมได้
    paymentsClient.loadPaymentData(paymentDataRequest).then(function(paymentData){
      // if using gateway tokenization, pass this token without modification
      paymentToken = paymentData.paymentMethodData.tokenizationData.token;
    }).catch(function(err){
      // show error in developer console for debugging
      console.error(err);
    });

ขั้นตอนที่ 10 (ไม่บังคับ): ตั้งค่าการชำระเงินที่ได้รับอนุญาต

Authorize Payments ใช้เพื่อเริ่มกระบวนการชำระเงินและรับทราบสถานะการให้สิทธิ์การชำระเงิน หากต้องการตั้งค่าการชำระเงินที่ได้รับอนุญาต ให้ทำตามขั้นตอนต่อไปนี้

  1. ลงทะเบียนการเรียกกลับ onPaymentAuthorized() ใน PaymentOptions
  2. เรียกใช้ฟังก์ชัน loadPaymentData() ด้วยเจตนา Callback ของ PAYMENT_AUTHORIZATION
  3. ใช้ onPaymentAuthorized()

ลงทะเบียนการเรียกกลับ onPaymentAuthorized

ตัวอย่างโค้ดต่อไปนี้แสดงวิธีลงทะเบียน onPaymentAuthorized การเรียกกลับ

{
  environment: "TEST",
  merchantInfo: {
    merchantName: "Example Merchant",
    merchantId: "12345678901234567890"
  },
  paymentDataCallbacks: {
    onPaymentAuthorized: onPaymentAuthorized
  }
}

โหลดข้อมูลการชำระเงินด้วย Intent ของการเรียกกลับ

ตัวอย่างโค้ดต่อไปนี้แสดงวิธีเริ่มต้นชีตการชำระเงินด้วยการให้สิทธิ์การชำระเงิน

const paymentDataRequest = Object.assign({}, baseRequest);
paymentDataRequest.allowedPaymentMethods = [cardPaymentMethod];
paymentDataRequest.transactionInfo = getGoogleTransactionInfo();
paymentDataRequest.merchantInfo = {
  merchantName: 'Example Merchant'
  merchantId: '12345678901234567890',
};

paymentDataRequest.callbackIntents = ["PAYMENT_AUTHORIZATION"];

จัดการแฮนเดิล onPaymentAuthorized

Google จะเรียกใช้การเรียกกลับ onPaymentAuthorized() ด้วยออบเจ็กต์ PaymentData หลังจากที่ผู้ชำระเงินอนุมัติการชำระเงินผ่านท่าทางของผู้ใช้ เช่น หากผู้ใช้คลิกชำระเงิน

โดย Callback จะแสดงผลค่า Promise<PaymentAuthorizationResult> ออบเจ็กต์ PaymentAuthorizationResult มีสถานะธุรกรรม SUCCESS หรือ ERROR เมื่อสำเร็จ ระบบจะปิดชีตการชำระเงินเรียบร้อยแล้ว หากพบข้อผิดพลาด ชีตการชำระเงินจะแสดงรายละเอียดข้อผิดพลาดที่ส่งคืนหลังจากประมวลผลการชำระเงินแล้ว ผู้ใช้สามารถเปลี่ยนข้อมูลการชำระเงินของชีตการชำระเงิน และให้สิทธิ์การชำระเงินอีกครั้ง ดูตัวอย่างโค้ดต่อไปนี้

function onPaymentAuthorized(paymentData) {
  return new Promise(function(resolve, reject){
    // handle the response
    processPayment(paymentData)
    .then(function() {
      resolve({transactionState: 'SUCCESS'});
    })
    .catch(function() {
      resolve({
        transactionState: 'ERROR',
        error: {
          intent: 'PAYMENT_AUTHORIZATION',
          message: 'Insufficient funds',
          reason: 'PAYMENT_DATA_INVALID'
        }
      });
    });
  });
}

ขั้นตอนที่ 11 (ไม่บังคับสำหรับการจัดส่ง): ตั้งค่าการอัปเดตราคาแบบไดนามิก

การอัปเดตราคาแบบไดนามิกช่วยให้ผู้ขายอัปเดตตัวเลือกการจัดส่งและข้อมูลธุรกรรมแบบไดนามิกตามที่อยู่สำหรับการจัดส่งที่เลือกได้ นอกจากนี้ คุณยังอัปเดตข้อมูลธุรกรรมแบบไดนามิกตามตัวเลือกการจัดส่งที่เลือกได้ด้วย

หากต้องการตั้งค่าการอัปเดตราคาแบบไดนามิก ให้ทำตามขั้นตอนต่อไปนี้

  1. ลงทะเบียนทั้ง onPaymentAuthorized และ onPaymentDataChanged ใน PaymentOptions
  2. เรียกใช้ฟังก์ชัน loadPaymentData() ด้วย Intent ของการเรียกกลับ ดูรายละเอียดได้ในตัวอย่างที่เกี่ยวข้อง
  3. ใช้ onPaymentAuthorized และ onPaymentDataChanged

ลงทะเบียนการเรียกกลับ PaymentData

ตัวอย่างโค้ดต่อไปนี้แสดงให้เห็นว่าการอัปเดตราคาแบบไดนามิกต้องลงทะเบียนฟังก์ชันเรียกกลับในออบเจ็กต์ PaymentsClient paymentOptions

{
  environment: "TEST",
  merchantInfo: {
    merchantName: "Example Merchant",
    merchantId: "12345678901234567890"
  },
  paymentDataCallbacks: {
    onPaymentAuthorized: onPaymentAuthorized,
    onPaymentDataChanged: onPaymentDataChanged
  }
}

โหลดข้อมูลการชำระเงินด้วย Intent ของการเรียกกลับ

ตัวอย่างโค้ดต่อไปนี้แสดงวิธีเริ่มต้นชีตการชำระเงินด้วยการกำหนดค่าที่อยู่สำหรับจัดส่งและตัวเลือกการจัดส่งที่จำเป็น

const paymentDataRequest = Object.assign({}, baseRequest);
paymentDataRequest.allowedPaymentMethods = [cardPaymentMethod];
paymentDataRequest.transactionInfo = getGoogleTransactionInfo();
paymentDataRequest.merchantInfo = {
  merchantId: '12345678901234567890',
  merchantName: 'Example Merchant'
};

paymentDataRequest.callbackIntents = ["SHIPPING_ADDRESS",  "SHIPPING_OPTION", "PAYMENT_AUTHORIZATION"];


paymentDataRequest.shippingAddressRequired = true;
paymentDataRequest.shippingAddressParameters = getGoogleShippingAddressParameters();
paymentDataRequest.shippingOptionRequired = true;

จัดการแฮนเดิลการเรียกกลับ onPaymentDataChanged

ระบบจะเรียกใช้แฮนเดิล onPaymentDataChanged พร้อมออบเจ็กต์ IntermediatePaymentData ซึ่งมีที่อยู่สำหรับจัดส่งและตัวเลือกการจัดส่งที่เลือกในชีตการชำระเงิน

การเรียกกลับจะแสดงผล Promise<PaymentDataRequestUpdate> ออบเจ็กต์ PaymentDataRequestUpdate มีข้อมูลธุรกรรมใหม่ ตัวเลือกการจัดส่ง และข้อผิดพลาดของข้อมูลการชำระเงิน ข้อมูลนี้จะอัปเดตชีตการชำระเงิน

จัดการกรณีข้อยกเว้น เช่น ที่อยู่จัดส่งที่ให้บริการไม่ได้หรือตัวเลือกการจัดส่งที่ไม่ถูกต้อง ในชีตการชำระเงินโดยตรง ตั้งค่าออบเจ็กต์ PaymentDataError เพื่อ ไฮไลต์สาเหตุของข้อผิดพลาดพร้อมข้อความแสดงข้อผิดพลาดให้ผู้ใช้ทราบ อย่าลืมใส่ เจตนาที่เกี่ยวข้องในข้อความ ดูรายละเอียดวิธีตั้งค่าออบเจ็กต์และข้อความได้ที่ ตัวอย่างโค้ดต่อไปนี้

function onPaymentDataChanged(intermediatePaymentData) {
  return new Promise(function(resolve, reject) {

    let shippingAddress = intermediatePaymentData.shippingAddress;
    let shippingOptionData = intermediatePaymentData.shippingOptionData;
    let paymentDataRequestUpdate = {};

    if (intermediatePaymentData.callbackTrigger == "INITIALIZE" || intermediatePaymentData.callbackTrigger == "SHIPPING_ADDRESS") {
      if(shippingAddress.administrativeArea == "NJ")  {
        paymentDataRequestUpdate.error = getGoogleUnserviceableAddressError();
      }
      else {
        paymentDataRequestUpdate.newShippingOptionParameters = getGoogleDefaultShippingOptions();
        let selectedShippingOptionId = paymentDataRequestUpdate.newShippingOptionParameters.defaultSelectedOptionId;
        paymentDataRequestUpdate.newTransactionInfo = calculateNewTransactionInfo(selectedShippingOptionId);
      }
    }
    else if (intermediatePaymentData.callbackTrigger == "SHIPPING_OPTION") {
      paymentDataRequestUpdate.newTransactionInfo = calculateNewTransactionInfo(shippingOptionData.id);
    }

    resolve(paymentDataRequestUpdate);
  });
}

ขั้นตอนที่ 12 (ไม่บังคับสำหรับรหัสโปรโมชัน): ตั้งค่ารหัสโปรโมชัน

รหัสโปรโมชันช่วยให้ผู้ขายอัปเดตตัวเลือกการจัดส่งและข้อมูลธุรกรรมแบบไดนามิกได้ตามรหัสโปรโมชันที่ระบุ

หากต้องการตั้งค่ารหัสโปรโมชัน ให้ทำตามขั้นตอนต่อไปนี้

  1. ลงทะเบียน onPaymentDataChanged ใน PaymentOptions
  2. เรียกใช้ฟังก์ชัน loadPaymentData() ด้วย Intent ของการเรียกกลับ ดูรายละเอียดได้ในตัวอย่างที่เกี่ยวข้อง
  3. ใช้ onPaymentDataChanged callback function

ลงทะเบียนการเรียกกลับของข้อเสนอ

ตัวอย่างโค้ดต่อไปนี้แสดงให้เห็นว่ารหัสโปรโมชันต้องใช้ฟังก์ชันเรียกกลับเพื่อลงทะเบียนในออบเจ็กต์ PaymentsClient paymentOptions

{
  environment: "TEST",
  merchantInfo: {
    merchantName: "Example Merchant",
    merchantId: "12345678901234567890"
  },
  paymentDataCallbacks: {
    onPaymentDataChanged: onPaymentDataChanged
  }
}

โหลดข้อมูลการชำระเงินด้วย Intent ของการเรียกกลับ

ตัวอย่างโค้ดต่อไปนี้แสดงวิธีเริ่มต้นชีตการชำระเงินด้วย Intent ของการเรียกกลับ OFFER

const paymentDataRequest = Object.assign({}, baseRequest);
paymentDataRequest.allowedPaymentMethods = [cardPaymentMethod];
paymentDataRequest.transactionInfo = getGoogleTransactionInfo();
paymentDataRequest.merchantInfo = {
  merchantId: '12345678901234567890',
  merchantName: 'Example Merchant'
};

paymentDataRequest.callbackIntents = ["OFFER"];

จัดการแฮนเดิลการเรียกกลับ onPaymentDataChanged

ระบบจะเรียกใช้แฮนเดิล onPaymentDataChanged พร้อมออบเจ็กต์ IntermediatePaymentData ซึ่งมีที่อยู่สำหรับจัดส่งและตัวเลือกการจัดส่งที่เลือกในชีตการชำระเงิน

การเรียกกลับต้องแสดงผล Promise<PaymentDataRequestUpdate> ออบเจ็กต์ PaymentDataRequestUpdate มีข้อมูลธุรกรรมใหม่ ตัวเลือกการจัดส่ง ข้อมูลข้อเสนอ และข้อผิดพลาดของข้อมูลการชำระเงิน ข้อมูลนี้จะอัปเดตชีตการชำระเงิน

จัดการกรณีข้อยกเว้น เช่น รหัสโปรโมชันที่ไม่ถูกต้อง ในชีตการชำระเงินโดยตรง ตั้งค่าออบเจ็กต์ PaymentDataError เพื่อ ไฮไลต์สาเหตุของข้อผิดพลาดพร้อมข้อความแสดงข้อผิดพลาดให้ผู้ใช้ทราบ อย่าลืมใส่ เจตนาที่เกี่ยวข้องในข้อความ ดูรายละเอียดเกี่ยวกับวิธีตั้งค่าออบเจ็กต์และข้อความได้ใน ตัวอย่างโค้ดต่อไปนี้ ซึ่งอ้างอิงออบเจ็กต์ (validPromoCodes) ที่มีค่ารหัสโปรโมชัน

function onPaymentDataChanged(intermediatePaymentData) {
  return new Promise(function(resolve, reject) {

    let redemptionCodes = [];
    let shippingOptionData = intermediatePaymentData.shippingOptionData;
    let paymentDataRequestUpdate = {};
    paymentDataRequestUpdate.newTransactionInfo = getGoogleTransactionInfo();

    // ensure that promo codes set is unique
    if(typeof intermediatePaymentData.offerData != 'undefined') {
      // convert to set then back to array
      redemptionCodes = Array.from(
        new Set(intermediatePaymentData.offerData.redemptionCodes)
      );
    }

    // OPTIONAL: ensure that the newest promo code is the only one applied
    // redemptionCodes = new Array(redemptionCodes[redemptionCodes.length -1]);

    // validate promo codes and add descriptions to payment sheet
    if (intermediatePaymentData.callbackTrigger === 'OFFER') {
      paymentDataRequestUpdate.newOfferInfo = {};
      paymentDataRequestUpdate.newOfferInfo.offers = [];
      for (redemptionCode of redemptionCodes) {
        if (validPromoCodes[redemptionCode]) {
          paymentDataRequestUpdate = validPromoCodes[redemptionCode].function(
            validPromoCodes[redemptionCode],
            paymentDataRequestUpdate
          );
        } else {
          paymentDataRequestUpdate.error = getGoogleOfferInvalidError(redemptionCode);
        }
      }
    }

นำข้อมูลทุกอย่างมารวมกัน

บล็อกโค้ดตัวอย่างในส่วนนี้แสดงตัวอย่างแบบครบวงจรของบทแนะนำเกี่ยวกับไลบรารี JavaScript ของ Google Pay API การให้สิทธิ์การชำระเงิน การอัปเดตราคาแบบไดนามิก และรหัสโปรโมชัน

บทแนะนำ

<div id="container"></div>

<script>
/**
 * Define the version of the Google Pay API referenced when creating your
 * configuration
 *
 * @see {@link https://developers.google.com/pay/api/web/reference/request-objects#PaymentDataRequest|apiVersion in PaymentDataRequest}
 */
const baseRequest = {
  apiVersion: 2,
  apiVersionMinor: 0
};

/**
 * Card networks supported by your site and your gateway
 *
 * @see {@link https://developers.google.com/pay/api/web/reference/request-objects#CardParameters|CardParameters}
 * @todo confirm card networks supported by your site and gateway
 */
const allowedCardNetworks = ["AMEX", "DISCOVER", "INTERAC", "JCB", "MASTERCARD", "VISA"];

/**
 * Card authentication methods supported by your site and your gateway
 *
 * @see {@link https://developers.google.com/pay/api/web/reference/request-objects#CardParameters|CardParameters}
 * @todo confirm your processor supports Android device tokens for your
 * supported card networks
 */
const allowedCardAuthMethods = ["PAN_ONLY", "CRYPTOGRAM_3DS"];

/**
 * Identify your gateway and your site's gateway merchant identifier
 *
 * The Google Pay API response will return an encrypted payment method capable
 * of being charged by a supported gateway after payer authorization
 *
 * @todo check with your gateway on the parameters to pass
 * @see {@link https://developers.google.com/pay/api/web/reference/request-objects#gateway|PaymentMethodTokenizationSpecification}
 */
const tokenizationSpecification = {
  type: 'PAYMENT_GATEWAY',
  parameters: {
    'gateway': 'example',
    'gatewayMerchantId': 'exampleGatewayMerchantId'
  }
};

/**
 * Describe your site's support for the CARD payment method and its required
 * fields
 *
 * @see {@link https://developers.google.com/pay/api/web/reference/request-objects#CardParameters|CardParameters}
 */
const baseCardPaymentMethod = {
  type: 'CARD',
  parameters: {
    allowedAuthMethods: allowedCardAuthMethods,
    allowedCardNetworks: allowedCardNetworks
  }
};

/**
 * Describe your site's support for the CARD payment method including optional
 * fields
 *
 * @see {@link https://developers.google.com/pay/api/web/reference/request-objects#CardParameters|CardParameters}
 */
const cardPaymentMethod = Object.assign(
  {},
  baseCardPaymentMethod,
  {
    tokenizationSpecification: tokenizationSpecification
  }
);

/**
 * An initialized google.payments.api.PaymentsClient object or null if not yet set
 *
 * @see {@link getGooglePaymentsClient}
 */
let paymentsClient = null;

/**
 * Configure your site's support for payment methods supported by the Google Pay
 * API.
 *
 * Each member of allowedPaymentMethods should contain only the required fields,
 * allowing reuse of this base request when determining a viewer's ability
 * to pay and later requesting a supported payment method
 *
 * @returns {object} Google Pay API version, payment methods supported by the site
 */
function getGoogleIsReadyToPayRequest() {
  return Object.assign(
      {},
      baseRequest,
      {
        allowedPaymentMethods: [baseCardPaymentMethod]
      }
  );
}

/**
 * Configure support for the Google Pay API
 *
 * @see {@link https://developers.google.com/pay/api/web/reference/request-objects#PaymentDataRequest|PaymentDataRequest}
 * @returns {object} PaymentDataRequest fields
 */
function getGooglePaymentDataRequest() {
  const paymentDataRequest = Object.assign({}, baseRequest);
  paymentDataRequest.allowedPaymentMethods = [cardPaymentMethod];
  paymentDataRequest.transactionInfo = getGoogleTransactionInfo();
  paymentDataRequest.merchantInfo = {
    // @todo a merchant ID is available for a production environment after approval by Google
    // See {@link https://developers.google.com/pay/api/web/guides/test-and-deploy/integration-checklist|Integration checklist}
    // merchantId: '12345678901234567890',
    merchantName: 'Example Merchant'
  };
  return paymentDataRequest;
}

/**
 * Return an active PaymentsClient or initialize
 *
 * @see {@link https://developers.google.com/pay/api/web/reference/client#PaymentsClient|PaymentsClient constructor}
 * @returns {google.payments.api.PaymentsClient} Google Pay API client
 */
function getGooglePaymentsClient() {
  if ( paymentsClient === null ) {
    paymentsClient = new google.payments.api.PaymentsClient({environment: 'TEST'});
  }
  return paymentsClient;
}

/**
 * Initialize Google PaymentsClient after Google-hosted JavaScript has loaded
 *
 * Display a Google Pay payment button after confirmation of the viewer's
 * ability to pay.
 */
function onGooglePayLoaded() {
  const paymentsClient = getGooglePaymentsClient();
  paymentsClient.isReadyToPay(getGoogleIsReadyToPayRequest())
      .then(function(response) {
        if (response.result) {
          addGooglePayButton();
          // @todo prefetch payment data to improve performance after confirming site functionality
          // prefetchGooglePaymentData();
        }
      })
      .catch(function(err) {
        // show error in developer console for debugging
        console.error(err);
      });
}

/**
 * Add a Google Pay purchase button alongside an existing checkout button
 *
 * @see {@link https://developers.google.com/pay/api/web/reference/request-objects#ButtonOptions|Button options}
 * @see {@link https://developers.google.com/pay/api/web/guides/brand-guidelines|Google Pay brand guidelines}
 */
function addGooglePayButton() {
  const paymentsClient = getGooglePaymentsClient();
  const button =
      paymentsClient.createButton({
        onClick: onGooglePaymentButtonClicked,
        allowedPaymentMethods: [baseCardPaymentMethod]
      });
  document.getElementById('container').appendChild(button);
}

/**
 * Provide Google Pay API with a payment amount, currency, and amount status
 *
 * @see {@link https://developers.google.com/pay/api/web/reference/request-objects#TransactionInfo|TransactionInfo}
 * @returns {object} transaction info, suitable for use as transactionInfo property of PaymentDataRequest
 */
function getGoogleTransactionInfo() {
  return {
    countryCode: 'US',
    currencyCode: 'USD',
    totalPriceStatus: 'FINAL',
    // set to cart total
    totalPrice: '1.00'
  };
}

/**
 * Prefetch payment data to improve performance
 *
 * @see {@link https://developers.google.com/pay/api/web/reference/client#prefetchPaymentData|prefetchPaymentData()}
 */
function prefetchGooglePaymentData() {
  const paymentDataRequest = getGooglePaymentDataRequest();
  // transactionInfo must be set but does not affect cache
  paymentDataRequest.transactionInfo = {
    totalPriceStatus: 'NOT_CURRENTLY_KNOWN',
    currencyCode: 'USD'
  };
  const paymentsClient = getGooglePaymentsClient();
  paymentsClient.prefetchPaymentData(paymentDataRequest);
}

/**
 * Show Google Pay payment sheet when Google Pay payment button is clicked
 */
function onGooglePaymentButtonClicked() {
  const paymentDataRequest = getGooglePaymentDataRequest();
  paymentDataRequest.transactionInfo = getGoogleTransactionInfo();

  const paymentsClient = getGooglePaymentsClient();
  paymentsClient.loadPaymentData(paymentDataRequest)
      .then(function(paymentData) {
        // handle the response
        processPayment(paymentData);
      })
      .catch(function(err) {
        // show error in developer console for debugging
        console.error(err);
      });
}
/**
 * Process payment data returned by the Google Pay API
 *
 * @param {object} paymentData response from Google Pay API after user approves payment
 * @see {@link https://developers.google.com/pay/api/web/reference/response-objects#PaymentData|PaymentData object reference}
 */
function processPayment(paymentData) {
  // show returned data in developer console for debugging
    console.log(paymentData);
  // @todo pass payment token to your gateway to process payment
  // @note DO NOT save the payment credentials for future transactions,
  // unless they're used for merchant-initiated transactions with user
  // consent in place.
  paymentToken = paymentData.paymentMethodData.tokenizationData.token;
}</script>
<script async
  src="https://pay.google.com/gp/p/js/pay.js"
  onload="onGooglePayLoaded()"></script>

ให้สิทธิ์การชำระเงิน

<div id="container"></div>

<script>
/**
 * Define the version of the Google Pay API referenced when creating your
 * configuration
 *
 * @see {@link https://developers.google.com/pay/api/web/reference/request-objects#PaymentDataRequest|apiVersion in PaymentDataRequest}
 */
const baseRequest = {
  apiVersion: 2,
  apiVersionMinor: 0
};

/**
 * Card networks supported by your site and your gateway
 *
 * @see {@link https://developers.google.com/pay/api/web/reference/request-objects#CardParameters|CardParameters}
 * @todo confirm card networks supported by your site and gateway
 */
const allowedCardNetworks = ["AMEX", "DISCOVER", "INTERAC", "JCB", "MASTERCARD", "VISA"];

/**
 * Card authentication methods supported by your site and your gateway
 *
 * @see {@link https://developers.google.com/pay/api/web/reference/request-objects#CardParameters|CardParameters}
 * @todo confirm your processor supports Android device tokens for your
 * supported card networks
 */
const allowedCardAuthMethods = ["PAN_ONLY", "CRYPTOGRAM_3DS"];

/**
 * Identify your gateway and your site's gateway merchant identifier
 *
 * The Google Pay API response will return an encrypted payment method capable
 * of being charged by a supported gateway after payer authorization
 *
 * @todo check with your gateway on the parameters to pass
 * @see {@link https://developers.google.com/pay/api/web/reference/request-objects#gateway|PaymentMethodTokenizationSpecification}
 */
const tokenizationSpecification = {
  type: 'PAYMENT_GATEWAY',
  parameters: {
    'gateway': 'example',
    'gatewayMerchantId': 'exampleGatewayMerchantId'
  }
};

/**
 * Describe your site's support for the CARD payment method and its required
 * fields
 *
 * @see {@link https://developers.google.com/pay/api/web/reference/request-objects#CardParameters|CardParameters}
 */
const baseCardPaymentMethod = {
  type: 'CARD',
  parameters: {
    allowedAuthMethods: allowedCardAuthMethods,
    allowedCardNetworks: allowedCardNetworks
  }
};

/**
 * Describe your site's support for the CARD payment method including optional
 * fields
 *
 * @see {@link https://developers.google.com/pay/api/web/reference/request-objects#CardParameters|CardParameters}
 */
const cardPaymentMethod = Object.assign(
  {},
  baseCardPaymentMethod,
  {
    tokenizationSpecification: tokenizationSpecification
  }
);

/**
 * An initialized google.payments.api.PaymentsClient object or null if not yet set
 *
 * @see {@link getGooglePaymentsClient}
 */
let paymentsClient = null;

/**
 * Configure your site's support for payment methods supported by the Google Pay
 * API.
 *
 * Each member of allowedPaymentMethods should contain only the required fields,
 * allowing reuse of this base request when determining a viewer's ability
 * to pay and later requesting a supported payment method
 *
 * @returns {object} Google Pay API version, payment methods supported by the site
 */
function getGoogleIsReadyToPayRequest() {
  return Object.assign(
      {},
      baseRequest,
      {
        allowedPaymentMethods: [baseCardPaymentMethod]
      }
  );
}

/**
 * Configure support for the Google Pay API
 *
 * @see {@link https://developers.google.com/pay/api/web/reference/request-objects#PaymentDataRequest|PaymentDataRequest}
 * @returns {object} PaymentDataRequest fields
 */
function getGooglePaymentDataRequest() {
  const paymentDataRequest = Object.assign({}, baseRequest);
  paymentDataRequest.allowedPaymentMethods = [cardPaymentMethod];
  paymentDataRequest.transactionInfo = getGoogleTransactionInfo();
  paymentDataRequest.merchantInfo = {
    // @todo a merchant ID is available for a production environment after approval by Google
    // See {@link https://developers.google.com/pay/api/web/guides/test-and-deploy/integration-checklist|Integration checklist}
    // merchantId: '12345678901234567890',
    merchantName: 'Example Merchant'
  };

  paymentDataRequest.callbackIntents = ["PAYMENT_AUTHORIZATION"];

  return paymentDataRequest;
}

/**
 * Return an active PaymentsClient or initialize
 *
 * @see {@link https://developers.google.com/pay/api/web/reference/client#PaymentsClient|PaymentsClient constructor}
 * @returns {google.payments.api.PaymentsClient} Google Pay API client
 */
function getGooglePaymentsClient() {
  if ( paymentsClient === null ) {
    paymentsClient = new google.payments.api.PaymentsClient({
    	environment: 'TEST',
      paymentDataCallbacks: {
      	onPaymentAuthorized: onPaymentAuthorized
      }
    });
  }
  return paymentsClient;
}

/**
 * Handles authorize payments callback intents.
 *
 * @param {object} paymentData response from Google Pay API after a payer approves payment through user gesture.
 * @see {@link https://developers.google.com/pay/api/web/reference/response-objects#PaymentData object reference}
 *
 * @see {@link https://developers.google.com/pay/api/web/reference/response-objects#PaymentAuthorizationResult}
 * @returns Promise<{object}> Promise of PaymentAuthorizationResult object to acknowledge the payment authorization status.
 */
function onPaymentAuthorized(paymentData) {
	return new Promise(function(resolve, reject){
    // handle the response
    processPayment(paymentData)
    .then(function() {
      resolve({transactionState: 'SUCCESS'});
    })
    .catch(function() {
      resolve({
        transactionState: 'ERROR',
        error: {
          intent: 'PAYMENT_AUTHORIZATION',
          message: 'Insufficient funds',
          reason: 'PAYMENT_DATA_INVALID'
        }
      });
  	});
  });
}

/**
 * Initialize Google PaymentsClient after Google-hosted JavaScript has loaded
 *
 * Display a Google Pay payment button after confirmation of the viewer's
 * ability to pay.
 */
function onGooglePayLoaded() {
  const paymentsClient = getGooglePaymentsClient();
  paymentsClient.isReadyToPay(getGoogleIsReadyToPayRequest())
      .then(function(response) {
        if (response.result) {
          addGooglePayButton();
        }
      })
      .catch(function(err) {
        // show error in developer console for debugging
        console.error(err);
      });
}

/**
 * Add a Google Pay purchase button alongside an existing checkout button
 *
 * @see {@link https://developers.google.com/pay/api/web/reference/request-objects#ButtonOptions|Button options}
 * @see {@link https://developers.google.com/pay/api/web/guides/brand-guidelines|Google Pay brand guidelines}
 */
function addGooglePayButton() {
  const paymentsClient = getGooglePaymentsClient();
  const button =
      paymentsClient.createButton({
        onClick: onGooglePaymentButtonClicked,
        allowedPaymentMethods: [baseCardPaymentMethod]
      });
  document.getElementById('container').appendChild(button);
}

/**
 * Provide Google Pay API with a payment amount, currency, and amount status
 *
 * @see {@link https://developers.google.com/pay/api/web/reference/request-objects#TransactionInfo|TransactionInfo}
 * @returns {object} transaction info, suitable for use as transactionInfo property of PaymentDataRequest
 */
function getGoogleTransactionInfo() {
  return {
        displayItems: [
        {
          label: "Subtotal",
          type: "SUBTOTAL",
          price: "11.00",
        },
      {
          label: "Tax",
          type: "TAX",
          price: "1.00",
        }
    ],
    countryCode: 'US',
    currencyCode: "USD",
    totalPriceStatus: "FINAL",
    totalPrice: "12.00",
    totalPriceLabel: "Total"
  };
}

/**
 * Show Google Pay payment sheet when Google Pay payment button is clicked
 */
function onGooglePaymentButtonClicked() {
  const paymentDataRequest = getGooglePaymentDataRequest();
  paymentDataRequest.transactionInfo = getGoogleTransactionInfo();

  const paymentsClient = getGooglePaymentsClient();
  paymentsClient.loadPaymentData(paymentDataRequest);
}

/**
 * Process payment data returned by the Google Pay API
 *
 * @param {object} paymentData response from Google Pay API after user approves payment
 * @see {@link https://developers.google.com/pay/api/web/reference/response-objects#PaymentData|PaymentData object reference}
 */
function processPayment(paymentData) {
	return new Promise(function(resolve, reject) {
  	setTimeout(function() {
  		// @todo pass payment token to your gateway to process payment
  		paymentToken = paymentData.paymentMethodData.tokenizationData.token;

    	resolve({});
    }, 3000);
  });
}</script>
<script async
  src="https://pay.google.com/gp/p/js/pay.js"
  onload="onGooglePayLoaded()"></script>

การอัปเดตราคาแบบไดนามิก

<div id="container"></div>

<script>
/**
 * Define the version of the Google Pay API referenced when creating your
 * configuration
 *
 * @see {@link https://developers.google.com/pay/api/web/reference/request-objects#PaymentDataRequest|apiVersion in PaymentDataRequest}
 */
const baseRequest = {
  apiVersion: 2,
  apiVersionMinor: 0
};

/**
 * Card networks supported by your site and your gateway
 *
 * @see {@link https://developers.google.com/pay/api/web/reference/request-objects#CardParameters|CardParameters}
 * @todo confirm card networks supported by your site and gateway
 */
const allowedCardNetworks = ["AMEX", "DISCOVER", "JCB", "MASTERCARD", "VISA"];

/**
 * Card authentication methods supported by your site and your gateway
 *
 * @see {@link https://developers.google.com/pay/api/web/reference/request-objects#CardParameters|CardParameters}
 * @todo confirm your processor supports Android device tokens for your
 * supported card networks
 */
const allowedCardAuthMethods = ["PAN_ONLY", "CRYPTOGRAM_3DS"];

/**
 * Identify your gateway and your site's gateway merchant identifier
 *
 * The Google Pay API response will return an encrypted payment method capable
 * of being charged by a supported gateway after payer authorization
 *
 * @todo check with your gateway on the parameters to pass
 * @see {@link https://developers.google.com/pay/api/web/reference/request-objects#gateway|PaymentMethodTokenizationSpecification}
 */
const tokenizationSpecification = {
  type: 'PAYMENT_GATEWAY',
  parameters: {
    'gateway': 'example',
    'gatewayMerchantId': 'exampleGatewayMerchantId'
  }
};

/**
 * Describe your site's support for the CARD payment method and its required
 * fields
 *
 * @see {@link https://developers.google.com/pay/api/web/reference/request-objects#CardParameters|CardParameters}
 */
const baseCardPaymentMethod = {
  type: 'CARD',
  parameters: {
    allowedAuthMethods: allowedCardAuthMethods,
    allowedCardNetworks: allowedCardNetworks
  }
};

/**
 * Describe your site's support for the CARD payment method including optional
 * fields
 *
 * @see {@link https://developers.google.com/pay/api/web/reference/request-objects#CardParameters|CardParameters}
 */
const cardPaymentMethod = Object.assign(
  {},
  baseCardPaymentMethod,
  {
    tokenizationSpecification: tokenizationSpecification
  }
);

/**
 * An initialized google.payments.api.PaymentsClient object or null if not yet set
 *
 * @see {@link getGooglePaymentsClient}
 */
let paymentsClient = null;

/**
 * Configure your site's support for payment methods supported by the Google Pay
 * API.
 *
 * Each member of allowedPaymentMethods should contain only the required fields,
 * allowing reuse of this base request when determining a viewer's ability
 * to pay and later requesting a supported payment method
 *
 * @returns {object} Google Pay API version, payment methods supported by the site
 */
function getGoogleIsReadyToPayRequest() {
  return Object.assign(
      {},
      baseRequest,
      {
        allowedPaymentMethods: [baseCardPaymentMethod]
      }
  );
}

/**
 * Configure support for the Google Pay API
 *
 * @see {@link https://developers.google.com/pay/api/web/reference/request-objects#PaymentDataRequest|PaymentDataRequest}
 * @returns {object} PaymentDataRequest fields
 */
function getGooglePaymentDataRequest() {
  const paymentDataRequest = Object.assign({}, baseRequest);
  paymentDataRequest.allowedPaymentMethods = [cardPaymentMethod];
  paymentDataRequest.transactionInfo = getGoogleTransactionInfo();
  paymentDataRequest.merchantInfo = {
    // @todo a merchant ID is available for a production environment after approval by Google
    // See {@link https://developers.google.com/pay/api/web/guides/test-and-deploy/integration-checklist|Integration checklist}
    // merchantId: '12345678901234567890',
    merchantName: 'Example Merchant'
  };

  paymentDataRequest.callbackIntents = ["SHIPPING_ADDRESS",  "SHIPPING_OPTION", "PAYMENT_AUTHORIZATION"];
  paymentDataRequest.shippingAddressRequired = true;
  paymentDataRequest.shippingAddressParameters = getGoogleShippingAddressParameters();
  paymentDataRequest.shippingOptionRequired = true;

  return paymentDataRequest;
}

/**
 * Return an active PaymentsClient or initialize
 *
 * @see {@link https://developers.google.com/pay/api/web/reference/client#PaymentsClient|PaymentsClient constructor}
 * @returns {google.payments.api.PaymentsClient} Google Pay API client
 */
function getGooglePaymentsClient() {
  if ( paymentsClient === null ) {
    paymentsClient = new google.payments.api.PaymentsClient({
      environment: "TEST",
      merchantInfo: {
        merchantName: "Example Merchant",
        merchantId: "01234567890123456789"
      },
      paymentDataCallbacks: {
      	onPaymentAuthorized: onPaymentAuthorized,
        onPaymentDataChanged: onPaymentDataChanged
      }
    });
  }
  return paymentsClient;
}


function onPaymentAuthorized(paymentData) {
	return new Promise(function(resolve, reject){

  // handle the response
  processPayment(paymentData)
    .then(function() {
      resolve({transactionState: 'SUCCESS'});
    })
    .catch(function() {
    	resolve({
        transactionState: 'ERROR',
        error: {
          intent: 'PAYMENT_AUTHORIZATION',
          message: 'Insufficient funds',
          reason: 'PAYMENT_DATA_INVALID'
        }
      });
    });

  });
}

/**
 * Handles dynamic buy flow shipping address and shipping options callback intents.
 *
 * @param {object} itermediatePaymentData response from Google Pay API a shipping address or shipping option is selected in the payment sheet.
 * @see {@link https://developers.google.com/pay/api/web/reference/response-objects#IntermediatePaymentData|IntermediatePaymentData object reference}
 *
 * @see {@link https://developers.google.com/pay/api/web/reference/response-objects#PaymentDataRequestUpdate|PaymentDataRequestUpdate}
 * @returns Promise<{object}> Promise of PaymentDataRequestUpdate object to update the payment sheet.
 */
function onPaymentDataChanged(intermediatePaymentData) {
  return new Promise(function(resolve, reject) {

   	let shippingAddress = intermediatePaymentData.shippingAddress;
    let shippingOptionData = intermediatePaymentData.shippingOptionData;
    let paymentDataRequestUpdate = {};

    if (intermediatePaymentData.callbackTrigger == "INITIALIZE" || intermediatePaymentData.callbackTrigger == "SHIPPING_ADDRESS") {
      if(shippingAddress.administrativeArea == "NJ")  {
        paymentDataRequestUpdate.error = getGoogleUnserviceableAddressError();
      }
      else {
        paymentDataRequestUpdate.newShippingOptionParameters = getGoogleDefaultShippingOptions();
        let selectedShippingOptionId = paymentDataRequestUpdate.newShippingOptionParameters.defaultSelectedOptionId;
        paymentDataRequestUpdate.newTransactionInfo = calculateNewTransactionInfo(selectedShippingOptionId);
      }
    }
    else if (intermediatePaymentData.callbackTrigger == "SHIPPING_OPTION") {
      paymentDataRequestUpdate.newTransactionInfo = calculateNewTransactionInfo(shippingOptionData.id);
    }

    resolve(paymentDataRequestUpdate);
  });
}

/**
 * Helper function to create a new TransactionInfo object.

 * @param string shippingOptionId respresenting the selected shipping option in the payment sheet.
 *
 * @see {@link https://developers.google.com/pay/api/web/reference/request-objects#TransactionInfo|TransactionInfo}
 * @returns {object} transaction info, suitable for use as transactionInfo property of PaymentDataRequest
 */
function calculateNewTransactionInfo(shippingOptionId) {
        let newTransactionInfo = getGoogleTransactionInfo();

  let shippingCost = getShippingCosts()[shippingOptionId];
  newTransactionInfo.displayItems.push({
    type: "LINE_ITEM",
    label: "Shipping cost",
    price: shippingCost,
    status: "FINAL"
  });

  let totalPrice = 0.00;
  newTransactionInfo.displayItems.forEach(displayItem => totalPrice += parseFloat(displayItem.price));
  newTransactionInfo.totalPrice = totalPrice.toString();

  return newTransactionInfo;
}

/**
 * Initialize Google PaymentsClient after Google-hosted JavaScript has loaded
 *
 * Display a Google Pay payment button after confirmation of the viewer's
 * ability to pay.
 */
function onGooglePayLoaded() {
  const paymentsClient = getGooglePaymentsClient();
  paymentsClient.isReadyToPay(getGoogleIsReadyToPayRequest())
      .then(function(response) {
        if (response.result) {
          addGooglePayButton();
          // @todo prefetch payment data to improve performance after confirming site functionality
          // prefetchGooglePaymentData();
        }
      })
      .catch(function(err) {
        // show error in developer console for debugging
        console.error(err);
      });
}

/**
 * Add a Google Pay purchase button alongside an existing checkout button
 *
 * @see {@link https://developers.google.com/pay/api/web/reference/request-objects#ButtonOptions|Button options}
 * @see {@link https://developers.google.com/pay/api/web/guides/brand-guidelines|Google Pay brand guidelines}
 */
function addGooglePayButton() {
  const paymentsClient = getGooglePaymentsClient();
  const button =
      paymentsClient.createButton({
        onClick: onGooglePaymentButtonClicked,
        allowedPaymentMethods: [baseCardPaymentMethod]
      });
  document.getElementById('container').appendChild(button);
}

/**
 * Provide Google Pay API with a payment amount, currency, and amount status
 *
 * @see {@link https://developers.google.com/pay/api/web/reference/request-objects#TransactionInfo|TransactionInfo}
 * @returns {object} transaction info, suitable for use as transactionInfo property of PaymentDataRequest
 */
function getGoogleTransactionInfo() {
  return {
        displayItems: [
        {
          label: "Subtotal",
          type: "SUBTOTAL",
          price: "11.00",
        },
      {
          label: "Tax",
          type: "TAX",
          price: "1.00",
        }
    ],
    countryCode: 'US',
    currencyCode: "USD",
    totalPriceStatus: "FINAL",
    totalPrice: "12.00",
    totalPriceLabel: "Total"
  };
}

/**
 * Provide a key value store for shippping options.
 */
function getShippingCosts() {
        return {
    "shipping-001": "0.00",
    "shipping-002": "1.99",
    "shipping-003": "10.00"
  }
}

/**
 * Provide Google Pay API with shipping address parameters when using dynamic buy flow.
 *
 * @see {@link https://developers.google.com/pay/api/web/reference/request-objects#ShippingAddressParameters|ShippingAddressParameters}
 * @returns {object} shipping address details, suitable for use as shippingAddressParameters property of PaymentDataRequest
 */
function getGoogleShippingAddressParameters() {
        return  {
        allowedCountryCodes: ['US'],
    phoneNumberRequired: true
  };
}

/**
 * Provide Google Pay API with shipping options and a default selected shipping option.
 *
 * @see {@link https://developers.google.com/pay/api/web/reference/request-objects#ShippingOptionParameters|ShippingOptionParameters}
 * @returns {object} shipping option parameters, suitable for use as shippingOptionParameters property of PaymentDataRequest
 */
function getGoogleDefaultShippingOptions() {
        return {
      defaultSelectedOptionId: "shipping-001",
      shippingOptions: [
        {
          "id": "shipping-001",
          "label": "Free: Standard shipping",
          "description": "Free Shipping delivered in 5 business days."
        },
        {
          "id": "shipping-002",
          "label": "$1.99: Standard shipping",
          "description": "Standard shipping delivered in 3 business days."
        },
        {
          "id": "shipping-003",
          "label": "$10: Express shipping",
          "description": "Express shipping delivered in 1 business day."
        },
      ]
  };
}

/**
 * Provide Google Pay API with a payment data error.
 *
 * @see {@link https://developers.google.com/pay/api/web/reference/response-objects#PaymentDataError|PaymentDataError}
 * @returns {object} payment data error, suitable for use as error property of PaymentDataRequestUpdate
 */
function getGoogleUnserviceableAddressError() {
        return {
    reason: "SHIPPING_ADDRESS_UNSERVICEABLE",
    message: "Cannot ship to the selected address",
    intent: "SHIPPING_ADDRESS"
        };
}

/**
 * Prefetch payment data to improve performance
 *
 * @see {@link https://developers.google.com/pay/api/web/reference/client#prefetchPaymentData|prefetchPaymentData()}
 */
function prefetchGooglePaymentData() {
  const paymentDataRequest = getGooglePaymentDataRequest();
  // transactionInfo must be set but does not affect cache
  paymentDataRequest.transactionInfo = {
    totalPriceStatus: 'NOT_CURRENTLY_KNOWN',
    currencyCode: 'USD'
  };
  const paymentsClient = getGooglePaymentsClient();
  paymentsClient.prefetchPaymentData(paymentDataRequest);
}


/**
 * Show Google Pay payment sheet when Google Pay payment button is clicked
 */
function onGooglePaymentButtonClicked() {
  const paymentDataRequest = getGooglePaymentDataRequest();
  paymentDataRequest.transactionInfo = getGoogleTransactionInfo();

  const paymentsClient = getGooglePaymentsClient();
  paymentsClient.loadPaymentData(paymentDataRequest);
}

/**
 * Process payment data returned by the Google Pay API
 *
 * @param {object} paymentData response from Google Pay API after user approves payment
 * @see {@link https://developers.google.com/pay/api/web/reference/response-objects#PaymentData|PaymentData object reference}
 */
function processPayment(paymentData) {
	return new Promise(function(resolve, reject) {
  	setTimeout(function() {
    	// show returned data in developer console for debugging
   	 console.log(paymentData);
  		// @todo pass payment token to your gateway to process payment
  		paymentToken = paymentData.paymentMethodData.tokenizationData.token;

    	resolve({});
    }, 3000);
  });
}</script>
<script async
  src="https://pay.google.com/gp/p/js/pay.js"
  onload="onGooglePayLoaded()"></script>

ข้อเสนอ

<div id="container"></div>

<script>
/**
 * Please note: The Promo Code callback is extremely flexible. This example
 * implementation is only one of many ways to interface with it.
 *
 * In production, your promo codes and payment logic should be securely
 * processed on your server, not client-side as in this example. Use AJAX to
 * pass this information to the payment sheet.
 */

/**
 * Define the version of the Google Pay API referenced when creating your
 * configuration
 *
 * @see {@link https://developers.google.com/pay/api/web/reference/request-objects#PaymentDataRequest|apiVersion in PaymentDataRequest}
 */
const baseRequest = {
  apiVersion: 2,
  apiVersionMinor: 0
};

/**
 * Define valid promo code strings
 *
 * This object paradigm is not necessary to implement Promo Codes, but provides
 * an example of how to implement promo code behavior in a modular way.
 *
 * In production, your promo codes should be securely processed on your server,
 * not client-side as in this example.
 *
 * code: the way the promo code itself is displayed in the payment sheet
 * description: the description provided to the user on the payment sheet
 * function: the function used to calculate the price change
 * value: the value passed into the above function. This value should be
 * negative for a discount.
 */

const validPromoCodes = {
  SOMEPROMOCODE: {
    code: 'SOMEPROMOCODE',
    description: '20% off all products!',
    function: percentageDiscount,
    value: -20 // value should be negative for a discount
  },
  ANOTHERPROMOCODE: {
    code: 'ANOTHERPROMOCODE',
    description: '$5 dollars off!',
    function: staticDiscount,
    value: -5.00 // value should be negative for a discount
  }
}

/**
 * Card networks supported by your site and your gateway
 *
 * @see {@link https://developers.google.com/pay/api/web/reference/request-objects#CardParameters|CardParameters}
 * @todo confirm card networks supported by your site and gateway
 */
const allowedCardNetworks = ['AMEX', 'DISCOVER', 'JCB', 'MASTERCARD', 'VISA'];

/**
 * Card authentication methods supported by your site and your gateway
 *
 * @see {@link https://developers.google.com/pay/api/web/reference/request-objects#CardParameters|CardParameters}
 * @todo confirm your processor supports Android device tokens for your
 * supported card networks
 */
const allowedCardAuthMethods = ['PAN_ONLY', 'CRYPTOGRAM_3DS'];

/**
 * Identify your gateway and your site's gateway merchant identifier
 *
 * The Google Pay API response will return an encrypted payment method capable
 * of being charged by a supported gateway after payer authorization
 *
 * @todo check with your gateway on the parameters to pass
 * @see {@link https://developers.google.com/pay/api/web/reference/request-objects#gateway|PaymentMethodTokenizationSpecification}
 */
const tokenizationSpecification = {
  type: 'PAYMENT_GATEWAY',
  parameters: {
    gateway: 'example',
    gatewayMerchantId: 'exampleGatewayMerchantId'
  }
};

/**
 * Describe your site's support for the CARD payment method and its required
 * fields
 *
 * @see {@link https://developers.google.com/pay/api/web/reference/request-objects#CardParameters|CardParameters}
 */
const baseCardPaymentMethod = {
  type: 'CARD',
  parameters: {
    allowedAuthMethods: allowedCardAuthMethods,
    allowedCardNetworks: allowedCardNetworks
  }
};

/**
 * Describe your site's support for the CARD payment method including optional
 * fields
 *
 * @see {@link https://developers.google.com/pay/api/web/reference/request-objects#CardParameters|CardParameters}
 */
const cardPaymentMethod = Object.assign(
  {},
  baseCardPaymentMethod,
  {
    tokenizationSpecification: tokenizationSpecification
  }
);

/**
 * An initialized google.payments.api.PaymentsClient object or null if not yet set
 *
 * @see {@link getGooglePaymentsClient}
 */
let paymentsClient = null;

/**
 * Configure your site's support for payment methods supported by the Google Pay
 * API.
 *
 * Each member of allowedPaymentMethods should contain only the required fields,
 * allowing reuse of this base request when determining a viewer's ability
 * to pay and later requesting a supported payment method
 *
 * @returns {object} Google Pay API version, payment methods supported by the site
 */
function getGoogleIsReadyToPayRequest() {
  return Object.assign(
      {},
      baseRequest,
      {
        allowedPaymentMethods: [baseCardPaymentMethod]
      }
  );
}

/**
 * Configure support for the Google Pay API
 *
 * @see {@link https://developers.google.com/pay/api/web/reference/request-objects#PaymentDataRequest|PaymentDataRequest}
 * @returns {object} PaymentDataRequest fields
 */
function getGooglePaymentDataRequest() {
  const paymentDataRequest = Object.assign({}, baseRequest);
  paymentDataRequest.allowedPaymentMethods = [cardPaymentMethod];
  paymentDataRequest.transactionInfo = getGoogleTransactionInfo();
  paymentDataRequest.merchantInfo = {
    // @todo a merchant ID is available for a production environment after approval by Google
    // See {@link https://developers.google.com/pay/api/web/guides/test-and-deploy/integration-checklist|Integration checklist}
    // merchantId: '12345678901234567890',
    merchantName: 'Example Merchant'
  };

  paymentDataRequest.callbackIntents = ['OFFER'];
  paymentDataRequest.shippingAddressRequired = false;
  paymentDataRequest.shippingAddressParameters = getGoogleShippingAddressParameters();

  return paymentDataRequest;
}

/**
 * Return an active PaymentsClient or initialize
 *
 * @see {@link https://developers.google.com/pay/api/web/reference/client#PaymentsClient|PaymentsClient constructor}
 * @returns {google.payments.api.PaymentsClient} Google Pay API client
 */
function getGooglePaymentsClient() {
  if ( paymentsClient === null ) {
    paymentsClient = new google.payments.api.PaymentsClient({
      environment: 'TEST',
      merchantInfo: {
        merchantName: 'Example Merchant',
        merchantId: '01234567890123456789'
      },
      paymentDataCallbacks: {
        onPaymentDataChanged: onPaymentDataChanged
      }
    });
  }
  return paymentsClient;
}

/**
 * These functions handle adding valid promo codes to the payment sheet
 * as well as adjusting the display items to match.
 *
 * To add a new promo code, create a new function per this template
 * and define it as valid in the onPaymentDataChanged function.
 *
 * @see {@link https://developers.google.com/pay/api/web/reference/response-objects#PaymentDataRequestUpdate|PaymentDataRequestUpdate}
 * @param {string} redemptionCode string representing the promo code to apply
 * @param {string} description string representing the description to show
 * @param {int} discountPercentage int representing the percentage to discount.
 * Please note the discount value should be negative. Ex: -20 = 20% discount.
 * @param {object} PaymentDataRequestUpdate object representing
 * the current state of the payment data request.
 * @returns {object} PaymentDataRequestUpdate object to update the
 * payment sheet with new transaction info and offer data.
 */

function percentageDiscount(promoParameters, paymentDataRequestUpdate) {
  // set variables
  let originalTransactionInfo = getGoogleTransactionInfo();
  /* because this promo code calculates a % of original prices,
   * we need to get the original transaction info */
  let newTransactionInfo = paymentDataRequestUpdate.newTransactionInfo;
  let discount = 0;

    // update promo code and description
  paymentDataRequestUpdate.newOfferInfo.offers.push({
    redemptionCode: promoParameters['code'],
    description: promoParameters['description']
  });

  // calculate discount (from original transaction items only)
  originalTransactionInfo.displayItems.forEach(function(displayItem) {
    discount += parseFloat(displayItem.price) * promoParameters['value'] * 0.01;
  });

  // add displayItem with new discount
  newTransactionInfo.displayItems.push({
      label: promoParameters['code'],
      price: discount.toFixed(2),
      type: 'LINE_ITEM'
  });

  return paymentDataRequestUpdate;
}

function staticDiscount(promoParameters, paymentDataRequestUpdate) {
  // set variables
  let newTransactionInfo = paymentDataRequestUpdate.newTransactionInfo;

    // update promo code and description
  paymentDataRequestUpdate.newOfferInfo.offers.push({
    redemptionCode: promoParameters['code'],
    description: promoParameters['description']
  });

  // add displayItem with new discount
  newTransactionInfo.displayItems.push({
      label: promoParameters['code'],
      price: promoParameters['value'].toFixed(2),
      type: 'LINE_ITEM'
  });

  return paymentDataRequestUpdate;
}

/**
 * Handles offer callback intents.
 *
 * @param {object} itermediatePaymentData response from Google Pay API when a promo code is entered in the google pay payment sheet.
 * @see {@link https://developers.google.com/pay/api/web/reference/response-objects#IntermediatePaymentData|IntermediatePaymentData object reference}
 *
 * @see {@link https://developers.google.com/pay/api/web/reference/response-objects#PaymentDataRequestUpdate|PaymentDataRequestUpdate}
 * @returns Promise<{object}> Promise of PaymentDataRequestUpdate object to update the payment sheet with new transaction info and offer data.
 */
function onPaymentDataChanged(intermediatePaymentData) {
  return new Promise(function(resolve, reject) {

    let redemptionCodes = new Set();
    let shippingOptionData = intermediatePaymentData.shippingOptionData;
    let paymentDataRequestUpdate = {};
    paymentDataRequestUpdate.newTransactionInfo = getGoogleTransactionInfo();

    // ensure that promo codes set is unique
    if(typeof intermediatePaymentData.offerData != 'undefined') {
      redemptionCodes = new Set(intermediatePaymentData.offerData.redemptionCodes);
    }

    // validate promo codes and add descriptions to payment sheet
    if (intermediatePaymentData.callbackTrigger === 'OFFER') {
      paymentDataRequestUpdate.newOfferInfo = {};
      paymentDataRequestUpdate.newOfferInfo.offers = [];
      for (redemptionCode of redemptionCodes) {
        if (validPromoCodes[redemptionCode]) {
          paymentDataRequestUpdate = validPromoCodes[redemptionCode].function(
            validPromoCodes[redemptionCode],
            paymentDataRequestUpdate
          );
        } else {
          paymentDataRequestUpdate.error = getGoogleOfferInvalidError(redemptionCode);
        }
      }
    }
    /**
     * Update item costs and total.
     *
     * In production, this final calculation should always be calculated
     * server-side to ensure it matches the price that the merchant sends to the
     * processor.
     */
    paymentDataRequestUpdate.newTransactionInfo = calculateNewTransactionInfo(
      paymentDataRequestUpdate.newTransactionInfo
    )

    resolve(paymentDataRequestUpdate);
  });
}

/**
 * Helper function to update the TransactionInfo object.
 *
 * @see {@link https://developers.google.com/pay/api/web/reference/request-objects#TransactionInfo|TransactionInfo}
 * @param {object} transactionInfo respresenting the selected shipping option in the payment sheet.
 *
 * @see {@link https://developers.google.com/pay/api/web/reference/request-objects#TransactionInfo|TransactionInfo}
 * @returns {object} transaction info, suitable for use as transactionInfo property of PaymentDataRequest
 */
function calculateNewTransactionInfo(newTransactionInfo) {
  // calculate the new totalPrice from display items
  let totalPrice = 0.00;
  newTransactionInfo.displayItems.forEach(
    function(displayItem) {
      totalPrice += parseFloat(displayItem.price);
    }
  );
  // Note: newTransactionInfo.totalPrice must be a string
  newTransactionInfo.totalPrice = totalPrice.toFixed(2);

  return newTransactionInfo;
}

/**
 * Initialize Google PaymentsClient after Google-hosted JavaScript has loaded
 *
 * Display a Google Pay payment button after confirmation of the viewer's
 * ability to pay.
 */
function onGooglePayLoaded() {
  const paymentsClient = getGooglePaymentsClient();
  paymentsClient.isReadyToPay(getGoogleIsReadyToPayRequest())
      .then(function(response) {
        if (response.result) {
          addGooglePayButton();
          // @todo prefetch payment data to improve performance after confirming site functionality
          // prefetchGooglePaymentData();
        }
      })
      .catch(function(err) {
        // show error in developer console for debugging
        console.error(err);
      });
}

/**
 * Add a Google Pay purchase button alongside an existing checkout button
 *
 * @see {@link https://developers.google.com/pay/api/web/reference/request-objects#ButtonOptions|Button options}
 * @see {@link https://developers.google.com/pay/api/web/guides/brand-guidelines|Google Pay brand guidelines}
 */
function addGooglePayButton() {
  const paymentsClient = getGooglePaymentsClient();
  const button =
      paymentsClient.createButton({
        onClick: onGooglePaymentButtonClicked,
        allowedPaymentMethods: [baseCardPaymentMethod]
      });
  document.getElementById('container').appendChild(button);
}

/**
 * Provide Google Pay API with a payment amount, currency, and amount status
 *
 * @see {@link https://developers.google.com/pay/api/web/reference/request-objects#TransactionInfo|TransactionInfo}
 * @returns {object} transaction info, suitable for use as transactionInfo property of PaymentDataRequest
 */
function getGoogleTransactionInfo() {
  return {
        displayItems: [
        {
          label: 'Subtotal',
          type: 'SUBTOTAL',
          price: '11.00',
          status: 'FINAL'
        },
        {
          label: 'Tax',
          type: 'TAX',
          price: '1.00'
        }
    ],
    currencyCode: 'USD',
    totalPriceStatus: 'FINAL',
    totalPrice: '12.00',
    totalPriceLabel: 'Total'
  };
}

/**
 * Provide Google Pay API with shipping address parameters.
 *
 * @see {@link https://developers.google.com/pay/api/web/reference/request-objects#ShippingAddressParameters|ShippingAddressParameters}
 * @returns {object} shipping address details, suitable for use as shippingAddressParameters property of PaymentDataRequest
 */
function getGoogleShippingAddressParameters() {
        return  {
        allowedCountryCodes: ['US', 'UK', 'FR', 'CA', 'MX', 'GA'],
    phoneNumberRequired: false
  };
}

/**
 * Provide Google Pay API with an invalid offer error.
 *
 * @see {@link https://developers.google.com/pay/api/web/reference/response-objects#PaymentDataError|PaymentDataError}
 * @returns {object} payment data error, suitable for use as error property of PaymentDataRequestUpdate
 */
function getGoogleOfferInvalidError(redemptionCode) {
        return {
    reason: 'OFFER_INVALID',
    message: redemptionCode + ' is not a valid promo code.',
    intent: 'OFFER'
        };
}

/**
 * Prefetch payment data to improve performance
 *
 * @see {@link https://developers.google.com/pay/api/web/reference/client#prefetchPaymentData|prefetchPaymentData()}
 */
function prefetchGooglePaymentData() {
  const paymentDataRequest = getGooglePaymentDataRequest();
  // transactionInfo must be set but does not affect cache
  paymentDataRequest.transactionInfo = {
    totalPriceStatus: 'NOT_CURRENTLY_KNOWN',
    currencyCode: 'USD'
  };
  const paymentsClient = getGooglePaymentsClient();
  paymentsClient.prefetchPaymentData(paymentDataRequest);
}


/**
 * Show Google Pay payment sheet when Google Pay payment button is clicked
 */
function onGooglePaymentButtonClicked() {
  const paymentDataRequest = getGooglePaymentDataRequest();
  paymentDataRequest.transactionInfo = getGoogleTransactionInfo();

  const paymentsClient = getGooglePaymentsClient();
  paymentsClient.loadPaymentData(paymentDataRequest)
      .then(function(paymentData) {
        // handle the response
        processPayment(paymentData);
      })
      .catch(function(err) {
        // show error in developer console for debugging
        console.error(err);
      });
}

/**
 * Process payment data returned by the Google Pay API
 * In a production environment, this function should always be implemented
 * server-side.
 *
 * @param {object} paymentData response from Google Pay API after user approves payment
 * @see {@link https://developers.google.com/pay/api/web/reference/response-objects#PaymentData|PaymentData object reference}
 */
function processPayment(paymentData) {
  // show returned data in developer console for debugging
    console.log(paymentData);
  // @todo pass payment token to your gateway to process payment
  paymentToken = paymentData.paymentMethodData.tokenizationData.token;
}</script>
<script async
  src="https://pay.google.com/gp/p/js/pay.js"
  onload="onGooglePayLoaded()"></script>
วัตถุประสงค์: ไปที่ รายการตรวจสอบการผสานรวมเพื่อตรวจสอบการผสานรวมและ ขอสิทธิ์เข้าถึงเวอร์ชันที่ใช้งานจริง