پرداخت های sandbox را تنظیم کنید

سفارش پروژه های End-to-End امکان پیکربندی حالت پرداخت Sandbox را هنگام استفاده از تست سریع یا محیط Sandbox می دهد. در حین آزمایش فید داده، می‌توانید بین حالت‌های پرداخت Sandbox و Production جابجا شوید. برای آزمایش پرداخت‌ها برای پروژه سفارش پایان به پایان خود بدون شارژ کردن کارت‌ها، از Sandbox به عنوان حالت پرداخت خود استفاده کنید. محیط تولید از حالت پرداخت Sandbox پشتیبانی نمی کند.

پیکربندی

برای فعال کردن حالت پرداخت Sandbox در محیط Sandbox ، این مراحل را دنبال کنید:

  1. در مرکز اقدامات ، به پیکربندی > ویژگی‌ها بروید.
  2. در کارت ویژگی های حساب ، دکمه رادیویی حالت پرداخت را پیدا کنید.
  3. گزینه Sandbox را انتخاب کنید و روی ذخیره تغییرات کلیک کنید.

کارت ویژگی های حساب با حالت Sandbox انتخاب شده است

برای فعال کردن حالت پرداخت Sandbox در محیط تست سریع ، این مراحل را دنبال کنید:

  1. در مرکز اقدامات ، به Feeds > Quick Test بروید.
  2. دکمه رادیویی Use sandbox for GPay را انتخاب کنید.

تست سریع با حالت Sandbox انتخاب شده است

هنگامی که حالت پرداخت Sandbox انتخاب شده است:

  • سفارش End-to-End Google Pay را پیکربندی می‌کند تا نشانه‌های ابزاری را که حاوی داده‌های کارت آزمایشی به جای جزئیات واقعی کارت هستند، برگرداند.
  • فیلد isInSandbox در CheckoutRequestMessage و SubmitOrderRequestMessage روی true تنظیم شده است.

ترکیبات مختلف Environment، Payment Mode و isInSandbox به شرح زیر است:

محیط زیست حالت پرداخت isInSandbox است
تست سریع جعبه شنی درست است
تست سریع تولید نادرست
جعبه شنی جعبه شنی درست است
جعبه شنی تولید نادرست
تولید تولید نادرست

پیام پاسخ پرداخت

CheckoutResponseMessage ارسال شده توسط سرویس وب سفارش غذای شما حاوی PaymentOptions است. وقتی تسویه حساب خود را تنظیم می‌کنید ، با استفاده از یک درگاه پرداخت نمونه، گزینه‌های پرداخت جای‌بانی را ارائه می‌دهید.

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

نمونه های گزینه پرداخت

موارد زیر نمونه‌ای از اشیاء JSON PaymentOptions از CheckoutResponseMessage برای درگاه‌های پرداخت مختلف با استفاده از کلیدهای جعبه ایمنی هستند:

JSON

"paymentOptions": {
    "googleProvidedOptions": {
        "facilitationSpecification": "{\"apiVersion\":2,\"apiVersionMinor\":0,\"merchantInfo\":{\"merchantName\":\"merchantName\"},\"allowedPaymentMethods\":[{\"type\":\"CARD\",\"parameters\":{\"allowedAuthMethods\":[\"PAN_ONLY\"],\"allowedCardNetworks\":[\"VISA\",\"MASTERCARD\"],\"billingAddressRequired\":true,\"cvcRequired\":false},\"tokenizationSpecification\":{\"type\":\"PAYMENT_GATEWAY\",\"parameters\":{\"gatewayMerchantId\":\"YOUR_MERCHANT_ID\",\"gateway\":\"cybersource\"}}}],\"transactionInfo\":{\"currencyCode\":\"USD\",\"totalPriceStatus\":\"ESTIMATED\",\"totalPrice\":\"31.85\"}} "
    }
}

JSON

