Korumalı alan ödemeleri ayarlama

Uçtan uca projelerin sıralanması, aşağıdaki durumlarda Korumalı Alan Ödeme Modu'nun yapılandırılmasına kullanarak Korumalı Alan ortamını kullanabilirsiniz. Verilerinizi test ederken Korumalı Alan ve Üretim Ödeme Modları arasında geçiş yapabilirsiniz. Bu amaçla Kartlarınızı şarj etmeden Uçtan Uca Sipariş projeniz için test ödemelerini Ödeme Modu olarak Korumalı Alan'ı seçebilirsiniz. Üretim ortamı, Korumalı Alan Ödeme Modu'nu destekler.

Yapılandırma

Korumalı Alan ortamında Korumalı Alan Ödeme Modu'nu etkinleştirmek için şu adımları uygulayın: için şu adımları izleyin:

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

Korumalı alan modu seçili olarak hesap özellikleri kartı

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

  1. İşlem Merkezi'nde Feed'ler'e gidin > Hızlı Test'e dokunun.
  2. GPay için korumalı alanı kullan radyo düğmesini seçin.

Korumalı Alan modu seçiliyken Hızlı Test

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

Farklı Ortam, Ödeme Modu ve isInSandbox kombinasyonları aşağıdaki gibidir:

Ortam Ödeme Modu isInSandbox
Kısa Test Korumalı Alan true
Kısa Test Üretim false
Korumalı Alan Korumalı Alan true
Korumalı Alan Üretim false
Üretim Üretim false

Ödeme İşlemine İlişkin Yanıt Mesajı

Yemek Siparişi web hizmetiniz tarafından gönderilen CheckoutResponseMessage şunları içeriyor: PaymentOptions. Google Takvim widget'ını ödeme ayarlarınızı belirleyin ödeme ağ geçidi örnek bir ödeme ağ geçidi kullanarak bir yer tutucu ödeme seçeneği sağlarsınız.

  • Web'iniz tarafından gönderilen CheckoutResponseMessage bilgisini güncellediğinizden emin olun kullanıma sunun.
ziyaret edin.

Ödeme seçeneği örnekleri

Aşağıdaki örnek JSON PaymentOptions nesneleri Korumalı alan anahtarlarını kullanan çeşitli ödeme ağ geçitleri için 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\"}} "
    }
}

Korumalı alan işlemlerini işaretleme

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

  • Jetonlara ayırma işleminde üretim anahtarları yerine korumalı alan anahtarları kullanın yapılandırma adımına geçin. Çoğu ödeme işleyici API sağlar anahtarları arasında yer alır.
  • Web servis sağlayıcısıyla herhangi bir iletişimi tetiklemeyin. Genellikle bir (korumalı alan işlemleri hakkında bilgilendirilmeleri gerekmediğinden)

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

Ödemeleri işleme koy

Bir müşteri siparişini verdiğinde Uçtan Uca Sipariş, SubmitOrderRequestMessage web hizmeti uç noktanıza ekleyin. Google Pay jeton anahtar kelimesi, SubmitOrderRequestMessage instrumentToken girin. Müşterinin ödemesini işleme koymak için aşağıdakilerden birini yapın: ödeme ağ geçidiniz:

Ödeme ağ geçidi
Stripe 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) Ödemeyi işleme almak için base-64 kodlamalı jeton dizesini eksiksiz olarak ödeme ağ geçidi API'nize gönderin. Google Pay ödeme yöntemi jeton 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 örnekler, instrumentToken içinde döndürülen kodu çözülmüş yükü gösterir alanını kullanın:

JSON

Bu JSON örneği, Braintree. nonce alanının değerini çıkarın ve değeri Braintree'ye göndererek ödemeyi işleme alabilir.

{
  "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ı şu 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 gösterir. id alanının değerini çıkartın ve Stripe’a gönderin. işleme koyabiliriz.

{
  "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ğinde, Stripev2 kullanılırken kodu çözülmüş bir ödeme jetonu gösterilmektedir.

  {
  "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ğinde, Square kullanırken kodu çözülmüş bir ödeme jetonu gösterilmektedir.

  {
    "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 jetonu kullanarak işleme almak için, source_id alanında gpay ön ekini taşıyan Square'in ödeme API'sine yaptığınız isteğinizle birlikte base-64 kodlu jeton dizesini 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 kodlu tabanın kodunu çözen bir Node.js örneği verilmiştir. Braintree'den instrumentToken:

Node.js

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