به آخرین نسخه به‌روزرسانی کنید

API گوگل پی در جولای ۲۰۱۸ ساختارهای شیء جدیدی را برای اشیاء PaymentDataRequest و IsReadyToPayRequest معرفی کرد. این راهنما نحوه به‌روزرسانی اشیاء قالب‌بندی‌شده برای نسخه ۱ API گوگل پی به اشیاء قالب‌بندی‌شده برای نسخه ۲ را توضیح می‌دهد.

روش‌های پرداخت

در نسخه ۲ از API گوگل پی، یک نسخه API با هر شیء درخواست مشخص می‌شود.

نسخه ۱ API گوگل پی از کارت‌ها به عنوان تنها روش پرداخت پشتیبانی می‌کرد. روش پرداخت CARD یکی از چندین گزینه روش پرداخت ممکن در نسخه ۲ API گوگل پی است. سایت‌هایی که قبلاً مقدار allowedPaymentMethods را برای CARD مشخص کرده بودند، اکنون باید مقدار allowedAuthMethods را برابر با PAN_ONLY تنظیم کنند. سایت‌هایی که قبلاً مقدار allowedPaymentMethods را برابر با TOKENIZED_CARD تعیین کرده بودند، اکنون باید مقدار allowedAuthMethods را برابر با CRYPTOGRAM_3DS تنظیم کنند.

شبکه‌های کارتی مجاز در کنار روش‌های احراز هویت پشتیبانی‌شده برای کارت‌های موجود در آن شبکه‌ها مشخص شده‌اند.

نسخه ۱ API

{
  allowedPaymentMethods: [
    'CARD',
    'TOKENIZED_CARD'
  ],
  cardRequirements: {
    allowedCardNetworks: [
      'AMEX',
      'DISCOVER',
      'JCB',
      'MASTERCARD',
      'VISA'
    ]
  }
}

نسخه ۲ API

{
  apiVersion: 2,
  apiVersionMinor: 0,
  allowedPaymentMethods: [{
    type: 'CARD',
    parameters: {
      allowedAuthMethods: [
        'PAN_ONLY',
        'CRYPTOGRAM_3DS'
      ],
      allowedCardNetworks: [
        'AMEX',
        'DISCOVER',
        'JCB',
        'MASTERCARD',
        'VISA'
      ]
    }
  }]
}

شبکه‌های کارتی مجاز و روش‌های احراز هویت آنها در IsReadyToPayRequest برای روش پرداخت CARD گنجانده شده‌اند.

توکن‌سازی داده‌های پرداخت کارت

API گوگل پی، داده‌های رمزگذاری‌شده کارت را که توسط درگاه مشخص‌شده شما ارجاع داده می‌شود یا در سرورهای شما رمزگشایی می‌شود، برمی‌گرداند. نسخه ۲ API گوگل پی، توکن‌سازی روش پرداخت را به داخل روش پرداخت CARD منتقل می‌کند.

نسخه ۱ API

{
  paymentMethodTokenizationParameters: {
    tokenizationType: 'PAYMENT_GATEWAY',
    parameters: {
      'gateway': 'example',
      'gatewayMerchantId': 'exampleMerchantId'
    }
  }
}

نسخه ۲ API

{
  allowedPaymentMethods: [{
    type: 'CARD',
    tokenizationSpecification: {
      type: 'PAYMENT_GATEWAY',
      parameters: {
        'gateway': 'example',
        'gatewayMerchantId': 'exampleMerchantId'
      }
    }
  }]
}

شناسه تجاری گوگل

شناسه فروشنده گوگل (Google Merchant ID) یک ویژگی سطح بالا در نسخه ۱ رابط برنامه‌نویسی کاربردی گوگل پی (Google Pay API) بود. اکنون، شناسه فروشنده گوگل (Google Merchant ID) درون یک شیء MerchantInfo با یک نام فروشنده اختیاری قرار می‌گیرد.

نسخه ۱ API

{
  merchantId: '12345678901234567890'
}

نسخه ۲ API

{
  merchantInfo: {
    merchantId: '12345678901234567890'
  }
}

آدرس صورتحساب

یک آدرس صورتحساب اختیاری و یک شماره تلفن صورتحساب با روش پرداخت CARD مرتبط هستند. اگر سایتی درخواست آدرس صورتحساب کند، هرگونه پیکربندی مربوط به پاسخ مورد انتظار در داخل یک شیء BillingAddressParameters قرار می‌گیرد.

نسخه ۱ API

{
  cardRequirements: {
    billingAddressRequired: true,
    billingAddressFormat: 'FULL'
  },
  phoneNumberRequired: true
}