"paymentOptions": {
    "googleProvidedOptions": {
        "facilitationSpecification": "{\"apiVersion\":2,\"apiVersionMinor\":0,\"merchantInfo\":{\"merchantName\":\"merchantName\"},\"allowedPaymentMethods\":[{\"type\":\"CARD\",\"parameters\":{\"allowedAuthMethods\":[\"PAN_ONLY\"],\"allowedCardNetworks\":[\"VISA\",\"MASTERCARD\"],\"billingAddressRequired\":true,\"cvcRequired\":false},\"tokenizationSpecification\":{\"type\":\"PAYMENT_GATEWAY\",\"parameters\":{\"gateway\":\"braintree\",\"braintree:apiVersion\":\"v1\",\"braintree:sdkVersion\":\"1.4.0\",\"braintree:merchantId\":\"YOUR_MERCHANT_ID\",\"braintree:clientKey\":\"YOUR_BRAINTREE_SANDVOX_OR_PRODUCTION_KEY\"}}}],\"transactionInfo\":{\"currencyCode\":\"USD\",\"totalPriceStatus\":\"ESTIMATED\",\"totalPrice\":\"31.85\"}} "
    }
}

JSON

"paymentOptions": {
    "googleProvidedOptions": {
        "facilitationSpecification": "{\"apiVersion\":2,\"apiVersionMinor\":0,\"merchantInfo\":{\"merchantName\":\"merchantName\"},\"allowedPaymentMethods\":[{\"type\":\"CARD\",\"parameters\":{\"allowedAuthMethods\":[\"PAN_ONLY\"],\"allowedCardNetworks\":[\"VISA\",\"MASTERCARD\"],\"billingAddressRequired\":true,\"cvcRequired\":false},\"tokenizationSpecification\":{\"type\":\"PAYMENT_GATEWAY\",\"parameters\":{\"gateway\":\"stripe\",\"stripe:version\":\"2018-10-31\",\"stripe:publishableKey\":\"YOUR_PRODUCTION_OR_SANDBOX_STRIPE_KEY\"}}}],\"transactionInfo\":{\"currencyCode\":\"USD\",\"totalPriceStatus\":\"ESTIMATED\",\"totalPrice\":\"31.85\"}} "
    }
}

JSON

"paymentOptions": {
    "googleProvidedOptions": {
        "facilitationSpecification": "{\"apiVersion\":2,\"apiVersionMinor\":0,\"merchantInfo\":{\"merchantName\":\"merchantName\"},\"allowedPaymentMethods\":[{\"type\":\"CARD\",\"parameters\":{\"allowedAuthMethods\":[\"PAN_ONLY\"],\"allowedCardNetworks\":[\"VISA\",\"MASTERCARD\"],\"billingAddressRequired\":true,\"cvcRequired\":false},\"tokenizationSpecification\":{\"type\":\"PAYMENT_GATEWAY\",\"parameters\":{\"gateway\":\"stripev2\",\"gatewayMerchantId\":\"YOUR_PRODUCTION_OR_SANDBOX_STRIPE_KEY\"}}}],\"transactionInfo\":{\"currencyCode\":\"USD\",\"totalPriceStatus\":\"ESTIMATED\",\"totalPrice\":\"31.85\"}} "
    }
}

علامت گذاری معاملات جعبه ایمنی

هنگامی که حالت پرداخت Sandbox فعال است، فیلد isInSandbox در درخواست گنجانده شده و برای درخواست‌های دریافتی به نقطه پایانی سرویس وب شما ( CheckoutRequestMessage و SubmitOrderRequestMessage ) روی true تنظیم می‌شود. هنگامی که فیلد isInSandbox روی true تنظیم شده است، موارد زیر را انجام دهید:

  • از کلیدهای جعبه ایمنی به جای کلیدهای تولید در پیکربندی توکن سازی برای درگاه پرداخت خود استفاده کنید. اکثر پردازنده‌های پرداخت، کلیدهای API را هم برای جعبه ایمنی و هم برای تولید ارائه می‌کنند.
  • هیچ ارتباطی با ارائه‌دهنده خدمات وب، معمولاً یک رستوران، ایجاد نکنید، زیرا آنها مجبور نیستند از تراکنش‌های جعبه ایمنی مطلع شوند.

