آموزش

مراحل این آموزش را دنبال کنید تا Google Pay را به برنامه اندروید خود اضافه کنید و آن را برای پذیرش کارت‌های پرداخت پیکربندی کنید.

مرحله ۱: پیکربندی پرداخت خود را تعریف کنید

نسخه API گوگل پی خود را پیکربندی کنید

نسخه API گوگل پی که برنامه شما از آن استفاده می‌کند را اعلام کنید. نسخه‌های اصلی و فرعی بر فیلدهای مورد انتظار در هر شیء ارسالی تأثیر می‌گذارند و در پاسخ گنجانده می‌شوند.

یک شیء درخواست پایه ایجاد کنید که شامل ویژگی‌هایی باشد که در تمام اشیاء درخواست دیگر وجود دارند.

کاتلین

private val baseRequest = JSONObject()
    .put("apiVersion", 2)
    .put("apiVersionMinor", 0)
    

جاوا

private static JSONObject getBaseRequest() throws JSONException {
  return new JSONObject()
      .put("apiVersion", 2)
      .put("apiVersionMinor", 0);
}
    

برای ارائه دهنده پرداخت خود، یک توکن پرداخت درخواست کنید

گوگل اطلاعات مربوط به کارت انتخابی پرداخت‌کننده را برای پردازش ایمن توسط ارائه‌دهنده خدمات پرداخت رمزگذاری می‌کند.

کاتلین

private fun gatewayTokenizationSpecification(): JSONObject {
    return JSONObject().apply {
        put("type", "PAYMENT_GATEWAY")
        put("parameters", JSONObject(mapOf(
                "gateway" to "example",
                "gatewayMerchantId" to "exampleGatewayMerchantId")))
    }
}
    

جاوا

private static JSONObject getGatewayTokenizationSpecification() throws JSONException {
  return new JSONObject()
      .put("type", "PAYMENT_GATEWAY")
      .put("parameters", new JSONObject()
          .put("gateway", "example")
          .put("gatewayMerchantId", "exampleGatewayMerchantId")
      );
}
    

به جای example و exampleGatewayMerchantId ، مقادیر مناسب برای ارائه‌دهنده پرداخت خود را وارد کنید. از جدول زیر برای یافتن مقادیر خاص gateway و gatewayMerchantId برای ارائه‌دهنده پرداخت خود استفاده کنید:

دروازه پارامترها و اسناد
9Pay
  "gateway": "ninepay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

پرداخت ABA
  "gateway": "ababank"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

قبول.آبی
  "gateway": "acceptblue"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

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

اسناد توسعه‌دهنده

ای سی پی
  "gateway": "acpay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

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

اسناد توسعه‌دهنده

آدین
  "gateway": "adyen"
  "gatewayMerchantId": "YOUR_MERCHANT_ACCOUNT_NAME"

اسناد توسعه‌دهنده

هوش مصنوعی، فین‌تک
  "gateway": "aifintech"
  "gatewayMerchantId": "YOUR_MERCHANT_ACCOUNT_NAME"

اسناد توسعه‌دهنده

ایربا پی
  "gateway": "airbapay""
  "gatewayMerchantId": "YOUR_MERCHANT_ACCOUNT_NAME"

اسناد توسعه‌دهنده

ایروند
  "gateway": "airvend"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

ایروالکس
  "gateway": "airwallex"
  "gatewayMerchantId": "YOUR_MERCHANT_ACCOUNT_NAME"

اسناد توسعه‌دهنده

آکوراتک
  "gateway": "akuratecolab"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

آلفا-بانک
  "gateway": "alfabank"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

الگوریتم
  "gateway": "algoritma"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

آلین‌پی
  "gateway": "allinpayintl"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

همه پرداخت‌ها
  "gateway": "allpayments"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

آلتیس‌پی
  "gateway": "alticepay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

شرکت فناوری مالی آمو
  "gateway": "amofintech"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

آموال پی
  "gateway": "amwalalraqamia"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

هیچ سند توسعه‌دهنده‌ای موجود نیست

آندوت
  "gateway": "anedot"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

آپکوپی
  "gateway": "apcopay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

آپکس
  "gateway": "epos"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

آسیابیل
  "gateway": "asiabill"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

هیچ سند توسعه‌دهنده‌ای موجود نیست

کمک
  "gateway": "assist"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

به بلاروس کمک کنید
  "gateway": "belassist"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

به قزاقستان کمک کنید
  "gateway": "assistkz"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

اوروس
  "gateway": "auruspay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

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

اسناد توسعه‌دهنده

اکسرو
  "gateway": "gestpay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

آذری‌کارت‌جی‌پی
  "gateway": "azericardgpay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

پرداخت نرم B2B
  "gateway": "b2bsoftpay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

بانک ۱۳۱
  "gateway": "bank131"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

بانک آر بی کی
  "gateway": "bankrbkkzpay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

بانک وستوک
  "gateway": "bankvostok"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

بارکلی‌کارت
  "gateway": "barclayssmartpayadvance"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

باریون
  "gateway": "barion"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

نظریه پایه
  "gateway": "basistheory"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

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

اسناد توسعه‌دهنده

بی‌پید
  "gateway": "ecomcharge"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

بانک برکه
  "gateway": "berekepay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

سیستم‌های صورتحساب
  "gateway": "billingsystems"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

آزمایشگاه‌های بیندو لیمیتد
  "gateway": "bindo"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

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

اسناد توسعه‌دهنده

بیزون
  "gateway": "bizzon"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

بلوک‌ها
  "gateway": "blocks"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

بلوفین
  "gateway": "bluefin"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

بلوفین اروپا
  "gateway": "bluefineurope"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

رسانه آبی
  "gateway": "bluemedia"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

بلواسنپ
  "gateway": "bluesnap"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

بوریکا
  "gateway": "borica"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

بی پی سی
  "gateway": "bpcpay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

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

اسناد توسعه‌دهنده

برینتری
  "gateway": "braintree"
  "braintree:apiVersion": "v1"
  "braintree:sdkVersion": "braintree.client.VERSION"
  "braintree:merchantId": "YOUR_BRAINTREE_MERCHANT_ID"
  "braintree:clientKey": "YOUR_BRAINTREE_TOKENIZATION_KEY"

اسناد توسعه‌دهنده

براسپاگ
  "gateway": "cielo"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

بریجرپی
  "gateway": "bridgerpay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

بی تی پی
  "gateway": "btpay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

بوکارو
  "gateway": "buckaroo"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

بویا
  "gateway": "buya"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

کاردکام
  "gateway": "cardcom"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

کارت کانکت
  "gateway": "cardconnect"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

کاردناکس
  "gateway": "cardknox"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

کارتلینک
  "gateway": "cardlink"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

کارت‌استریم
  "gateway": "crst"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

جریان‌های نقدی
  "gateway": "cashflowsgateway"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

بانک کاتای یونایتد
  "gateway": "cathaybk"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

CCAvenue امارات
  "gateway": "ccavenueuae"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

سی سی وی
  "gateway": "ccv"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

سِکابانک
  "gateway": "cecabank"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

سلریسپی
  "gateway": "celerispay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

سنترال پی
  "gateway": "centralpay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

شارژهایو
  "gateway": "chargehive"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

چریتی انجین
  "gateway": "charityengine"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

خدمات بازرگانی چیس
  "gateway": "chase"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

چک‌اوت.کام
  "gateway": "checkoutltd"
  "gatewayMerchantId": "YOUR_PUBLIC_KEY"

اسناد توسعه‌دهنده

سیتی پی
  "gateway": "citypay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

درگاه پرداخت Cloud9 (C9PG)
  "gateway": "c9pg"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

پرداخت‌های ابری
  "gateway": "cloudpayments"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

کلودواک
  "gateway": "cloudwalk"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

کوین‌فلو
  "gateway": "coinflow"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

کامپوترتاپ
  "gateway": "computop"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

کنکوردپی
  "gateway": "concordpay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

کانکتوم
  "gateway": "connectum"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

کانکس پی
  "gateway": "connexpay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

کورال‌پی
  "gateway": "coralpay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

کورفی
  "gateway": "paycoreio"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

کوروس پی
  "gateway": "corvuspay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

کردوراکس
  "gateway": "credorax"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

کراس پی
  "gateway": "crosspay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

سوئیچ متقاطع
  "gateway": "crossswitch"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

سی‌اس‌جی فورته
  "gateway": "csgforte"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

بانک سی تی بی سی
  "gateway": "ctbcbank"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

پرداخت‌های CURO
  "gateway": "curopayments"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

سایبربیز
  "gateway": "cyberbizpay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

سایبرسورس
  "gateway": "cybersource"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

دانوب.پی
  "gateway": "danubepay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

شرکت سیستم‌های دیتاکپ
  "gateway": "datatrans"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

دیتاترنس
  "gateway": "datatrans"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

دکتا
  "gateway": "decta"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

بدون اسناد توسعه‌دهنده

دژاوو
  "gateway": "denovosystempay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

دونا
  "gateway": "deuna"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

دویچه بانک AG
  "gateway":
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

بدون اسناد توسعه‌دهنده

دویچه بانک – راه حل های تجاری
  "gateway":
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

شرکت فناوری مالی دی‌جی
  "gateway": "veritrans"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

امور مالی دیجیتال
  "gateway": "digitalfinance"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

دینترو
  "gateway": "dintero"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

محلی
  "gateway": "dlocal"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

پرداخت‌های DNA
  "gateway": "dnapayments"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

دوجو
  "gateway": "dojo"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

دات‌پی
  "gateway": "dotpay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

e-SiTef - نرم‌افزار اکسپرس
  "gateway": "softwareexpress"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

ایزی کارت
  "gateway": "easycard"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

ایزی پی
  "gateway": "easypay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

ایزی پی اتحادیه اروپا
  "gateway": "easypaypt"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

ایبانکس
  "gateway": "ebanx"
  "gatewayMerchantId": "YOUR_PUBLIC_INTEGRATION_KEY"

اسناد توسعه‌دهنده

کارت الکترونیکی
  "gateway": "ecard"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

ایکامپی
  "gateway": "ecommpay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

اکوپاینت
  "gateway": "ecopaynet"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

ای‌سی‌پی
  "gateway": "ecpay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

هیچ سند توسعه‌دهنده‌ای موجود نیست

شرکت افت
  "gateway": "eftcorporation"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

ای‌جی‌ال
  "gateway": "eghl"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

الاون (همگرا)
  "gateway": "convergepay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

امرچانت‌پی
  "gateway": "emerchantpay"
  "gatewayMerchantID": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

امسپای
  "gateway": "emsonline"
  "gatewayMerchantID": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

رمزگذاری شده
  "gateway": "encoded"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

ای پی
  "gateway": "epay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

شرکت سهامی خاص EPAY
  "gateway": "epayjsc"
  "gatewayMerchantID": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

اپیک پی
  "gateway": "epicpay"
  "gatewayMerchantID": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

اسپاگو
  "gateway": "espago"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

اتصالات
  "gateway": "etisalatpaymentgateway"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

هیچ سند توسعه‌دهنده‌ای موجود نیست

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

اسناد توسعه‌دهنده

اورولت
  "gateway": "evervault"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

ایونت
  "gateway": "cardinfolink"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

ایووپی
  "gateway": "EVOPAY"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

درگاه پرداخت اوو
  "gateway": "evopaymentgateway"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

هیچ سند توسعه‌دهنده‌ای موجود نیست

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

اسناد توسعه‌دهنده

پرداخت‌های دقیق
  "gateway": "exactpay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

گورخر چاق
  "gateway": "fatzebra"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

فنیگ
  "gateway": "fenige"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

فکسکو پی یونیت
  "gateway": "fexco"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

فیبوناتیکس
  "gateway": "fibonatixparagon"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

