Korumalı alan ödemeleri ayarlama

Uçtan uca projeleri sıralama, Hızlı Test veya Korumalı Alan ortamını kullanırken Korumalı Alan Ödeme Modu'nun yapılandırılmasına olanak tanır. Veri feed'inizi test ederken Korumalı Alan ve Üretim Ödeme Modları arasında geçiş yapabilirsiniz. Sipariş Verme projenizin ödemelerini kartlardan ödeme almadan test etmek için Ödeme Modunuz olarak Korumalı Alan'ı kullanın. Üretim ortamı, Korumalı Alan Ödeme Modu'nu desteklemiyor.

Yapılandırma

Korumalı alan ortamında Korumalı Alan Ödeme Modu'nu etkinleştirmek için aşağıdaki adımları uygulayın:

  1. Actions Center'da Yapılandırma > Özellikler'e gidin.
  2. Hesap özellikleri kartında Ödeme Modu radyo düğmesini bulun.
  3. Korumalı alan seçeneğini belirleyin ve Değişiklikleri kaydet'i tıklayın.

Korumalı Alan modu seçili halde hesap özellikleri kartı

Hızlı Test ortamında Korumalı Alan Ödeme Modu'nu etkinleştirmek için aşağıdaki adımları uygulayın:

  1. Actions Center'da Feed'ler > Hızlı Test'e gidin.
  2. GPay için korumalı alanı kullan radyo düğmesini seçin.

Korumalı Alan moduyla Hızlı Test seçildi

Korumalı Alan Ödeme Modu seçildiğinde:

  • Uçtan uca sipariş verme, Google Pay'i, gerçek kart bilgileri yerine test kartı verileri içeren araç jetonlarını döndürecek şekilde yapılandırır.
  • isInSandbox alanı, CheckoutRequestMessage ve SubmitOrderRequestMessage içinde true olarak ayarlanmıştır.

Ortam, Ödeme Modu ve Korumalı Alan'ın farklı kombinasyonları aşağıda belirtilmiştir:

Ortam Ödeme Modu isInSandbox
Kısa Test Korumalı alan true
Kısa Test Prodüksiyon false
Korumalı alan Korumalı alan true
Korumalı alan Prodüksiyon false
Prodüksiyon Prodüksiyon false

Ödeme İşlemi Yanıt Mesajı

Yemek Siparişi web hizmetiniz tarafından gönderilen CheckoutResponseMessage, PaymentOptions içeriyor. Ödeme işleminizi ayarlarken, örnek bir ödeme ağ geçidi kullanarak yer tutucu ödeme seçenekleri sağlarsınız.

  • Web hizmetiniz tarafından gönderilen CheckoutResponseMessage öğesini uygun tokenizasyon yapılandırmasıyla güncellediğinizden emin olun.

Ödeme seçeneği örnekleri

Aşağıda, korumalı alan anahtarları kullanan çeşitli ödeme ağ geçitleri için bir CheckoutResponseMessage kaynağından alınan örnek JSON PaymentOptions nesneleri verilmiştir:

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\"}} "
    }
}

Korumalı alan işlemlerini işaretleme

Korumalı Alan Ödeme Modu etkinleştirildiğinde isInSandbox alanı isteğe dahil edilir ve web hizmeti uç noktanıza (CheckoutRequestMessage ve SubmitOrderRequestMessage) gelen istekler için true olarak ayarlanır. isInSandbox alanı true olarak ayarlandığında aşağıdakileri yapın:

  • Ödeme ağ geçidinizin tokenizasyon yapılandırmasında üretim anahtarları yerine korumalı alan anahtarlarını kullanın. Çoğu ödeme işleyici hem korumalı alan hem de üretim için API anahtarları sağlar.
  • Korumalı alan işlemlerinden haberdar olmaları gerekmediğinden, web servis sağlayıcıyla (genellikle bir restoran) herhangi bir iletişimi tetiklemeyin.

Test kredi kartları, işlem korumalı alanı etkin olsa bile desteklenmez. İşlem yaparken gerçek bir kredi kartı kullanmanız gerekir. Ancak korumalı alan araç jetonları, ücretli olmayan test kartı ayrıntılarını içerir.

Ödemeleri işleme

Bir müşteri siparişini gönderdiğinde Uçtan Uca Sipariş verme işlemi, web hizmeti uç noktanıza SubmitOrderRequestMessage gönderir. Google Pay jetonu, SubmitOrderRequestMessage instrumentToken alanına base 64 ile kodlanmış dize olarak eklenir. Müşterinin ödemesini işlemek için ödeme ağ geçidinize bağlı olarak aşağıdakilerden birini yapın:

Ödeme ağ geçidi
Çizgili veya Braintree Base-64 olarak kodlanmış jeton dizesinin kodunu çözün ve kodu çözülmüş jeton yükünde yer alan uygun verileri, ödemenin işlenmesi için ödeme ağ geçidinize gönderin.
Diğer tüm ödeme ağ geçitleri (stripev2 dahil) Ödemenin işlenmesi için base-64 kodlu jeton dizesinin tamamını ödeme ağ geçidi API'nize gönderin. Google Pay ödeme yöntemi jetonu yapısı, ödeme ağ geçidinizin ödemeyi işlemek için şifresini çözebileceği şifrelenmiş alanlar içerir.

Kodu çözülmüş yük örneği

Aşağıdaki örneklerde, çeşitli ödeme ağ geçitleri için instrumentToken alanında döndürülen kodu çözülmüş yük gösterilmektedir:

JSON

Bu JSON örneği, Braintree kullanılırken kodu çözülmüş bir ödeme jetonunu temsil eder. nonce alanının değerini çıkartın ve ödemenin işlenmesi için değeri Braintree'ye gönderin.

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

Braintree kontrol panelinde Google Pay etkinleştirilmemişse instrumentToken alanı, aşağıdaki hatanın kodunu çözer:

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

JSON

Bu JSON örneği, Stripe kullanılırken kodu çözülmüş bir ödeme jetonunu temsil eder. id alanının değerini çıkarıp ödemenin işlenmesi için Stripe’a gönderin.

{
  "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

Bu JSON örneği, Stripev2 kullanılırken kodu çözülmüş bir ödeme jetonunu temsil eder.

  {
  "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

Bu JSON örneği, Square kullanılırken kodu çözülmüş bir ödeme jetonunu temsil eder.

  {
    "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\"}"
  }
    

Ödemeyi kullanarak ödeme işlemini gerçekleştirmek için isteğinizle birlikte base-64 şifrelenmiş jeton dizesini, başında gpay: bulunan source_id alanındaki Square'in ödeme API'sine döndürün

  {
    "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"
    }
  }

Aşağıda, base-64 ile kodlanmış instrumentToken kodunu Braintree'den çözen bir Node.js örneği gösterilmektedir:

Node.js

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