کارت‌های اعتباری آزمایشی پشتیبانی نمی‌شوند، حتی وقتی جعبه ایمنی تراکنش فعال باشد. هنگام انجام معامله باید از کارت اعتباری واقعی استفاده کنید. با این حال، نشانه‌های ابزار سندباکس حاوی جزئیات کارت تست هستند که قابل شارژ نیستند.

فرآیند پرداخت ها

هنگامی که یک مشتری سفارش خود را ارسال می کند، Ordering End-to-End پیام SubmitOrderRequest را به نقطه پایانی وب سرویس شما ارسال می کند. رمز Google Pay به عنوان یک رشته کدگذاری شده پایه 64 در قسمت SubmitOrderRequestMessage instrumentToken گنجانده شده است. برای پردازش پرداخت مشتری، بسته به درگاه پرداخت خود یکی از موارد زیر را انجام دهید:

درگاه پرداخت
راه راه یا Braintree رشته رمز رمزگذاری شده پایه 64 را رمزگشایی کنید و داده های مناسب موجود در محموله رمزگشایی شده را برای پردازش پرداخت به دروازه پرداخت خود ارسال کنید.
همه درگاه‌های پرداخت دیگر (از جمله stripev2) برای پردازش پرداخت، رشته توکن رمزگذاری شده کامل پایه ۶۴ را به api درگاه پرداخت خود ارسال کنید. ساختار رمز روش پرداخت Google Pay حاوی فیلدهای رمزگذاری شده است که درگاه پرداخت شما می تواند برای پردازش پرداخت رمزگشایی کند.

نمونه محموله رمزگشایی شده

مثال‌های زیر بارهای رمزگشایی شده را نشان می‌دهند که در قسمت instrumentToken برای دروازه‌های پرداخت مختلف بازگردانده شده‌اند:

JSON

این مثال JSON نشان دهنده یک رمز پرداخت رمزگشایی شده هنگام استفاده از Braintree است. مقدار فیلد nonce را استخراج کنید و مقدار را برای پردازش پرداخت به Braintree ارسال کنید.

{
  "androidPayCards": [{
    "type": "AndroidPayCard",
    "nonce": "aeeb8297-4242...",
    "description": "AndroidPay",
    "consumed": false,
    "details": {
      "cardType": "Visa",
      "lastTwo": "29"
    }
  }]
}

اگر Google Pay در کنترل پنل Braintree فعال نباشد، فیلد instrumentToken به خطای زیر رمزگشایی می‌شود:

{
  "error": {
    "message": "Record not found"
  },
  "fieldErrors": []
}

JSON

این مثال JSON نشان دهنده یک رمز پرداخت رمزگشایی شده هنگام استفاده از Stripe است. مقدار فیلد id را استخراج کنید و برای پردازش پرداخت به Stripe ارسال کنید.

{
  "id": "tok_abcdefg1234...",
  "object": "token",
  "card": {
    "id": "card_abcde...",
    "object": "card",
    "address_city": null,
    "address_country": null,
    "address_line1": null,
    "address_line1_check": null,
    "address_line2": null,
    "address_state": null,
    "address_zip": null,
    "address_zip_check": null,
    "brand": "Visa",
    "country": "US",
    "cvc_check": null,
    "dynamic_last4": "1234",
    "exp_month": 1,
    "exp_year": 2019,
    "funding": "credit",
    "last4": "1234",
    "metadata": {},
    "name": null,
    "tokenization_method": "android_pay"
  },
  "client_ip": "74.125.177.36",
  "created": 1500483670,
  "livemode": false,
  "type": "card",
  "used": false
}

JSON