خط مالی
  "gateway": "finline"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

فینانسو یو ای
  "gateway": "finansoua"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

فین‌کد از GMO
  "gateway": "fincode"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

فینکسوس
  "gateway": "finexus"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

فینیکس
  "gateway": "finix"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

اولین آمریکایی از برند دلوکس
  "gateway": "firstpay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

فیو (که قبلاً خدمات بازرگانی ریزر و MOLPay نام داشت)
  "gateway": "molpay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

راهکارهای پرداخت FIS
  "gateway": "fisglobalbsp"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

فیسرو
  "gateway": "fiserv"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

فیسرو
  "gateway": "fiservipg"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

فلیت
  "gateway": "flitt"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

پرداخت سیال
  "gateway": "fluidpay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

شرکت مالی FM
  "gateway": "fmfinanceltd"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

فورت‌بانک
  "gateway": "fortebank"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

فراکتال
  "gateway": "fractal"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

بانک مالی فریدام
  "gateway": "axayscom"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

فریدم‌پی
  "gateway": "freedompay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

فریدوم‌پی.مانی
  "gateway": "payboxmoney"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

فری‌پی
  "gateway": "freepay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

جریان اصلی
  "gateway": "frontstreampayments"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

پرداخت‌های فونگ
  "gateway": "fungpayments"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

پرداخت‌های GBP
  "gateway": "gbpayments"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

گیدیا
  "gateway": "geidea"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

گت تی آر ایکس
  "gateway": "globalelectronictechnology"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

گلوبال وان پی
  "gateway": "globalonepay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

هیچ سند توسعه‌دهنده‌ای موجود نیست

پرداخت‌های جهانی
  "gateway": "globalpayments"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

پرداخت‌های جهانی
  "gateway": "globalpaymentsinc"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

درگاه پرداخت GMO
  "gateway": "gmopg"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

پرداخت‌های GoDaddy
  "gateway": "godaddypayments"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

فناوری‌های ایده خوب
  "gateway": "git"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

گوپی
  "gateway": "gopay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

وب‌پی جی‌پی
  "gateway": "gpwebpay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

هیچ سند توسعه‌دهنده‌ای موجود نیست

پرداخت‌های گرانشی
  "gateway": "gravitypayments"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

گر۴وی
  "gateway": "gr4vy"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

بانک هالیک
  "gateway": "halykbank"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

هلسیم
  "gateway": "helcim"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

باسن
  "gateway": "hips"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

های تراست
  "gateway": "hitrustpay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

هوتکو
  "gateway": "hutko"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

هیپ
  "gateway": "hyp"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

ایکارد
  "gateway": "icardwallet"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

آی‌کانت
  "gateway": "iCount"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

شرکت فناوری IDid
  "gateway": "idid"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

آی‌خوخا
  "gateway": "ikhokha"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

ایموجی
  "gateway": "imoje"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

ایمپایا
  "gateway": "impayarus"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

پرداخت‌های اینوویو
  "gateway": "inoviopay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

این‌پلات
  "gateway": "inplat"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

اینستامد
  "gateway": "instamed"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

راهکارهای اینتااسند لیمیتد
  "gateway": "intasend"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

اینتلکت مانی
  "gateway": "intellectmoney"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

راهکارهای تراکنش تعاملی
  "gateway": "interactivets"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

گالری پرداخت Interswitch
  "gateway": "interswitch"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

فاصله
  "gateway": "intervale"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

آیوکا فین‌تک
  "gateway": "ioka"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

آی‌پی۸۸
  "gateway": "ipay88"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

آی پی اس آی
  "gateway": "ipsi"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

آی‌کیو متریکس
  "gateway": "iqmetrixpaymentservicesgateway"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

آیکسوپی
  "gateway": "ixopay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

جت پی
  "gateway": "jetpay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

جودوپی
  "gateway": "judopay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

هیچ سند توسعه‌دهنده‌ای موجود نیست

کاپیتال بانک
  "gateway": "eCommerceKapitalBank"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

کاسا
  "gateway": "kassacom"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

کاسا۲۴پی
  "gateway": "kassa24pay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

کینوکس
  "gateway": "kineox"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

کلیکس توسط سیتادل
  "gateway": "klix"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

کوین
  "gateway": "koin"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

گروه کی‌پی
  "gateway": "kpaygroup"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

پرداخت‌های لاپسا
  "gateway": "lapsapayments"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

پانک LHV
  "gateway": "lhvpank"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

آزادی
  "gateway": "liberty"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

پرداخت مادام العمر
  "gateway": "lifepay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

لایم‌پی
  "gateway": "limepay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

لینکلی
  "gateway": "linkly"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

لیکی‌پی
  "gateway": "liqpay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

لیتیکون او یو
  "gateway": "nuvex"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

لیتل‌پی
  "gateway": "littlepay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

لاگ پی
  "gateway": "logpay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

لویال
  "gateway": "loyale"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

لینک
  "gateway": "lynck"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

لیرا
  "gateway": "lyra"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

بانک مگنتیک
  "gateway": "magnetiq"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

مایب
  "gateway": "maibecomm"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

میک کامرس (Maksekeskus)
  "gateway": "maksekeskus"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

شرکت ماکسو جی ام بی اچ
  "gateway": "maksupayeu"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

ماندارین
  "gateway": "mandarin"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

پرداخت بازار
  "gateway": "marketpay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

خدمات درگاه پرداخت مسترکارت
  "gateway": "mpgs"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

مرچنت ای
  "gateway": "merchante"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

میدترانس
  "gateway": "midtrans"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

جنگجوی تاجر
  "gateway": "merchantwarrior"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

سیستم‌های پرداخت مینسایت
  "gateway": "minsaitpaymentsgateway"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

میتک
  "gateway": "mitecmx"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

میکس‌پلات
  "gateway": "mixplat"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

پول موبی
  "gateway": "mobimoney"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

مدولبانک
  "gateway": "modulbank"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

مولی
  "gateway": "mollie"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

موندیدو
  "gateway": "mondido"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

مونی
  "gateway": "monei"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

مونک
  "gateway": "monek"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

مونریس
  "gateway": "moneris"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

مونتا
  "gateway": "moneta"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

هیچ سند توسعه‌دهنده‌ای موجود نیست

مونِکسِت
  "gateway": "monext"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

مانی هش
  "gateway": "moneyhash"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

پول.میل.رو
  "gateway": "moneymailru"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

مونری‌پیمنت‌ها
  "gateway": "monripayments"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

موو
  "gateway": "moov"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

ام‌پی
  "gateway": "managepay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

شروع مجدد
  "gateway": "mstartipg"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

مولتی‌کارتا
  "gateway": "mulitcarta"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

پرداخت چندگانه
  "gateway": "multisafepay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

موندیپاگ
  "gateway": "mundipagg"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

مای چک
  "gateway": "mycheck"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

مای‌چویس۲پی
  "gateway": "mychoice2pay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

من فتوره
    "gateway": "myfatoorah"
    "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

مای پی
  "gateway": "mypay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

هیچ سند توسعه‌دهنده‌ای موجود نیست

مای پوز (myPOS)
  "gateway": "mypos"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

گروه N&TS
  "gateway": "netsgroup"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

ان سی سی سی
  "gateway": "nccc"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

نئولینک
  "gateway": "neolinkprocessing"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

پرداخت نئون
  "gateway": "neonpay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

نتوپیا
  "gateway": "netopia"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

نت والو
  "gateway": "netvalve"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

شبکه بین‌المللی
  "gateway": "networkintl"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

نیوب‌پی (که قبلاً STPath، Pay2Go نام داشت)
  "gateway": "newebpay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

نیوتک
  "gateway": "newtechmobile"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

نکسی
  "gateway": "nexi"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

نکسی ایزی
  "gateway": "easy"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

ان ام آی
  "gateway": "gatewayservices"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

پرداخت‌های ظهر
  "gateway": "noonpayments"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

نوکودی پی
  "gateway": "noqoodypay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

نووالنت
  "gateway": "novalnet"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

رله نکسی
  "gateway": "nexirelay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

داده‌های NTT
  "gateway": "nttdatahk"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

نووی
  "gateway": "nuvei"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

اوشن‌پیمنت
  "gateway": "oceanpayment"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

اومیزه
  "gateway": "omise"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

امنو
  "gateway": "omno"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

وان اینک
  "gateway": "oneinc"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

اونلیا
  "gateway": "onelya"
  "gatewayMerchantId": "YOUR_GATWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

وانروی
  "gateway": "ronghan"
  "gatewayMerchantId": "YOUR_GATWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

وان ویژن لیمیتد
  "gateway": "onevision"
  "gatewayMerchantId": "YOUR_GATWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

آن‌پی
  "gateway": "onpayio"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

اوپایو اثر الاون
  "gateway": "opayoelavon"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

ارکسترپی
  "gateway": "orkestapay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

اوشادبانک
  "gateway": "oschadbank"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

پاگارمه
  "gateway": "pagarme"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

پاگ‌بانک
  "gateway": "pagbank"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

پاگبراسیل
  "gateway": "pagbrasil"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

پاگسگورو
  "gateway": "pagsegurointernational"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

پی تو ام
  "gateway": "pay2m"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

پایارک
  "gateway": "payarc"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

پی.کام
  "gateway": "paycom"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

پیکامت
  "gateway": "paycomet"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

شرکت پی‌کراس
  "gateway": "paycross"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

پی داک
  "gateway": "paydock"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

پرداخت آسان
  "gateway": "payeasenet"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

موتور پرداخت
  "gateway": "payengine"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

پایرمکس
  "gateway": "payermax"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

پی فابریک
  "gateway": "payfabric"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

پی‌فکتو
  "gateway": "payfacto"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

پرداخت سریع
  "gateway": "gopayfastuat"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

پرداخت کننده
  "gateway": "paygent"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

پی‌هاب
  "gateway": "payhub"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

پای‌کاکا
  "gateway": "paykkaeu"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

پی‌لین
  "gateway": "paylane"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

پایلر
  "gateway": "payler"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

پی‌لینک®
  "gateway": "paylink"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

بار مفید
  "gateway": "payload"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

پی‌مارک
  "gateway": "paymark"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

پی مستر
  "gateway": "paymaster"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

ادغام پرداخت
  "gateway": "paymentfusion"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

پرداخت ویژن
  "gateway": "paymentvision"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

پرداخت از طریق دیوار پرداخت
  "gateway": "paymentwall"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

پایمو
  "gateway": "paymo"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

پی‌موب
  "gateway": "gpaymob"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

پی مونگو
  "gateway": "paymongo"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

پیم‌تک
  "gateway": "paymtech"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

پرداخت نزدیک من
  "gateway": "paynearme"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

پی‌نت‌ایزی
  "gateway": "payneteasy"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

پرداخت.nl
  "gateway": "paynl"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

پاینوپین
  "gateway": "paynopain"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

پی وان
  "gateway": "payone"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

پرداخت آنلاین
  "gateway": "payonline"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

پایو
  "gateway": "payoo"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

نظریه پرداخت
  "gateway": "paytheory"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

پی‌پلاس
  "gateway": "payplus"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

شرکت خصوصی پی‌پرو
  "gateway": "paypro"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

هیچ سند توسعه‌دهنده‌ای موجود نیست

ریل‌های پرداخت
  "gateway": "payrails"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

پایرکس
  "gateway": "payrexx"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

پی ریف
  "gateway": "payriff"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

پایریکس
  "gateway": "payrix"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

پی‌سیف
  "gateway": "paysafe"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

پی‌اسکات
  "gateway": "payscout"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

کسب و کار پی‌سند
  "gateway": "paysend"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

پی‌سافت
  "gateway": "paysoft"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