نسخه ۲ API

{
  allowedPaymentMethods: [{
    type: 'CARD',
    parameters: {
      billingAddressRequired: true,
      billingAddressParameters: {
        format: 'FULL',
        phoneNumberRequired: true
      }
    }
  }]
}

آدرس حمل و نقل

یک الزام اختیاری برای آدرس ارسال در بالاترین سطح شیء PaymentDataRequest باقی می‌ماند. ویژگی shippingAddressRequirements shippingAddressParameters تغییر نام داده است.

پاسخ‌های قبلی API گوگل پی ممکن بود هنگام درخواست شماره تلفن، شماره تلفن را به عنوان بخشی از آدرس ارسال برگردانند. شماره تلفن ارسال دیگر توسط API گوگل پی در هیچ نسخه‌ای پشتیبانی نمی‌شود. هر کنترل‌کننده پاسخی که انتظار شماره تلفن ارسال را دارد، باید به‌روزرسانی شود.

نسخه ۱ API

{
  shippingAddressRequired: true,
  shippingAddressRequirements: {
    allowedCountryCodes: [
      'US',
      'CA'
    ]
  }
}

نسخه ۲ API

{
  shippingAddressRequired: true,
  shippingAddressParameters: {
    allowedCountryCodes: [
      'US',
      'CA'
    ]
  }
}

پاسخ PaymentData

پاسخ شیء PaymentData برای سایت‌هایی که مقدار ویژگی apiVersion را در PaymentDataRequest برابر با 2 تعیین کرده‌اند، به کارت‌های مرجع به عنوان یکی از چندین پاسخ ممکن برای داده‌های پرداخت تغییر کرده است. ویژگی‌های apiVersion و apiVersionMinor که در شیء PaymentDataRequest گنجانده شده‌اند، در پاسخ PaymentData ظاهر می‌شوند تا فرمت مورد انتظار را نشان دهند.

نسخه ۱ API

{
  // no version specified
}

نسخه ۲ API

{
  apiVersion: 2,
  apiVersionMinor: 0
}

اطلاعات مربوط به روش پرداخت انتخاب شده و توکن‌سازی آن درون ویژگی paymentMethodData قرار می‌گیرد. دو ویژگی از شیء cardInfo مربوط به روش پرداخت کارت حذف شده‌اند: cardClass و cardImageUri .

نسخه ۱ API

{
  cardInfo: {
    cardDescription: 'Visa •••• 1234',
    cardNetwork: 'VISA',
    cardDetails: 1234
  },
  paymentMethodToken: {
    tokenizationType: 'PAYMENT_GATEWAY',
    token: 'examplePaymentMethodToken'
  }
}

نسخه ۲ API

{
  paymentMethodData: {
    type: 'CARD',
    description: 'Visa •••• 1234',
    info: {
      cardNetwork: 'VISA',
      cardDetails: '1234'
    },
    tokenizationData: {
      type: 'PAYMENT_GATEWAY',
      token: 'examplePaymentMethodToken'
    }
  }
}

پاسخ پیام رمزگذاری شده

سایت‌هایی که نوع توکن‌سازی روش پرداخت DIRECT را مشخص می‌کنند و روش پرداخت API نسخه ۱ TOKENIZED_CARD را می‌پذیرند، باید نحوه مدیریت ویژگی encryptedMessage رمزگشایی‌شده را به‌روزرسانی کنند. سایت باید این کار را انجام دهد تا توکن‌های دستگاه اندروید که با رمزنگاری امن سه‌بعدی و نشانگر تجارت الکترونیک اختیاری (ECI) تأیید شده‌اند را به دروازه یا پردازنده شما ارسال کند. کارت‌ها یک paymentMethod از CARD هستند، به همراه اطلاعات اضافی در مورد روش تأیید اعتبار کارت انتخاب‌شده در paymentMethodDetails.authMethod .

نسخه ۱ API

{
  "paymentMethod": "TOKENIZED_CARD",
  "paymentMethodDetails": {
    "authMethod": "3DS",
    "dpan": "1111222233334444",
    "expirationMonth": 10,
    "expirationYear": 2020,
    "3dsCryptogram": "AAAAAA...",
    "3dsEciIndicator": "eci indicator"
  }
}

نسخه ۲ API

{
  "paymentMethod": "CARD",
  "paymentMethodDetails": {
    "authMethod": "CRYPTOGRAM_3DS",
    "pan": "1111222233334444",
    "expirationMonth": 10,
    "expirationYear": 2020,
    "cryptogram": "AAAAAA...",
    "eciIndicator": "eci indicator"
  }
}