این مثال JSON نشان دهنده یک رمز پرداخت رمزگشایی شده هنگام استفاده از stripev2 است.

  {
  "protocolVersion":"ECv2",
  "signature":"MEQCIH6Q4OwQ0jAceFEkGF0JID6sJNXxOEi4r+mA7biRxqBQAiAondqoUpU/bdsrAOpZIsrHQS9nwiiNwOrr24RyPeHA0Q\u003d\u003d",
  "intermediateSigningKey":{
    "signedKey": "{\"keyExpiration\":\"1542323393147\",\"keyValue\":\"MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE/1+3HBVSbdv+j7NaArdgMyoSAM43yRydzqdg1TxodSzA96Dj4Mc1EiKroxxunavVIvdxGnJeFViTzFvzFRxyCw\\u003d\\u003d\"}",
    "signatures": ["MEYCIQCO2EIi48s8VTH+ilMEpoXLFfkxAwHjfPSCVED/QDSHmQIhALLJmrUlNAY8hDQRV/y1iKZGsWpeNmIP+z+tCQHQxP0v"]
  },
  "signedMessage":"{\"tag\":\"jpGz1F1Bcoi/fCNxI9n7Qrsw7i7KHrGtTf3NrRclt+U\\u003d\",\"ephemeralPublicKey\":\"BJatyFvFPPD21l8/uLP46Ta1hsKHndf8Z+tAgk+DEPQgYTkhHy19cF3h/bXs0tWTmZtnNm+vlVrKbRU9K8+7cZs\\u003d\",\"encryptedMessage\":\"mKOoXwi8OavZ\"}"
}
  

JSON

این مثال JSON نشان دهنده یک رمز پرداخت رمزگشایی شده هنگام استفاده از Square است.

  {
    "signature": "MEYCIQCMAsWCrY2GfHM/gMAKiK3QCKJJOIkjZeTQGzcdWgvrhwIhAJ3mXwe+wmU9z+Apv1rTDsCVQBzayvWzT4ywxytrSPla",
    "protocolVersion": "ECv1",
    "signedMessage": "{\"encryptedMessage\":\"WkYz21EYxojwTqWh6A3oYXtmctu1PlqF+tNYPA4cq017nqj16Ge7kaVR7MI1XG1OrCmcMwP20u5Zb5E28XYan8UI8M4L120orvE9XU1ivZuO4Myq2O3ue8v0lY1MDx8Mnk+5mkAv1kLmzJc91gEQ2leIwrPuMDYqsQUHzTR3Jikh5/v+iWRkyQPKKxgj5c6Erdu/pkg1xV6fQJcHNdq9Jw11zl95x6eQurxw2Uy8v811azGr+noKJbw0uye72MkhmzMS5QKOzwGT9nBfO+zPLYSEewsdOcPbNZF94zk/KU9nxom/gQ+eYEMIZvOj9lO4gQqDqR6DyWyStk7MjeXQTvXWZBI1JpqvOrlTHL0Ct18RpbfOio7hAtafzb0NnqEKlsun+SSpJmvI7U6n6Cnu1JUMUGfT/Jsi6RJ3N6pRw2BubeR1925Xl3jXQnlz5io6X1YRlAcnshZyf6CjBpKES32aTf1m1IHRhZ2Jj6i/g7Y\\u003d\",\"ephemeralPublicKey\":\"BDQA0Cf//BHPcnB0R/GRrWa2g7T1QF97eOhAYy7l45M+kJnsoeL9OaUQV/KIMLvcgbmKkZIm2FQeL7ftd6S4q4c\\u003d\",\"tag\":\"DHtVyXNo+PDr7Thi/EjBBbsr2k7y1SwGIn0D9mmPTJc\\u003d\"}"
  }
    

برای پردازش پرداخت با استفاده از توکن، رشته توکن کدگذاری شده base-64 را همراه با درخواست خود به api پرداخت Square در قسمت source_id با پیشوند gpay برگردانید:

  {
    "idempotency_key": "ID",
    "source_id": "gpay:GOOGLE_PAY_BASE64_ENCODED_TOKEN",
    "amount_money": {
        "amount": 50,
        "currency": "USD"
    },
    "location_id": "LOCATION_ID",
    "billing_address": {
        "postal_code": "11111"
    }
  }

در زیر یک مثال Node.js است که instrumentToken کدگذاری شده پایه ۶۴ را از Braintree رمزگشایی می کند:

Node.js

function decodeToken(instrumentToken) {
  let decodedString = new Buffer(instrumentToken, 'base64').toString('ascii')
  if (decodedString.androidPayCards) {
    return decodedString.androidPayCards[0].nonce;
  }
}