پی۳۶۰
  "gateway": "pay360"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

پی‌تک
  "gateway": "paytechsolutions"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

پی‌تک اوکراین
  "gateway": "paytech"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

درگاه پرداخت پیتن
  "gateway": "paytentr"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

پایترو
  "gateway": "paythru"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

پرداخت
  "gateway": "payture"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

پی یو
  "gateway": "payu"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

پی‌یو لاتام
  "gateway": "payulatam"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

پایونی
  "gateway": "payuni"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

پی‌یو رومانی
  "gateway": "payuro"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

پی‌یو روسیه
  "gateway": "payuru"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

پرداخت
  "gateway": "payway"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

پی‌وایزر
  "gateway": "paywiser"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

منطقه پایز ایرلند
  "gateway": "payzoneireland"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

خدمات دروازه PBT با مسئولیت محدود
  "gateway": "pbtgateway"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

پلکارد
  "gateway": "pelecard"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

پنسوپی
  "gateway": "pensopay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

پیکاسا
  "gateway": "pikassa"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

پینگ‌پنگ
  "gateway": "pingpongx"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

پرداخت‌های پین
  "gateway": "pinpayments"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

سیاره
  "gateway": "cccpayment"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

پلنت پی
  "gateway": "itcardpaymentservice"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

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

اسناد توسعه‌دهنده

افلاطون
  "gateway": "platon"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

پوملو
  "gateway": "pomelopay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

پورتمون
  "gateway": "portmonecom"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

پرسزن
  "gateway": "preczn"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

پرایم‌پی
  "gateway": "primepay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

پرایمر
  "gateway": "primer"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

پروکارت
  "gateway": "procard"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

پردازش
  "gateway": "processout"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

پرزلوی۲۴
  "gateway": "przelewy24"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

پی‌اس‌سی‌بی
  "gateway": "pscbru"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

شرکت پی‌اس‌آی‌گیت
  "gateway": "psigate"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

پی‌اکس‌پی فایننشال
  "gateway": "pxpfinancial"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

پرداخت Qenta CEE
  "gateway": "qenta"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

کیوی
  "gateway": "qiwi"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

کوالپی
  "gateway": "qualpay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

پرداخت سریع
  "gateway": "quickpay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

کیووالنت
  "gateway": "qvalent"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

شعاعی
  "gateway": "radial"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

مرکز پردازش رایفایزن
  "gateway": "raiffeisenprocessingcentre"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

رپید
  "gateway": "rapyd"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

پول آر بی کی
  "gateway": "rbkmoney"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

سرمایه گذاری مجدد
  "gateway": "rebailcapital"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

ربیلی
  "gateway": "Rebilly"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

مکرراً
  "gateway": "recurly"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

رددات
  "gateway": "reddotpayment"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

رید
  "gateway": "rede"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

ردسیس
  "gateway": "redsys"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

ریپی
  "gateway": "reepay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

راکت‌گیت
  "gateway": "rocketgate"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

روت‌لاین
  "gateway": "rootline"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

بانک استاندارد روسیه
  "gateway": "rsb"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

ریفت
  "gateway": "ryft"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

پرداخت امن
  "gateway": "safepay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

سیفرپی
  "gateway": "worldlinesaferpay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

سیف‌اکس‌پی
  "gateway": "safexpay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

اسبربانک
  "gateway": "sberbank"
  "gatewayMerchantId": "YOUR_ORGANIZATION_NAME"

اسناد توسعه‌دهنده

اس ای بی بالتیک
  "gateway": "sebbaltic"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

فناوری SEBES
  "gateway": "sebes"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

پرداخت امن
  "gateway": "securepay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

بانک سنس
  "gateway": "sensebank"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

سنس‌پس
  "gateway": "sensepass"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

Servicios Digitales Popular SA
  "gateway": "pagosazul"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

شیفت۴
  "gateway": "shift4payments"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

گروه شیجی
  "gateway": "shijipaymentsolutions"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

شروع با سرعت بالا
  "gateway": "shstartpay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

شوارناپای
  "gateway": "shvarenapay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

سیمباسافت
  "gateway": "simbasoft"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

سیپای
  "gateway": "sipay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

پرداخت هوشمند
  "gateway": "smartpay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

سرویس پرداخت سافت‌بانک
  "gateway": "sbps"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

پایانه فروش و پرداخت Softtouch
  "gateway": "softtouch"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

جامد
  "gateway": "solid"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

خدمات پرداخت سونی
  "gateway": "sonypaymentservices"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

اسپلیتیت
  "gateway": "splitit"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

به سرعت
  "gateway": "spreedly"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

مربع
  "gateway": "square"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

سردا پی
  "gateway": "sredapay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

SSLCOMMERZ
  "gateway": "sslcommerz"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

استنسر
  "gateway": "stancer"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

نوار
  "gateway": "stripe"
  "stripe:version": "2018-10-31"
  "stripe:publishableKey": "YOUR_PUBLIC_STRIPE_KEY"

اسناد توسعه‌دهنده

سامیت
  "gateway": "sumit"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

سان‌تک
  "gateway": "esafe"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

پرداخت‌های تخته موج‌سواری
  "gateway": "surfboard"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

بانک اسوا
  "gateway": "svea"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

سوئدبانک بالتیک
  "gateway": "swedbankbaltic"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

سوئدبانک پی
  "gateway": "payexswedbankpay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

تاباپی
  "gateway": "tabapay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

تپ‌پی (چری تک)
  "gateway": "tappay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

تپ‌پیمنت
  "gateway": "tappayments"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

پرداخت‌های تارلان
  "gateway": "tarlanpayments"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

لینک TAS
  "gateway": "taslink"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

تاترا بانکا (کارت پی)
  "gateway": "tatrabanka"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

هیچ سند توسعه‌دهنده‌ای موجود نیست

تکو
  "gateway": "teko"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

نقشه
  "gateway": "themap"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

پرداخت‌های صندوق
  "gateway": "tillpayments"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

شرکت پروژه زمان
  "gateway": "timeproject"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

تینکوف
  "gateway": "tinkoff"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

پرداخت تیپ‌تاپ
  "gateway": "tiptoppay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

هیچ سند توسعه‌دهنده‌ای موجود نیست

تی‌پی
  "gateway": "tpaycom"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

تی‌پی
  "gateway": "tpay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

پردیس تراکنش
  "gateway": "transactcampus"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

تراکنش پرو
  "gateway": "transactpro"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

شبکه خدمات تراکنش
  "gateway": "tns"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

ترانسپی‌رنت
  "gateway": "transpayrent"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

ترانزیلا
  "gateway": "tranzila"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

ترانزو
  "gateway": "tranzzo"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

پرداخت‌های قبیله‌ای
  "gateway": "tribepayments"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

ترووو
  "gateway": "truevo"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

تراست پی
  "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"

اسناد توسعه‌دهنده

یوپی
  "gateway": "uapay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

یو بی آر آر
  "gateway": "ubrrpay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

اوکراین‌کارت‌پی
  "gateway": "ukrcardpay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

پرداخت UkrGasBank
  "gateway": "ukrgasbankpay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

شرکت سهامی خاص یونی بانک
  "gateway": "unibankcheckout"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

شرکت مالی متحد
  "gateway": "unitedfinancialcorporation"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

یونیتلر
  "gateway": "uniteller"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

واحدپی
  "gateway": "unitpay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

نامحدود
  "gateway": "unlimint"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

اونزر
  "gateway": "unzer"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

اتریش
  "gateway": "unzeraustria"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

یو پی سی
  "gateway": "upc"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

آپگیت
  "gateway": "upgate"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

یو اس ای پی
  "gateway": "usaepay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

یوزپی
  "gateway": "useepay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

شرکت USIO
  "gateway": "usio"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

ولیتور
  "gateway": "valitor"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

ارزش.io
  "gateway": "inspirecommerce"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

وانکو
  "gateway": "vanco"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

وانتیف
  "gateway": "vantiv"
  "vantiv:merchantPayPageId": "YOUR_PAY_PAGE_ID"
  "vantiv:merchantOrderId": "YOUR_ORDER_ID"
  "vantiv:merchantTransactionId": "YOUR_TRANSACTION_ID"
  "vantiv:merchantReportGroup": "*web"

اسناد توسعه‌دهنده

وایاپای
  "gateway": "vayapay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

هیچ سند توسعه‌دهنده‌ای موجود نیست

وندو
  "gateway": "vendoservices"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

ورسترو
  "gateway": "verestro"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

امنیت بسیار خوب
  "gateway": "verygoodsecurity"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

ویکتوریابانک
  "gateway": "victoriabank"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

ویندیسیا
  "gateway": "vindicia"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

کیف پول ویوا
  "gateway": "vivawallet"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

وی‌تکس
  "gateway": "vtex"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

وافو
  "gateway": "waffo"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

والی
  "gateway": "wallee"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

والت داک
  "gateway": "walletdoc"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

والتتو
  "gateway": "walletto"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

وی فور پی
  "gateway": "wayforpay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

خوردن
  "gateway": "weatpay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

چه زمانی آنگاه
  "gateway": "whenthen"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

غار بادی
  "gateway": "windcave"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

وایربنک
  "gateway": "wirebank"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

وایرکارد
  "gateway": "wirecard"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

ووپی
  "gateway": "wooppay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

ووش‌پی
  "gateway": "swooshtransfer"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

وردلاین (گلوبال کالکت)
  "gateway": "globalcollect"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

ورلدلاین - اینجنیکو (پرداخت آنلاین WL)
  "gateway": "worldlineingenicoogone"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

ورلدلاین نوردیکس (پرداخت آنلاین ورلدلاین)
  "gateway": "worldlineonlinecheckout"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

جرعه‌های ورلدلاین
  "gateway": "wlsips"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

ورلدنت
  "gateway": "worldnet"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

ورلدپی
  "gateway": "worldpay"
  "gatewayMerchantId": "YOUR_WORLDPAY_MERCHANT_ID"

اسناد توسعه‌دهنده

وی‌پی
  "gateway": "wpayaus"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

WSPay
  "gateway": "wspay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

ایکس مانی
  "gateway": "xmoneypay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

XPATE
  "gateway": "xpate"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

ایکس پی
  "gateway": "xpaycomua"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

XPay توسط PostEx
  "gateway": "xpaybypostex"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

یابندپی بی وی
  "gateway": "yabandpay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

سیستم پرداخت ییجیم
  "gateway": "yigim"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

هیچ سند توسعه‌دهنده‌ای موجود نیست

ای کاسا (یوکاسا)
  "gateway": "yoomoney"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

یونو
  "gateway": "yuno"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

اعتبار Z
  "gateway": "zcredit"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

زالوپای
  "gateway": "zalopay"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

ZEN.com
  "gateway": "zen"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

مزه
  "gateway": "zestpayment"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

زورا
  "gateway": "zuora"
  "gatewayMerchantId": "YOUR_GATEWAY_MERCHANT_ID"

اسناد توسعه‌دهنده

نوع توکن‌سازی PAYMENT_GATEWAY رایج‌ترین پیاده‌سازی روش پرداخت کارت در API گوگل پی توسط فروشندگان است. اگر ارائه‌دهنده پرداخت شما پشتیبانی نمی‌شود، ممکن است بتوانید گوگل پی را با ادغام DIRECT بپذیرید. برای اطلاعات بیشتر، به مستندات توکن‌سازی مستقیم مراجعه کنید.

تعریف شبکه‌های کارت پرداخت پشتیبانی‌شده

شبکه‌های کارتی که برنامه شما می‌پذیرد را تعریف کنید.

کاتلین

private val allowedCardNetworks = JSONArray(listOf(
        "AMEX",
        "DISCOVER",
        "INTERAC",
        "JCB",
        "MASTERCARD",
        "VISA"))
    

جاوا

private static JSONArray getAllowedCardNetworks() {
  return new JSONArray()
      .put("AMEX")
      .put("DISCOVER")
      .put("INTERAC")
      .put("JCB")
      .put("MASTERCARD")
      .put("VISA");
}
    

API گوگل پی ممکن است کارت‌های موجود در فایل حساب شما ( PAN_ONLY ) یا توکن دستگاه روی یک دستگاه اندروید که با رمزنگاری امن سه‌بعدی ( CRYPTOGRAM_3DS ) تأیید شده است را برگرداند. می‌توانید API را طوری پیکربندی کنید که متدهایی را که برنامه شما پشتیبانی می‌کند، برگرداند.

قبل از تنظیم allowedCardAuthMethods ، با پردازنده پرداخت و پذیرنده خود تأیید کنید که آیا توکن‌های دستگاه ( CRYPTOGRAM_3DS ) در منطقه شما پشتیبانی می‌شوند یا خیر.

کاتلین

private val allowedCardAuthMethods = JSONArray(listOf(
        "PAN_ONLY",
        "CRYPTOGRAM_3DS"))
    

جاوا

private static JSONArray getAllowedCardAuthMethods() {
  return new JSONArray()
      .put("PAN_ONLY")
      .put("CRYPTOGRAM_3DS");
}
    

برای اطلاعات بیشتر، به مستندات مرجع شیء CardParameters مراجعه کنید. برای پشتیبانی از توکن‌های دستگاه اندروید، شبکه‌های کارت پشتیبانی‌شده را با درگاه یا پردازنده خود بررسی کنید.

روش‌های پرداخت مجاز خود را شرح دهید

برای توصیف پشتیبانی برنامه خود از روش پرداخت CARD ، روش‌های احراز هویت پشتیبانی‌شده و شبکه‌های کارتی خود را ترکیب کنید.

کاتلین

private fun baseCardPaymentMethod(): JSONObject =
    JSONObject()
        .put("type", "CARD")
        .put("parameters", JSONObject()
                .put("allowedAuthMethods", allowedCardAuthMethods)
                .put("allowedCardNetworks", allowedCardNetworks)
                .put("billingAddressRequired", true)
                .put("billingAddressParameters", JSONObject()
                        .put("format", "FULL")
                )
        )
    

جاوا

private static JSONObject getBaseCardPaymentMethod() throws JSONException {
  return new JSONObject()
      .put("type", "CARD")
      .put("parameters", new JSONObject()
          .put("allowedAuthMethods", getAllowedCardAuthMethods())
          .put("allowedCardNetworks", getAllowedCardNetworks())
          .put("billingAddressRequired", true)
          .put("billingAddressParameters", new JSONObject()
              .put("format", "FULL")
          )
      );
}
    

پیکربندی خود را با اطلاعاتی در مورد نحوه توکنیزه کردن روش پرداخت، گسترش دهید.

کاتلین

private val cardPaymentMethod: JSONObject = baseCardPaymentMethod()
    .put("tokenizationSpecification", gatewayTokenizationSpecification)
    

جاوا

private static JSONObject getCardPaymentMethod() throws JSONException {
  return getBaseCardPaymentMethod()
      .put("tokenizationSpecification", getGatewayTokenizationSpecification());
}
    

برای اطلاعات بیشتر، به مستندات مرجع شیء CardParameters مراجعه کنید.

مرحله ۲: ایجاد یک نمونه PaymentsClient

یک نمونه PaymentsClient برای تعامل با API گوگل پی ایجاد کنید.

کاتلین

fun createPaymentsClient(context: Context): PaymentsClient {
    val walletOptions = Wallet.WalletOptions.Builder()
        .setEnvironment(Constants.PAYMENTS_ENVIRONMENT)
        .build()

    return Wallet.getPaymentsClient(context, walletOptions)
}
    

جاوا

public static PaymentsClient createPaymentsClient(Context context) {
  Wallet.WalletOptions walletOptions =
      new Wallet.WalletOptions.Builder().setEnvironment(Constants.PAYMENTS_ENVIRONMENT).build();
  return Wallet.getPaymentsClient(context, walletOptions);
}
    

مرحله ۳: آمادگی برای پرداخت با API گوگل پی را تعیین کنید

روش‌های پرداخت مجاز خود را با استفاده از قطعه کد زیر به شیء درخواست پایه خود اضافه کنید:

کاتلین

fun isReadyToPayRequest(): JSONObject? =
    try {
        baseRequest
            .put("allowedPaymentMethods", JSONArray().put(baseCardPaymentMethod()))
    } catch (e: JSONException) {
        null
    }
    

جاوا

public static JSONObject getIsReadyToPayRequest() {
  try {
    return getBaseRequest()
        .put("allowedPaymentMethods", new JSONArray().put(getBaseCardPaymentMethod()));
  } catch (JSONException e) {
    return null;
  }
}
    

قبل از نمایش دکمه Google Pay، API مربوط به isReadyToPay را فراخوانی کنید تا مشخص شود که آیا کاربر می‌تواند با استفاده از API Google Pay پرداخت انجام دهد یا خیر. برای مشاهده لیست کامل ویژگی‌های پیکربندی، به مستندات شیء IsReadyToPayRequest JSON مراجعه کنید.

کاتلین

private fun possiblyShowGooglePayButton() {

    val isReadyToPayJson = PaymentsUtil.isReadyToPayRequest() ?: return
    val request = IsReadyToPayRequest.fromJson(isReadyToPayJson.toString()) ?: return

    // The call to isReadyToPay is asynchronous and returns a Task. We need to provide an
    // OnCompleteListener to be triggered when the result of the call is known.
    val task = paymentsClient.isReadyToPay(request)
    task.addOnCompleteListener { completedTask ->
        try {
            completedTask.getResult(ApiException::class.java)?.let(::setGooglePayAvailable)
        } catch (exception: ApiException) {
            // Process error
            Log.w("isReadyToPay failed", exception)
        }
    }
}
      

کاتلین
(کوروتین‌ها)

private suspend fun fetchCanUseGooglePay(): Boolean {
    val request = IsReadyToPayRequest.fromJson(PaymentsUtil.isReadyToPayRequest().toString())
    return paymentsClient.isReadyToPay(request).await()
}
      

جاوا

private void possiblyShowGooglePayButton() {

  final Optional<JSONObject> isReadyToPayJson = PaymentsUtil.getIsReadyToPayRequest();
  if (!isReadyToPayJson.isPresent()) {
    return;
  }

  // The call to isReadyToPay is asynchronous and returns a Task. We need to provide an
  // OnCompleteListener to be triggered when the result of the call is known.
  IsReadyToPayRequest request = IsReadyToPayRequest.fromJson(isReadyToPayJson.get().toString());
  Task<Boolean> task = paymentsClient.isReadyToPay(request);
  task.addOnCompleteListener(this,
      new OnCompleteListener<Boolean>() {
        @Override
        public void onComplete(@NonNull Task<Boolean> task) {
          if (task.isSuccessful()) {
            setGooglePayAvailable(task.getResult());
          } else {
            Log.w("isReadyToPay failed", task.getException());
          }
        }
      });
}
      

مرحله ۴: دکمه پرداخت گوگل پی را اضافه کنید

یک دکمه پرداخت گوگل پی به برنامه خود اضافه کنید تا خریداران را تشویق کنید تا با روش‌های پرداختی که توسط API گوگل پی و برنامه شما پشتیبانی می‌شوند، خرید خود را انجام دهند.

برای اطلاعات بیشتر در مورد انواع دکمه‌های موجود، رنگ‌ها و الزامات نمایش، به مرجع ButtonOptions مراجعه کنید.

طرح‌بندی PayButton را به طرح‌بندی پرداخت برنامه خود اضافه کنید:

کاتلین
(انشاء)

PayButton(
    modifier = Modifier
        .testTag("payButton")
        .fillMaxWidth(),
    onClick = onGooglePayButtonClick,
    allowedPaymentMethods = PaymentsUtil.allowedPaymentMethods.toString()
      

XML

<com.google.android.gms.wallet.button.PayButton
        android:id="@+id/googlePayButton"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="20dp"/>
      

اگر دکمه Google Pay را با استفاده از XML اضافه می‌کنید...

به اکتیویتی اندروید بروید و دکمه‌ی Google Pay را در کنار سایر عناصر رابط کاربری مقداردهی اولیه کنید:

کاتلین

override fun onCreate(savedInstanceState: Bundle?) {
  super.onCreate(savedInstanceState)

  // Use view binding to access the UI elements
  layout = ActivityCheckoutBinding.inflate(layoutInflater)
  setContentView(layout.root)

  // Setup buttons
  googlePayButton = layout.googlePayButton
  googlePayButton.initialize(
      ButtonOptions.newBuilder()
          .setAllowedPaymentMethods(PaymentsUtil.allowedPaymentMethods.toString()).build()
  )
  googlePayButton.setOnClickListener { requestPayment() }

  // Check Google Pay availability
  model.canUseGooglePay.observe(this, Observer(::setGooglePayAvailable))
}
      

جاوا

private void initializeUi() {

  // Use view binding to access the UI elements
  ActivityCheckoutBinding layoutBinding = ActivityCheckoutBinding.inflate(getLayoutInflater());
  setContentView(layoutBinding.getRoot());

  // The Google Pay button is a layout file – take the root view
  googlePayButton = layoutBinding.googlePayButton;
  try {
    googlePayButton.initialize(
        ButtonOptions.newBuilder()
            .setAllowedPaymentMethods(PaymentsUtil.getAllowedPaymentMethods().toString()).build()
    );
    googlePayButton.setOnClickListener(this::requestPayment);
  } catch (JSONException e) {
    // Keep Google Pay button hidden (consider logging this to your app analytics service)
  }
}
      

مرحله ۵: ایجاد یک شیء PaymentDataRequest

یک شیء JSON از نوع PaymentDataRequest اطلاعاتی را که شما از پرداخت‌کننده در برگه پرداخت Google Pay درخواست می‌کنید، توصیف می‌کند. این شامل اطلاعاتی در مورد قیمت تراکنش و وضعیت قیمت ارائه شده است. برای اطلاعات بیشتر، به مستندات شیء JSON از نوع TransactionInfo مراجعه کنید.

بلوک‌های زیر اطلاعات مربوط به فروشنده و تراکنش را به شیء PaymentDataRequest که برای شروع فرآیند پرداخت با Google Pay مورد نیاز است، اضافه می‌کنند.

کاتلین

private fun getTransactionInfo(price: String): JSONObject =
    JSONObject()
        .put("totalPrice", price)
        .put("totalPriceStatus", "FINAL")
        .put("countryCode", Constants.COUNTRY_CODE)
        .put("currencyCode", Constants.CURRENCY_CODE)
    

جاوا

private static JSONObject getTransactionInfo(String price) throws JSONException {
  return new JSONObject()
      .put("totalPrice", price)
      .put("totalPriceStatus", "FINAL")
      .put("countryCode", Constants.COUNTRY_CODE)
      .put("currencyCode", Constants.CURRENCY_CODE)
      .put("checkoutOption", "COMPLETE_IMMEDIATE_PURCHASE");
}
    

کاتلین

private val merchantInfo: JSONObject =
    JSONObject().put("merchantName", "Example Merchant")
    

جاوا

private static JSONObject getMerchantInfo() throws JSONException {
  return new JSONObject().put("merchantName", "Example Merchant");
}
    

شیء درخواست پایه خود را به یک شیء JSON جدید PaymentDataRequest اختصاص دهید. سپس، روش‌های پرداخت پشتیبانی شده توسط برنامه خود، مانند هرگونه پیکربندی داده‌های اضافی مورد انتظار در پاسخ، را اضافه کنید. در نهایت، اطلاعات مربوط به تراکنش و فروشنده‌ای که درخواست را انجام می‌دهد را اضافه کنید:

کاتلین

fun getPaymentDataRequest(priceLabel: String): JSONObject =
    baseRequest
        .put("allowedPaymentMethods", allowedPaymentMethods)
        .put("transactionInfo", getTransactionInfo(priceLabel))
        .put("merchantInfo", merchantInfo)
        .put("shippingAddressRequired", true)
        .put("shippingAddressParameters", JSONObject()
                .put("phoneNumberRequired", false)
                .put("allowedCountryCodes", JSONArray(listOf("US", "GB")))
        )
    

جاوا

public static JSONObject getPaymentDataRequest(String priceLabel) {
  try {
    return PaymentsUtil.getBaseRequest()
        .put("allowedPaymentMethods", getAllowedPaymentMethods())
        .put("transactionInfo", getTransactionInfo(priceLabel))
        .put("merchantInfo", getMerchantInfo())
        .put("shippingAddressRequired", true)
        .put("shippingAddressParameters", new JSONObject()
            .put("phoneNumberRequired", false)
            .put("allowedCountryCodes", new JSONArray(Constants.SHIPPING_SUPPORTED_COUNTRIES))
        );

  } catch (JSONException e) {
    return null;
  }
}
    

شیء PaymentDataRequest یک Parcelable است که درخواست داده پرداخت را نشان می‌دهد. PaymentDataRequest اطلاعات لازم برای پشتیبانی از پرداخت را فراهم می‌کند.

برای اطلاعات بیشتر، به مستندات شیء PaymentDataRequest JSON مراجعه کنید.

مرحله ۶: فرآیند پرداخت را با Google Pay آغاز کنید

برای شروع فرآیند پرداخت، درخواست loadPaymentData را با استفاده از شیء PaymentsClient فراخوانی کنید. این فراخوانی یک شیء Task را به همراه نتیجه عملیات برمی‌گرداند.

ابتدا، با استفاده از درخواستی که در مرحله قبل ایجاد شد، وظیفه loadPaymentData را ایجاد کنید:

کاتلین

fun getLoadPaymentDataTask(priceLabel: String): Task<PaymentData> {
    val paymentDataRequestJson = PaymentsUtil.getPaymentDataRequest(priceLabel)
    val request = PaymentDataRequest.fromJson(paymentDataRequestJson.toString())
    return paymentsClient.loadPaymentData(request)
}
    

جاوا

public Task<PaymentData> getLoadPaymentDataTask(String priceLabel) {
    JSONObject paymentDataRequestJson = PaymentsUtil.getPaymentDataRequest(priceLabel);
    if (paymentDataRequestJson == null) {
        return null;
    }

    PaymentDataRequest request =
            PaymentDataRequest.fromJson(paymentDataRequestJson.toString());
    return paymentsClient.loadPaymentData(request);
}
    

برای پردازش نتیجه، از یکی از قراردادهای نتیجه فعالیت در API استفاده کنید. این مثال از GetPaymentDataResult استفاده می‌کند که علاوه بر خود نتیجه، یک شیء با اطلاعاتی در مورد عملیات ارائه می‌دهد:

کاتلین

private val paymentDataLauncher = registerForActivityResult(GetPaymentDataResult()) { taskResult ->
    when (taskResult.status.statusCode) {
        CommonStatusCodes.SUCCESS -> {
            taskResult.result!!.let {
                Log.i("Google Pay result:", it.toJson())
                model.setPaymentData(it)
            }
        }
        //CommonStatusCodes.CANCELED -> The user canceled
        //CommonStatusCodes.DEVELOPER_ERROR -> The API returned an error (it.status: Status)
        //else -> Handle internal and other unexpected errors
    }
}
    

جاوا

private final ActivityResultLauncher<Task<PaymentData>> paymentDataLauncher =
    registerForActivityResult(new GetPaymentDataResult(), result -> {
      int statusCode = result.getStatus().getStatusCode();
      switch (statusCode) {
        case CommonStatusCodes.SUCCESS:
          handlePaymentSuccess(result.getResult());
          break;
        //case CommonStatusCodes.CANCELED: The user canceled
        case CommonStatusCodes.DEVELOPER_ERROR:
          handleError(statusCode, result.getStatus().getStatusMessage());
          break;
        default:
          handleError(statusCode, "Unexpected non API" +
              " exception when trying to deliver the task result to an activity!");
          break;
      }
    });
    

قبل از ارائه تأیید خرید به کاربر، توکن پرداخت را از شیء نتیجه PaymentData استخراج کنید و از این توکن برای ایجاد تراکنش پرداخت با درگاه خود استفاده کنید.

برای اطلاعات بیشتر در مورد شیء نتیجه، به مرجع شیء PaymentData JSON مراجعه کنید.

اکنون، از لانچر نتیجه فعالیت و وظیفه برای نمایش انتخابگر پرداخت Google Pay استفاده کنید:

کاتلین

private fun requestPayment() {
    val task = model.getLoadPaymentDataTask(priceLabel = "50.2")
    task.addOnCompleteListener(paymentDataLauncher::launch)
}
      

کاتلین
(کوروتین‌ها)

private fun requestPayment() {
    lifecycleScope.launch {
        val task = model.getLoadPaymentDataTask(priceLabel = "50.2")
        paymentDataLauncher.launch(task.awaitTask())
    }
}
      

جاوا

public void requestPayment(View view) {
  // The price provided to the API should include taxes and shipping.
  final Task<PaymentData> task = model.getLoadPaymentDataTask("50.2");
  task.addOnCompleteListener(paymentDataLauncher::launch);
}
      

همه را کنار هم بگذارید

قطعه کد زیر یک مثال کامل برای یک پروژه با پیکربندی صحیح را نشان می‌دهد. برای مراحل راه‌اندازی در سطح پروژه، به بخش پیکربندی پروژه مراجعه کنید.

کاتلین

فعالیت

/*
 * Copyright 2024 Google Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.google.android.gms.samples.pay.activity

import android.os.Bundle
import android.util.Log
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.activity.viewModels
import androidx.compose.runtime.getValue
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import androidx.lifecycle.lifecycleScope
import com.google.android.gms.common.api.CommonStatusCodes
import com.google.android.gms.wallet.contract.TaskResultContracts.GetPaymentDataResult
import com.google.android.gms.samples.pay.R
import com.google.android.gms.samples.pay.ui.ProductScreen
import com.google.android.gms.samples.pay.viewmodel.CheckoutViewModel
import com.google.android.gms.samples.pay.viewmodel.PaymentUiState
import com.google.android.gms.samples.pay.viewmodel.awaitTask
import kotlinx.coroutines.launch

class CheckoutActivity : ComponentActivity() {

    private val paymentDataLauncher = registerForActivityResult(GetPaymentDataResult()) { taskResult ->
        when (taskResult.status.statusCode) {
            CommonStatusCodes.SUCCESS -> {
                taskResult.result!!.let {
                    Log.i("Google Pay result:", it.toJson())
                    model.setPaymentData(it)
                }
            }
            //CommonStatusCodes.CANCELED -> The user canceled
            //CommonStatusCodes.DEVELOPER_ERROR -> The API returned an error (it.status: Status)
            //else -> Handle internal and other unexpected errors
        }
    }

    private val model: CheckoutViewModel by viewModels()
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        setContent {
            val payState: PaymentUiState by model.paymentUiState.collectAsStateWithLifecycle()
            ProductScreen(
                title = "Men's Tech Shell Full-Zip",
                description = "A versatile full-zip that you can wear all day long and even...",
                price = "$50.20",
                image = R.drawable.ts_10_11019a,
                payUiState = payState,
                onGooglePayButtonClick = this::requestPayment,
            )
        }
    }

    private fun requestPayment() {
        val task = model.getLoadPaymentDataTask(priceLabel = "50.2")
        task.addOnCompleteListener(paymentDataLauncher::launch)
    }
}
    

مفید

/*
 * Copyright 2024 Google Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.google.android.gms.samples.pay.util

import android.content.Context
import com.google.android.gms.samples.pay.Constants
import com.google.android.gms.wallet.PaymentsClient
import com.google.android.gms.wallet.Wallet
import org.json.JSONArray
import org.json.JSONException
import org.json.JSONObject
import java.math.BigDecimal
import java.math.RoundingMode

/**
 * Contains helper static methods for dealing with the Payments API.
 *
 * Many of the parameters used in the code are optional and are set here merely to call out their
 * existence. Please consult the documentation to learn more and feel free to remove ones not
 * relevant to your implementation.
 */
object PaymentsUtil {

    /**
     * Create a Google Pay API base request object with properties used in all requests.
     *
     * @return Google Pay API base request object.
     * @throws JSONException
     */
    private val baseRequest = JSONObject()
        .put("apiVersion", 2)
        .put("apiVersionMinor", 0)

    /**
     * Gateway Integration: Identify your gateway and your app'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 and modify them in Constants.java.
     *
     * @return Payment data tokenization for the CARD payment method.
     * @throws JSONException
     * See [PaymentMethodTokenizationSpecification](https://developers.google.com/pay/api/android/reference/object.PaymentMethodTokenizationSpecification)
     */
    private val gatewayTokenizationSpecification: JSONObject =
        JSONObject()
            .put("type", "PAYMENT_GATEWAY")
            .put("parameters", JSONObject(Constants.PAYMENT_GATEWAY_TOKENIZATION_PARAMETERS))

    /**
     * Card networks supported by your app and your gateway.
     *
     *
     * TODO: Confirm card networks supported by your app and gateway & update in Constants.java.
     *
     * @return Allowed card networks
     * See [CardParameters](https://developers.google.com/pay/api/android/reference/object.CardParameters)
     */
    private val allowedCardNetworks = JSONArray(Constants.SUPPORTED_NETWORKS)

    /**
     * Card authentication methods supported by your app and your gateway.
     *
     *
     * TODO: Confirm your processor supports Android device tokens on your supported card networks
     * and make updates in Constants.java.
     *
     * @return Allowed card authentication methods.
     * See [CardParameters](https://developers.google.com/pay/api/android/reference/object.CardParameters)
     */
    private val allowedCardAuthMethods = JSONArray(Constants.SUPPORTED_METHODS)

    /**
     * Describe your app's support for the CARD payment method.
     *
     *
     * The provided properties are applicable to both an IsReadyToPayRequest and a
     * PaymentDataRequest.
     *
     * @return A CARD PaymentMethod object describing accepted cards.
     * @throws JSONException
     * See [PaymentMethod](https://developers.google.com/pay/api/android/reference/object.PaymentMethod)
     */
    // Optionally, you can add billing address/phone number associated with a CARD payment method.
    private fun baseCardPaymentMethod(): JSONObject =
        JSONObject()
            .put("type", "CARD")
            .put("parameters", JSONObject()
                    .put("allowedAuthMethods", allowedCardAuthMethods)
                    .put("allowedCardNetworks", allowedCardNetworks)
                    .put("billingAddressRequired", true)
                    .put("billingAddressParameters", JSONObject()
                            .put("format", "FULL")
                    )
            )

    /**
     * Describe the expected returned payment data for the CARD payment method
     *
     * @return A CARD PaymentMethod describing accepted cards and optional fields.
     * @throws JSONException
     * See [PaymentMethod](https://developers.google.com/pay/api/android/reference/object.PaymentMethod)
     */
    private val cardPaymentMethod: JSONObject = baseCardPaymentMethod()
        .put("tokenizationSpecification", gatewayTokenizationSpecification)

    val allowedPaymentMethods: JSONArray = JSONArray().put(cardPaymentMethod)

    /**
     * An object describing accepted forms of payment by your app, used to determine a viewer's
     * readiness to pay.
     *
     * @return API version and payment methods supported by the app.
     * See [IsReadyToPayRequest](https://developers.google.com/pay/api/android/reference/object.IsReadyToPayRequest)
     */
    fun isReadyToPayRequest(): JSONObject? =
        try {
            baseRequest
                .put("allowedPaymentMethods", JSONArray().put(baseCardPaymentMethod()))
        } catch (e: JSONException) {
            null
        }

    /**
     * Information about the merchant requesting payment information
     *
     * @return Information about the merchant.
     * @throws JSONException
     * See [MerchantInfo](https://developers.google.com/pay/api/android/reference/object.MerchantInfo)
     */
    private val merchantInfo: JSONObject =
        JSONObject().put("merchantName", "Example Merchant")

    /**
     * Creates an instance of [PaymentsClient] for use in an [Context] using the
     * environment and theme set in [Constants].
     *
     * @param context from the caller activity.
     */
    fun createPaymentsClient(context: Context): PaymentsClient {
        val walletOptions = Wallet.WalletOptions.Builder()
            .setEnvironment(Constants.PAYMENTS_ENVIRONMENT)
            .build()

        return Wallet.getPaymentsClient(context, walletOptions)
    }

    /**
     * Provide Google Pay API with a payment amount, currency, and amount status.
     *
     * @return information about the requested payment.
     * @throws JSONException
     * See [TransactionInfo](https://developers.google.com/pay/api/android/reference/object.TransactionInfo)
     */
    private fun getTransactionInfo(price: String): JSONObject =
        JSONObject()
            .put("totalPrice", price)
            .put("totalPriceStatus", "FINAL")
            .put("countryCode", Constants.COUNTRY_CODE)
            .put("currencyCode", Constants.CURRENCY_CODE)

    /**
     * An object describing information requested in a Google Pay payment sheet
     *
     * @return Payment data expected by your app.
     * See [PaymentDataRequest](https://developers.google.com/pay/api/android/reference/object.PaymentDataRequest)
     */
    fun getPaymentDataRequest(priceLabel: String): JSONObject =
        baseRequest
            .put("allowedPaymentMethods", allowedPaymentMethods)
            .put("transactionInfo", getTransactionInfo(priceLabel))
            .put("merchantInfo", merchantInfo)
            .put("shippingAddressRequired", true)
            .put("shippingAddressParameters", JSONObject()
                    .put("phoneNumberRequired", false)
                    .put("allowedCountryCodes", JSONArray(listOf("US", "GB")))
            )
}

      

مشاهده مدل

/*
 * Copyright 2024 Google Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.google.android.gms.samples.pay.viewmodel

import android.app.Application
import android.util.Log
import androidx.lifecycle.AndroidViewModel
import androidx.lifecycle.viewModelScope
import com.google.android.gms.common.api.ApiException
import com.google.android.gms.common.api.CommonStatusCodes
import com.google.android.gms.samples.pay.util.PaymentsUtil
import com.google.android.gms.tasks.CancellationTokenSource
import com.google.android.gms.tasks.Task
import com.google.android.gms.wallet.IsReadyToPayRequest
import com.google.android.gms.wallet.PaymentData
import com.google.android.gms.wallet.PaymentDataRequest
import com.google.android.gms.wallet.PaymentsClient
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.asStateFlow
import kotlinx.coroutines.flow.update
import kotlinx.coroutines.launch
import kotlinx.coroutines.suspendCancellableCoroutine
import kotlinx.coroutines.tasks.await
import org.json.JSONException
import org.json.JSONObject
import java.util.concurrent.Executor
import kotlin.coroutines.resume

class CheckoutViewModel(application: Application) : AndroidViewModel(application) {

    private val _paymentUiState: MutableStateFlow<PaymentUiState> =
        MutableStateFlow(PaymentUiState.NotStarted)
    val paymentUiState: StateFlow<PaymentUiState> = _paymentUiState.asStateFlow()

    // A client for interacting with the Google Pay API.
    private val paymentsClient: PaymentsClient = PaymentsUtil.createPaymentsClient(application)

    init {
        viewModelScope.launch {
            verifyGooglePayReadiness()
        }
    }

    /**
     * Determine the user's ability to pay with a payment method supported by your app and display
     * a Google Pay payment button.
    ) */
    private suspend fun verifyGooglePayReadiness() {
        val newUiState: PaymentUiState = try {
            if (fetchCanUseGooglePay()) {
                PaymentUiState.Available
            } else {
                PaymentUiState.Error(CommonStatusCodes.ERROR)
            }
        } catch (exception: ApiException) {
            PaymentUiState.Error(exception.statusCode, exception.message)
        }

        _paymentUiState.update { newUiState }
    }

    /**
     * Determine the user's ability to pay with a payment method supported by your app.
    ) */
    private suspend fun fetchCanUseGooglePay(): Boolean {
        val request = IsReadyToPayRequest.fromJson(PaymentsUtil.isReadyToPayRequest().toString())
        return paymentsClient.isReadyToPay(request).await()
    }

    /**
     * Creates a [Task] that starts the payment process with the transaction details included.
     *
     * @return a [Task] with the payment information.
     * @see [PaymentDataRequest](https://developers.google.com/android/reference/com/google/android/gms/wallet/PaymentsClient#loadPaymentData(com.google.android.gms.wallet.PaymentDataRequest)
    ) */
    fun getLoadPaymentDataTask(priceLabel: String): Task<PaymentData> {
        val paymentDataRequestJson = PaymentsUtil.getPaymentDataRequest(priceLabel)
        val request = PaymentDataRequest.fromJson(paymentDataRequestJson.toString())
        return paymentsClient.loadPaymentData(request)
    }

    /**
     * At this stage, the user has already seen a popup informing them an error occurred. Normally,
     * only logging is required.
     *
     * @param statusCode will hold the value of any constant from CommonStatusCode or one of the
     * WalletConstants.ERROR_CODE_* constants.
     * @see [
     * Wallet Constants Library](https://developers.google.com/android/reference/com/google/android/gms/wallet/WalletConstants.constant-summary)
     */
    private fun handleError(statusCode: Int, message: String?) {
        Log.e("Google Pay API error", "Error code: $statusCode, Message: $message")
    }

    fun setPaymentData(paymentData: PaymentData) {
        val payState = extractPaymentBillingName(paymentData)?.let {
            PaymentUiState.PaymentCompleted(payerName = it)
        } ?: PaymentUiState.Error(CommonStatusCodes.INTERNAL_ERROR)

        _paymentUiState.update { payState }
    }

    private fun extractPaymentBillingName(paymentData: PaymentData): String? {
        val paymentInformation = paymentData.toJson()

        try {
            // Token will be null if PaymentDataRequest was not constructed using fromJson(String).
            val paymentMethodData =
                JSONObject(paymentInformation).getJSONObject("paymentMethodData")
            val billingName = paymentMethodData.getJSONObject("info")
                .getJSONObject("billingAddress").getString("name")
            Log.d("BillingName", billingName)

            // Logging token string.
            Log.d(
                "Google Pay token", paymentMethodData
                    .getJSONObject("tokenizationData")
                    .getString("token")
            )

            return billingName
        } catch (error: JSONException) {
            Log.e("handlePaymentSuccess", "Error: $error")
        }

        return null
    }
}

abstract class PaymentUiState internal constructor() {
    object NotStarted : PaymentUiState()
    object Available : PaymentUiState()
    class PaymentCompleted(val payerName: String) : PaymentUiState()
    class Error(val code: Int, val message: String? = null) : PaymentUiState()
}

suspend fun <T> Task<T>.awaitTask(cancellationTokenSource: CancellationTokenSource? = null): Task<T> {
    return if (isComplete) this else suspendCancellableCoroutine { cont ->
        // Run the callback directly to avoid unnecessarily scheduling on the main thread.
        addOnCompleteListener(DirectExecutor, cont::resume)

        cancellationTokenSource?.let { cancellationSource ->
            cont.invokeOnCancellation { cancellationSource.cancel() }
        }
    }
}

/**
 * An [Executor] that just directly executes the [Runnable].
 */
private object DirectExecutor : Executor {
    override fun execute(r: Runnable) {
        r.run()
    }
}

    

ثابت‌ها

/*
 * Copyright 2024 Google Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.google.android.gms.samples.pay

import com.google.android.gms.wallet.WalletConstants

/**
 * This file contains several constants you must edit before proceeding.
 * Please take a look at PaymentsUtil.java to see where the constants are used and to potentially
 * remove ones not relevant to your integration.
 *
 *
 * Required changes:
 *
 *  1.  Update SUPPORTED_NETWORKS and SUPPORTED_METHODS if required (consult your processor if
 * unsure)
 *  1.  Update CURRENCY_CODE to the currency you use.
 *  1.  Update SHIPPING_SUPPORTED_COUNTRIES to list the countries where you currently ship. If this
 * is not applicable to your app, remove the relevant bits from PaymentsUtil.java.
 *  1.  If you're integrating with your `PAYMENT_GATEWAY`, update
 * PAYMENT_GATEWAY_TOKENIZATION_NAME and PAYMENT_GATEWAY_TOKENIZATION_PARAMETERS per the
 * instructions they provided. You don't need to update DIRECT_TOKENIZATION_PUBLIC_KEY.
 *  1.  If you're using `DIRECT` integration, please edit protocol version and public key as
 * per the instructions.
 */
object Constants {
    /**
     * Changing this to ENVIRONMENT_PRODUCTION will make the API return chargeable card information.
     * Please refer to the documentation to read about the required steps needed to enable
     * ENVIRONMENT_PRODUCTION.
     *
     * @value #PAYMENTS_ENVIRONMENT
     */
    const val PAYMENTS_ENVIRONMENT = WalletConstants.ENVIRONMENT_TEST

    /**
     * The allowed networks to be requested from the API. If the user has cards from networks not
     * specified here in their account, these will not be offered for them to choose in the popup.
     *
     * @value #SUPPORTED_NETWORKS
     */
    val SUPPORTED_NETWORKS = listOf(
            "AMEX",
            "DISCOVER",
            "JCB",
            "MASTERCARD",
            "VISA")

    /**
     * The Google Pay API may return cards on file on Google.com (PAN_ONLY) and/or a device token on
     * an Android device authenticated with a 3-D Secure cryptogram (CRYPTOGRAM_3DS).
     *
     * @value #SUPPORTED_METHODS
     */
    val SUPPORTED_METHODS = listOf(
            "PAN_ONLY",
            "CRYPTOGRAM_3DS")

    /**
     * Required by the API, but not visible to the user.
     *
     * @value #COUNTRY_CODE Your local country
     */
    const val COUNTRY_CODE = "US"

    /**
     * Required by the API, but not visible to the user.
     *
     * @value #CURRENCY_CODE Your local currency
     */
    const val CURRENCY_CODE = "USD"

    /**
     * Supported countries for shipping (use ISO 3166-1 alpha-2 country codes). Relevant only when
     * requesting a shipping address.
     *
     * @value #SHIPPING_SUPPORTED_COUNTRIES
     */
    val SHIPPING_SUPPORTED_COUNTRIES = listOf("US", "GB")

    /**
     * The name of your payment processor/gateway. Please refer to their documentation for more
     * information.
     *
     * @value #PAYMENT_GATEWAY_TOKENIZATION_NAME
     */
    private const val PAYMENT_GATEWAY_TOKENIZATION_NAME = "example"

    /**
     * Custom parameters required by the processor/gateway.
     * In many cases, your processor / gateway will only require a gatewayMerchantId.
     * Please refer to your processor's documentation for more information. The number of parameters
     * required and their names vary depending on the processor.
     *
     * @value #PAYMENT_GATEWAY_TOKENIZATION_PARAMETERS
     */
    val PAYMENT_GATEWAY_TOKENIZATION_PARAMETERS = mapOf(
            "gateway" to PAYMENT_GATEWAY_TOKENIZATION_NAME,
            "gatewayMerchantId" to "exampleGatewayMerchantId"
    )

    /**
     * Only used for `DIRECT` tokenization. Can be removed when using `PAYMENT_GATEWAY`
     * tokenization.
     *
     * @value #DIRECT_TOKENIZATION_PUBLIC_KEY
     */
    const val DIRECT_TOKENIZATION_PUBLIC_KEY = "REPLACE_ME"

    /**
     * Parameters required for `DIRECT` tokenization.
     * Only used for `DIRECT` tokenization. Can be removed when using `PAYMENT_GATEWAY`
     * tokenization.
     *
     * @value #DIRECT_TOKENIZATION_PARAMETERS
     */
    val DIRECT_TOKENIZATION_PARAMETERS = mapOf(
            "protocolVersion" to "ECv1",
            "publicKey" to DIRECT_TOKENIZATION_PUBLIC_KEY
    )
}

    

جاوا

فعالیت

/*
 * Copyright 2024 Google Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.google.android.gms.samples.pay.activity;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Toast;

import androidx.activity.result.ActivityResultLauncher;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.lifecycle.ViewModelProvider;

import com.google.android.gms.common.api.CommonStatusCodes;
import com.google.android.gms.samples.pay.R;
import com.google.android.gms.samples.pay.databinding.ActivityCheckoutBinding;
import com.google.android.gms.samples.pay.util.PaymentsUtil;
import com.google.android.gms.samples.pay.viewmodel.CheckoutViewModel;
import com.google.android.gms.tasks.Task;
import com.google.android.gms.wallet.PaymentData;
import com.google.android.gms.wallet.button.ButtonOptions;
import com.google.android.gms.wallet.button.PayButton;
import com.google.android.gms.wallet.contract.TaskResultContracts.GetPaymentDataResult;

import org.json.JSONException;
import org.json.JSONObject;

import java.util.Locale;

/**
 * Checkout implementation for the app
 */
public class CheckoutActivity extends AppCompatActivity {

  private CheckoutViewModel model;

  private PayButton googlePayButton;

  private final ActivityResultLauncher<Task<PaymentData>> paymentDataLauncher =
      registerForActivityResult(new GetPaymentDataResult(), result -> {
        int statusCode = result.getStatus().getStatusCode();
        switch (statusCode) {
          case CommonStatusCodes.SUCCESS:
            handlePaymentSuccess(result.getResult());
            break;
          //case CommonStatusCodes.CANCELED: The user canceled
          case CommonStatusCodes.DEVELOPER_ERROR:
            handleError(statusCode, result.getStatus().getStatusMessage());
            break;
          default:
            handleError(statusCode, "Unexpected non API" +
                " exception when trying to deliver the task result to an activity!");
            break;
        }
      });

  /**
   * Initialize the Google Pay API on creation of the activity
   *
   * @see Activity#onCreate(android.os.Bundle)
   */
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    initializeUi();

    // Check Google Pay availability
    model = new ViewModelProvider(this).get(CheckoutViewModel.class);
    model.canUseGooglePay.observe(this, this::setGooglePayAvailable);
  }

  private void initializeUi() {

    // Use view binding to access the UI elements
    ActivityCheckoutBinding layoutBinding = ActivityCheckoutBinding.inflate(getLayoutInflater());
    setContentView(layoutBinding.getRoot());

    // The Google Pay button is a layout file – take the root view
    googlePayButton = layoutBinding.googlePayButton;
    try {
      googlePayButton.initialize(
          ButtonOptions.newBuilder()
              .setAllowedPaymentMethods(PaymentsUtil.getAllowedPaymentMethods().toString()).build()
      );
      googlePayButton.setOnClickListener(this::requestPayment);
    } catch (JSONException e) {
      // Keep Google Pay button hidden (consider logging this to your app analytics service)
    }
  }

  /**
   * If isReadyToPay returned {@code true}, show the button and hide the "checking" text.
   * Otherwise, notify the user that Google Pay is not available. Please adjust to fit in with
   * your current user flow. You are not required to explicitly let the user know if isReadyToPay
   * returns {@code false}.
   *
   * @param available isReadyToPay API response.
   */
  private void setGooglePayAvailable(boolean available) {
    if (available) {
      googlePayButton.setVisibility(View.VISIBLE);
    } else {
      Toast.makeText(this, R.string.google_pay_status_unavailable, Toast.LENGTH_LONG).show();
    }
  }

  public void requestPayment(View view) {
    // The price provided to the API should include taxes and shipping.
    final Task<PaymentData> task = model.getLoadPaymentDataTask("50.2");
    task.addOnCompleteListener(paymentDataLauncher::launch);
  }

  /**
   * PaymentData response object contains the payment information, as well as any additional
   * requested information, such as billing and shipping address.
   *
   * @param paymentData A response object returned by Google after a payer approves payment.
   * @see <a href="https://developers.google.com/pay/api/android/reference/
   * object#PaymentData">PaymentData</a>
   */
  private void handlePaymentSuccess(PaymentData paymentData) {
    final String paymentInfo = paymentData.toJson();

    try {
      JSONObject paymentMethodData = new JSONObject(paymentInfo).getJSONObject("paymentMethodData");
      // If the gateway is set to "example", no payment information is returned - instead, the
      // token will only consist of "examplePaymentMethodToken".

      final JSONObject info = paymentMethodData.getJSONObject("info");
      final String billingName = info.getJSONObject("billingAddress").getString("name");
      Toast.makeText(
          this, getString(R.string.payments_show_name, billingName),
          Toast.LENGTH_LONG).show();

      // Logging token string.
      Log.d("Google Pay token", paymentMethodData
          .getJSONObject("tokenizationData")
          .getString("token"));

      startActivity(new Intent(this, CheckoutSuccessActivity.class));

    } catch (JSONException e) {
      Log.e("handlePaymentSuccess", "Error: " + e);
    }
  }

  /**
   * At this stage, the user has already seen a popup informing them an error occurred. Normally,
   * only logging is required.
   *
   * @param statusCode holds the value of any constant from CommonStatusCode or one of the
   *                   WalletConstants.ERROR_CODE_* constants.
   * @see <a href="https://developers.google.com/android/reference/com/google/android/gms/wallet/
   * WalletConstants#constant-summary">Wallet Constants Library</a>
   */
  private void handleError(int statusCode, @Nullable String message) {
    Log.e("loadPaymentData failed",
        String.format(Locale.getDefault(), "Error code: %d, Message: %s", statusCode, message));
  }
}

    

فعالیت موفقیت

/*
 * Copyright 2024 Google Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.google.android.gms.samples.pay.activity;

import android.os.Bundle;

import androidx.appcompat.app.AppCompatActivity;

import com.google.android.gms.samples.pay.databinding.ActivityCheckoutSuccessBinding;

public class CheckoutSuccessActivity extends AppCompatActivity {

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    ActivityCheckoutSuccessBinding layoutBinding = ActivityCheckoutSuccessBinding.inflate(getLayoutInflater());
    setContentView(layoutBinding.getRoot());
  }
}
    

مفید

/*
 * Copyright 2024 Google Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.google.android.gms.samples.pay.util;

import android.content.Context;

import com.google.android.gms.samples.pay.Constants;
import com.google.android.gms.wallet.PaymentsClient;
import com.google.android.gms.wallet.Wallet;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.math.BigDecimal;
import java.math.BigInteger;
import java.math.RoundingMode;

/**
 * Contains helper static methods for dealing with the Payments API.
 *
 * <p>Many of the parameters used in the code are optional and are set here merely to call out their
 * existence. Please consult the documentation to learn more and feel free to remove ones not
 * relevant to your implementation.
 */
public class PaymentsUtil {

  /**
   * Create a Google Pay API base request object with properties used in all requests.
   *
   * @return Google Pay API base request object.
   * @throws JSONException if the object is malformed.
   */
  private static JSONObject getBaseRequest() throws JSONException {
    return new JSONObject()
        .put("apiVersion", 2)
        .put("apiVersionMinor", 0);
  }

  /**
   * Creates an instance of {@link PaymentsClient} for use in an {@link Context} using the
   * environment and theme set in {@link Constants}.
   *
   * @param context is the caller's context.
   */
  public static PaymentsClient createPaymentsClient(Context context) {
    Wallet.WalletOptions walletOptions =
        new Wallet.WalletOptions.Builder().setEnvironment(Constants.PAYMENTS_ENVIRONMENT).build();
    return Wallet.getPaymentsClient(context, walletOptions);
  }

  /**
   * Gateway Integration: Identify your gateway and your app's gateway merchant identifier.
   *
   * <p>The Google Pay API response will return an encrypted payment method capable of being charged
   * by a supported gateway after payer authorization.
   *
   * <p>TODO: Check with your gateway on the parameters to pass and modify them in Constants.java.
   *
   * @return Payment data tokenization for the CARD payment method.
   * @throws JSONException if the object is malformed.
   * @see <a href=
   * "https://developers.google.com/pay/api/android/reference/object#PaymentMethodTokenizationSpecification">PaymentMethodTokenizationSpecification</a>
   */
  private static JSONObject getGatewayTokenizationSpecification() throws JSONException {
    return new JSONObject()
        .put("type", "PAYMENT_GATEWAY")
        .put("parameters", new JSONObject()
            .put("gateway", "example")
            .put("gatewayMerchantId", "exampleGatewayMerchantId")
        );
  }

  /**
   * {@code DIRECT} Integration: Decrypt a response directly on your servers. This configuration has
   * additional data security requirements from Google and additional PCI DSS compliance complexity.
   *
   * <p>Please refer to the documentation for more information about {@code DIRECT} integration. The
   * type of integration you use depends on your payment processor.
   *
   * @return Payment data tokenization for the CARD payment method.
   * @throws JSONException if the object is malformed.
   * @see <a
   * href="https://developers.google.com/pay/api/android/reference/object#PaymentMethodTokenizationSpecification">PaymentMethodTokenizationSpecification</a>
   */
  private static JSONObject getDirectTokenizationSpecification()
      throws JSONException, RuntimeException {
    return new JSONObject()
        .put("type", "DIRECT")
        .put("parameters", new JSONObject(Constants.DIRECT_TOKENIZATION_PARAMETERS));
  }

  /**
   * Card networks supported by your app and your gateway.
   *
   * <p>TODO: Confirm card networks supported by your app and gateway & update in Constants.java.
   *
   * @return Allowed card networks
   * @see <a
   * href="https://developers.google.com/pay/api/android/reference/object#CardParameters">CardParameters</a>
   */
  private static JSONArray getAllowedCardNetworks() {
    return new JSONArray(Constants.SUPPORTED_NETWORKS);
  }

  /**
   * Card authentication methods supported by your app and your gateway.
   *
   * <p>TODO: Confirm your processor supports Android device tokens on your supported card networks
   * and make updates in Constants.java.
   *
   * @return Allowed card authentication methods.
   * @see <a
   * href="https://developers.google.com/pay/api/android/reference/object#CardParameters">CardParameters</a>
   */
  private static JSONArray getAllowedCardAuthMethods() {
    return new JSONArray(Constants.SUPPORTED_METHODS);
  }

  /**
   * Describe your app's support for the CARD payment method.
   *
   * <p>The provided properties are applicable to both an IsReadyToPayRequest and a
   * PaymentDataRequest.
   *
   * @return A CARD PaymentMethod object describing accepted cards.
   * @throws JSONException if the object is malformed.
   * @see <a
   * href="https://developers.google.com/pay/api/android/reference/object#PaymentMethod">PaymentMethod</a>
   */
  private static JSONObject getBaseCardPaymentMethod() throws JSONException {
    return new JSONObject()
        .put("type", "CARD")
        .put("parameters", new JSONObject()
            .put("allowedAuthMethods", getAllowedCardAuthMethods())
            .put("allowedCardNetworks", getAllowedCardNetworks())
            .put("billingAddressRequired", true)
            .put("billingAddressParameters", new JSONObject()
                .put("format", "FULL")
            )
        );
  }

  /**
   * Describe the expected returned payment data for the CARD payment method
   *
   * @return A CARD PaymentMethod describing accepted cards and optional fields.
   * @throws JSONException if the object is malformed.
   * @see <a
   * href="https://developers.google.com/pay/api/android/reference/object#PaymentMethod">PaymentMethod</a>
   */
  private static JSONObject getCardPaymentMethod() throws JSONException {
    return getBaseCardPaymentMethod()
        .put("tokenizationSpecification", getGatewayTokenizationSpecification());
  }

  /**
   * Return a collection of payment methods allowed to complete the operation with Google Pay.
   *
   * @return A JSONArray object with the list of payment methods.
   * @throws JSONException if the JSON object is malformed.
   */
  public static JSONArray getAllowedPaymentMethods() throws JSONException {
    return new JSONArray().put(getCardPaymentMethod());
  }

  /**
   * An object describing accepted forms of payment by your app, used to determine a viewer's
   * readiness to pay.
   *
   * @return API version and payment methods supported by the app.
   * @see <a
   * href="https://developers.google.com/pay/api/android/reference/object#IsReadyToPayRequest">IsReadyToPayRequest</a>
   */
  public static JSONObject getIsReadyToPayRequest() {
    try {
      return getBaseRequest()
          .put("allowedPaymentMethods", new JSONArray().put(getBaseCardPaymentMethod()));
    } catch (JSONException e) {
      return null;
    }
  }

  /**
   * Provide Google Pay API with a payment amount, currency, and amount status.
   *
   * @return information about the requested payment.
   * @throws JSONException if the object is malformed.
   * @see <a
   * href="https://developers.google.com/pay/api/android/reference/object#TransactionInfo">TransactionInfo</a>
   */
  private static JSONObject getTransactionInfo(String price) throws JSONException {
    return new JSONObject()
        .put("totalPrice", price)
        .put("totalPriceStatus", "FINAL")
        .put("countryCode", Constants.COUNTRY_CODE)
        .put("currencyCode", Constants.CURRENCY_CODE)
        .put("checkoutOption", "COMPLETE_IMMEDIATE_PURCHASE");
  }

  /**
   * Information about the merchant requesting payment information
   *
   * @return Information about the merchant.
   * @throws JSONException if the object is malformed.
   * @see <a
   * href="https://developers.google.com/pay/api/android/reference/object#MerchantInfo">MerchantInfo</a>
   */
  private static JSONObject getMerchantInfo() throws JSONException {
    return new JSONObject().put("merchantName", "Example Merchant");
  }

  /**
   * An object describing information requested in a Google Pay payment sheet
   *
   * @return Payment data expected by your app.
   * @see <a
   * href="https://developers.google.com/pay/api/android/reference/object#PaymentDataRequest">PaymentDataRequest</a>
   */
  public static JSONObject getPaymentDataRequest(String priceLabel) {
    try {
      return PaymentsUtil.getBaseRequest()
          .put("allowedPaymentMethods", getAllowedPaymentMethods())
          .put("transactionInfo", getTransactionInfo(priceLabel))
          .put("merchantInfo", getMerchantInfo())
          .put("shippingAddressRequired", true)
          .put("shippingAddressParameters", new JSONObject()
              .put("phoneNumberRequired", false)
              .put("allowedCountryCodes", new JSONArray(Constants.SHIPPING_SUPPORTED_COUNTRIES))
          );

    } catch (JSONException e) {
      return null;
    }
  }
}

    

مشاهده مدل

/*
 * Copyright 2024 Google Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.google.android.gms.samples.pay.viewmodel;

import android.app.Application;
import android.util.Log;

import androidx.annotation.NonNull;
import androidx.lifecycle.AndroidViewModel;
import androidx.lifecycle.LiveData;
import androidx.lifecycle.MutableLiveData;

import com.google.android.gms.samples.pay.util.PaymentsUtil;
import com.google.android.gms.tasks.Task;
import com.google.android.gms.wallet.IsReadyToPayRequest;
import com.google.android.gms.wallet.PaymentData;
import com.google.android.gms.wallet.PaymentDataRequest;
import com.google.android.gms.wallet.PaymentsClient;

import org.json.JSONObject;

public class CheckoutViewModel extends AndroidViewModel {

    // A client for interacting with the Google Pay API.
    private final PaymentsClient paymentsClient;

    // LiveData with the result of whether the user can pay using Google Pay
    private final MutableLiveData<Boolean> _canUseGooglePay = new MutableLiveData<>();

    public CheckoutViewModel(@NonNull Application application) {
        super(application);
        paymentsClient = PaymentsUtil.createPaymentsClient(application);

        fetchCanUseGooglePay();
    }

    public final LiveData<Boolean> canUseGooglePay = _canUseGooglePay;

    /**
     * Determine the user's ability to pay with a payment method supported by your app and display
     * a Google Pay payment button.
     */
    private void fetchCanUseGooglePay() {
        final JSONObject isReadyToPayJson = PaymentsUtil.getIsReadyToPayRequest();
        if (isReadyToPayJson == null) {
            _canUseGooglePay.setValue(false);
            return;
        }

        // The call to isReadyToPay is asynchronous and returns a Task. We need to provide an
        // OnCompleteListener to be triggered when the result of the call is known.
        IsReadyToPayRequest request = IsReadyToPayRequest.fromJson(isReadyToPayJson.toString());
        Task<Boolean> task = paymentsClient.isReadyToPay(request);
        task.addOnCompleteListener(
                completedTask -> {
                    if (completedTask.isSuccessful()) {
                        _canUseGooglePay.setValue(completedTask.getResult());
                    } else {
                        Log.w("isReadyToPay failed", completedTask.getException());
                        _canUseGooglePay.setValue(false);
                    }
                });
    }

    /**
     * Creates a Task that starts the payment process with the transaction details included.
     *
     * @param priceLabel the price to show on the payment sheet.
     * @return a Task with the payment information.
     */
    public Task<PaymentData> getLoadPaymentDataTask(String priceLabel) {
        JSONObject paymentDataRequestJson = PaymentsUtil.getPaymentDataRequest(priceLabel);
        if (paymentDataRequestJson == null) {
            return null;
        }

        PaymentDataRequest request =
                PaymentDataRequest.fromJson(paymentDataRequestJson.toString());
        return paymentsClient.loadPaymentData(request);
    }
}
    

ثابت‌ها

/*
 * Copyright 2024 Google Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.google.android.gms.samples.pay;

import com.google.android.gms.wallet.WalletConstants;

import java.util.Arrays;
import java.util.HashMap;
import java.util.List;

/**
 * This file contains several constants you must edit before proceeding.
 * Please take a look at PaymentsUtil.java to see where the constants are used and to potentially
 * remove ones not relevant to your integration.
 *
 * <p>Required changes:
 * <ol>
 * <li> Update SUPPORTED_NETWORKS and SUPPORTED_METHODS if required (consult your processor if
 *      unsure)
 * <li> Update CURRENCY_CODE to the currency you use.
 * <li> Update SHIPPING_SUPPORTED_COUNTRIES to list the countries where you currently ship. If this
 *      is not applicable to your app, remove the relevant bits from PaymentsUtil.java.
 * <li> If you're integrating with your {@code PAYMENT_GATEWAY}, update
 *      PAYMENT_GATEWAY_TOKENIZATION_NAME and PAYMENT_GATEWAY_TOKENIZATION_PARAMETERS per the
 *      instructions they provided. You don't need to update DIRECT_TOKENIZATION_PUBLIC_KEY.
 * <li> If you're using {@code DIRECT} integration, please edit protocol version and public key as
 *      per the instructions.
 */
public class Constants {

  /**
   * Changing this to ENVIRONMENT_PRODUCTION will make the API return chargeable card information.
   * Please refer to the documentation to read about the required steps needed to enable
   * ENVIRONMENT_PRODUCTION.
   *
   * @value #PAYMENTS_ENVIRONMENT
   */
  public static final int PAYMENTS_ENVIRONMENT = WalletConstants.ENVIRONMENT_TEST;

  /**
   * The allowed networks to be requested from the API. If the user has cards from networks not
   * specified here in their account, these will not be offered for them to choose in the popup.
   *
   * @value #SUPPORTED_NETWORKS
   */
  public static final List<String> SUPPORTED_NETWORKS = Arrays.asList(
      "AMEX",
      "DISCOVER",
      "JCB",
      "MASTERCARD",
      "VISA");

  /**
   * The Google Pay API may return cards on file on Google.com (PAN_ONLY) and/or a device token on
   * an Android device authenticated with a 3-D Secure cryptogram (CRYPTOGRAM_3DS).
   *
   * @value #SUPPORTED_METHODS
   */
  public static final List<String> SUPPORTED_METHODS = Arrays.asList(
      "PAN_ONLY",
      "CRYPTOGRAM_3DS");

  /**
   * Required by the API, but not visible to the user.
   *
   * @value #COUNTRY_CODE Your local country
   */
  public static final String COUNTRY_CODE = "US";

  /**
   * Required by the API, but not visible to the user.
   *
   * @value #CURRENCY_CODE Your local currency
   */
  public static final String CURRENCY_CODE = "USD";

  /**
   * Supported countries for shipping (use ISO 3166-1 alpha-2 country codes). Relevant only when
   * requesting a shipping address.
   *
   * @value #SHIPPING_SUPPORTED_COUNTRIES
   */
  public static final List<String> SHIPPING_SUPPORTED_COUNTRIES = Arrays.asList("US", "GB");

  /**
   * The name of your payment processor/gateway. Please refer to their documentation for more
   * information.
   *
   * @value #PAYMENT_GATEWAY_TOKENIZATION_NAME
   */
  public static final String PAYMENT_GATEWAY_TOKENIZATION_NAME = "example";

  /**
   * Custom parameters required by the processor/gateway.
   * In many cases, your processor / gateway will only require a gatewayMerchantId.
   * Please refer to your processor's documentation for more information. The number of parameters
   * required and their names vary depending on the processor.
   *
   * @value #PAYMENT_GATEWAY_TOKENIZATION_PARAMETERS
   */
  public static final HashMap<String, String> PAYMENT_GATEWAY_TOKENIZATION_PARAMETERS =
      new HashMap<String, String>() {{
        put("gateway", PAYMENT_GATEWAY_TOKENIZATION_NAME);
        put("gatewayMerchantId", "exampleGatewayMerchantId");
        // Your processor may require additional parameters.
      }};

  /**
   * Only used for {@code DIRECT} tokenization. Can be removed when using {@code PAYMENT_GATEWAY}
   * tokenization.
   *
   * @value #DIRECT_TOKENIZATION_PUBLIC_KEY
   */
  public static final String DIRECT_TOKENIZATION_PUBLIC_KEY = "REPLACE_ME";

  /**
   * Parameters required for {@code DIRECT} tokenization.
   * Only used for {@code DIRECT} tokenization. Can be removed when using {@code PAYMENT_GATEWAY}
   * tokenization.
   *
   * @value #DIRECT_TOKENIZATION_PARAMETERS
   */
  public static final HashMap<String, String> DIRECT_TOKENIZATION_PARAMETERS =
      new HashMap<String, String>() {{
        put("protocolVersion", "ECv2");
        put("publicKey", DIRECT_TOKENIZATION_PUBLIC_KEY);
      }};
}