Melindungi transaksi pembayaran dengan Pencegahan Penipuan

Halaman ini menjelaskan cara melindungi transaksi pembayaran secara efektif dari serangan, seperti carding, penipuan instrumen curian, dan penipuan pembayaran pengambilalihan akun dengan menggunakan Pencegahan Penipuan reCAPTCHA Enterprise.

Pencegahan Penipuan reCAPTCHA Enterprise membantu Anda melindungi transaksi pembayaran dengan mengidentifikasi serangan manual yang ditargetkan dan upaya penipuan berskala besar. Solusi ini otomatis melatih model perilaku dan transaksi untuk mengidentifikasi peristiwa yang kemungkinan besar menipu dan dapat menyebabkan sengketa atau penagihan balik jika diterima.

Sebagai bagian dari model ini, reCAPTCHA Enterprise Fraud Prevention memeriksa sinyal transaksi untuk mengaktifkan deteksi penipuan. Misalnya, serangkaian upaya pembelian dengan harga rendah mungkin mengindikasikan serangan carding. Sebagai respons, Anda akan menerima skor risiko untuk berbagai jenis penipuan, yang dapat Anda gunakan untuk mengirim transaksi ke peninjauan manual, atau langsung memblokir transaksi yang cukup mencurigakan.

Untuk menyiapkan Pencegahan Penipuan reCAPTCHA Enterprise, selesaikan langkah-langkah berikut:

  1. Instal reCAPTCHA Enterprise di frontend pembayaran Anda.

  2. Buat penilaian dengan data transaksi.

  3. Menganotasi penilaian dengan peristiwa transaksi.

  4. Menafsirkan respons untuk mengambil tindakan terhadap kemungkinan penipuan.

Sebelum memulai

  1. Tinjau informasi harga untuk reCAPTCHA Enterprise Fraud Prevention.

  2. Siapkan lingkungan Anda untuk reCAPTCHA Enterprise.

  3. Buat kunci berbasis skor.

  4. Pastikan integrasi Anda mendukung token yang lebih besar dari 8 KB. reCAPTCHA Enterprise Fraud Prevention mungkin menggunakan token yang lebih besar, jadi pastikan token tersebut dikirim dalam permintaan POST, bukan GET, dan dalam isinya, bukan di header.

Instal reCAPTCHA Enterprise di frontend pembayaran Anda

Untuk mulai mendeteksi serangan, instal kunci berbasis skor di setiap halaman dalam alur penggunaan pembayaran Anda. Hal ini mencakup antarmuka tempat pengguna meninjau keranjang, memilih metode pembayaran, dan menyelesaikan pembelian. Setelah pengguna menentukan pilihan di setiap langkah, panggil grecaptcha.enterprise.execute() untuk membuat token. Untuk mempelajari cara menginstal kunci berbasis skor dan memanggil execute(), lihat Menginstal kunci berbasis skor.

Contoh berikut menunjukkan cara mengintegrasikan kunci berbasis skor pada peristiwa transaksi kartu kredit.

function submitForm() {
  grecaptcha.enterprise.ready(function() {
    grecaptcha.enterprise.execute(
      'reCAPTCHA_site_key', {action: 'purchase'}).then(function(token) {
       document.getElementById("token").value = token;
       document.getElementByID("paymentForm").submit();
    });
  });
}
<form id="paymentForm" action="?" method="POST">
  Total: $1.99
  Credit Card Number: <input name="cc-number" id="cc-number" autocomplete="cc-number"><br/>
  <input type="hidden" id="token" name="recaptcha_token"/>
  <button onclick="submitForm()">Purchase</button>
</form>
<script src="https://www.google.com/recaptcha/enterprise.js" async defer></script>

Anda dapat bereksperimen dengan kode ini di JSFiddle dengan mengklik ikon <> di sudut kanan atas jendela kode.

<html>
  <head>
    <title>Protected Payment</title>
    <script src="https://www.google.com/recaptcha/enterprise.js" async defer></script>
    <script>
    function submitForm() {
      grecaptcha.enterprise.ready(function() {
        grecaptcha.enterprise.execute(
          'reCAPTCHA_site_key', {action: 'purchase'}).then(function(token) {
           document.getElementById("token").value = token;
           document.getElementByID("paymentForm").submit();
        });
      });
    }
    </script>
  </head>
  <body>
    <form id="paymentForm" action="?" method="POST">
      Total: $1.99
      Credit Card Number: <input name="cc-number" id="cc-number" autocomplete="cc-number"><br/>
      <input type="hidden" id="token" name="recaptcha_token"/>
      <button onclick="submitForm()">Purchase</button>
    </form>
  </body>
</html>

Membuat penilaian dengan data transaksi

Untuk mengaktifkan keputusan penipuan pembayaran, buat penilaian dengan data transaksi menggunakan kolom tambahan dalam metode projects.assessments.create. Agar dapat menggunakan fitur ini, Google harus mengaktifkannya untuk organisasi Anda. Untuk meminta akses ke fitur ini, hubungi kami.

Integrasi yang paling sederhana mencakup ID transaksi, metode pembayaran, mata uang, dan nilai transaksi.

{
  "event": {
    "token": "YOUR_TOKEN",
    "site_key": "KEY_ID",
    "expected_action": "YOUR_CHECKOUT_ACTION_NAME",
    "transaction_data": {
      "transaction_id": "txid-1234567890",
      "payment_method": "credit-card",
      "card_bin": "411111",
      "card_last_four": "1234",
      "currency_code": "USD",
      "value": 39.98,
    }
  }
}

Kolom berikut bersifat opsional, tetapi sebaiknya berikan kolom ini untuk meningkatkan kualitas deteksi penipuan.

{
  "event": {
    "token": "YOUR_TOKEN",
    "site_key": "KEY_ID",
    "expected_action": "YOUR_CHECKOUT_ACTION_NAME",
    "transaction_data": {
      "transaction_id": "txid-1234567890",
      "payment_method": "credit-card",
      "card_bin": "411111",
      "card_last_four": "1234",
      "currency_code": "USD",
      "value": 39.98,
      "shipping_value": 7.99,
      "shipping_address": {
        "recipient": "name1 name2",
        "address": "123 Street Name",
        "address": "Apt 1",
        "locality": "Sunnyvale",
        "administrative_area": "CA",
        "region_code": "USA",
        "postal_code": "123456"
      },
      "billing_address": {
        "recipient": "name1 name2",
        "address": "123 Street Name",
        "address": "Apt 1",
        "locality": "Sunnyvale",
        "administrative_area": "CA",
        "region_code": "USA",
        "postal_code": "123456"
      },
      "user": {
        "account_id": "abcde12345",
        "creation_ms": 1650000000000,
        "email": "user@example.com",
        "email_verified": true,
        "phone_number": "+16502530000",
        "phone_verified" false
      },
      "merchant": {
        "account_id": "abcde12345",
        "creation_ms": 1650000000000,
        "email": "user@example.com",
        "email_verified": true,
        "phone_number": "+16502530000",
        "phone_verified": false
      },
      "items": {
        "name": "first item",
        "value": 19.99,
        "quantity": 1,
        "merchant_account_id": "abcde12345",
      },
      "items": {
        "name": "second item",
        "value": 19.99,
        "quantity": 1,
        "merchant_account_id": "abcde12345",
      },
      "gateway_info": {
        "name": "google",
        "gateway_response_code": "SUCCESS",
        "avs_response_code": "Y",
        "cvv_response_code": "Y",
      }
    }
  }
}

Untuk mempelajari cara membuat penilaian, lihat Membuat penilaian untuk situs Anda.

Menganotasi penilaian dengan peristiwa transaksi

Untuk mendapatkan performa terbaik, Pencegahan Penipuan reCAPTCHA Enterprise memerlukan visibilitas ke dalam peristiwa siklus proses pembayaran untuk transaksi. Oleh karena itu, Anda harus mengirim anotasi untuk penilaian yang dibuat dengan data transaksi. Misalnya, Anda harus memberikan informasi transaksi ke reCAPTCHA Enterprise Fraud Prevention sebagai peristiwa transaksi dalam skenario berikut:

  • Penyedia jasa pembayaran menerima atau menolak transaksi

  • Penjual memberikan pengembalian dana

  • Penerbit pembayaran mengajukan pengembalian dana

Untuk mempelajari lebih lanjut cara mengirim anotasi, lihat Menganotasi penilaian.

Sebaiknya Anda membuat permintaan ini secara otomatis sebagai bagian dari logika yang sesuai di sistem Anda saat data tersedia, seperti saat status transaksi berubah.

Setelah Anda membuat penilaian dengan data transaksi yang disertakan, reCAPTCHA Enterprise Fraud Prevention akan menampilkan hasil dan assessment_id. Anotasikan penilaian dengan peristiwa transaksi pada tahap penting berikut dalam siklus proses pembayaran saat peristiwa tersebut terjadi:

Jenis peristiwa Deskripsi Contoh alasan Contoh nilai
MERCHANT_APPROVE | MERCHANT_DENY Saat Anda memutuskan apakah transaksi akan diizinkan untuk dilanjutkan. IN_HOUSE T/A
AUTHORIZATION | AUTHORIZATION_DECLINE Saat Anda mengirimkan transaksi untuk diproses, dan penerbit kartu memutuskan apakah akan mengizinkan transaksi dilanjutkan atau tidak. 82 (kode alasan yang berarti bahwa CVV salah) T/A
CHARGEBACK Saat transaksi ditagih balik. Card Reported Stolen 20 (mewakili penagihan balik sebagian sebesar 20 unit mata uang)

Bersama dengan jenis peristiwa CHARGEBACK, sertakan kode alasan penagihan balik yang diberikan oleh penerbit kartu menggunakan kolom reason. Selain itu, sertakan jumlah uang yang ditagih kembali di kolom value jika transaksi ditagih balik sebagian.

Dalam kolom reason peristiwa transaksi, sertakan klarifikasi persyaratan untuk memberikan konteks lebih lanjut tentang alasan peristiwa tersebut, atau berikan kode alasan yang diperoleh langsung dari jaringan pembayaran atau penerbit kartu. Istilah dan kode ini berbeda-beda bergantung pada jenis peristiwanya.

Tabel berikut menentukan daftar lengkap jenis peristiwa transaksi:

Alasan anotasi Deskripsi
MERCHANT_APPROVE Menunjukkan bahwa transaksi disetujui oleh penjual. Alasan yang menyertainya dapat mencakup istilah seperti IN_HOUSE, ACCERTIFY, CYBERSOURCE, atau MANUAL_REVIEW.
MERCHANT_DENY Menunjukkan bahwa transaksi ditolak dan diselesaikan karena risiko yang terdeteksi oleh penjual. Alasan yang menyertainya dapat mencakup istilah seperti IN_HOUSE, ACCERTIFY, CYBERSOURCE, atau MANUAL_REVIEW.
MANUAL_REVIEW Menunjukkan bahwa transaksi sedang dievaluasi oleh manusia, karena adanya kecurigaan atau risiko.
AUTHORIZATION Menunjukkan bahwa upaya otorisasi dengan penerbit kartu berhasil.
AUTHORIZATION_DECLINE Menunjukkan bahwa upaya otorisasi dengan penerbit kartu gagal. Alasan yang menyertainya dapat mencakup 54 Visa yang menunjukkan bahwa kartu sudah habis masa berlakunya atau 82 yang menunjukkan bahwa CVV salah.
PAYMENT_CAPTURE Menunjukkan bahwa transaksi selesai karena dana telah dilunasi.
PAYMENT_CAPTURE_DECLINE Menunjukkan bahwa transaksi tidak dapat diselesaikan karena dana belum dilunasi.
CANCEL Menunjukkan bahwa transaksi dibatalkan. Tentukan alasan pembatalan. Misalnya, INSUFFICIENT_INVENTORY.
CHARGEBACK_INQUIRY Menunjukkan bahwa penjual telah menerima permintaan penagihan balik karena penipuan untuk transaksi tersebut, yang meminta informasi tambahan sebelum penagihan balik karena penipuan dikeluarkan secara resmi, dan notifikasi penagihan balik resmi dikirimkan.
CHARGEBACK_ALERT Menunjukkan bahwa penjual telah menerima pemberitahuan penagihan balik akibat penipuan untuk transaksi. Proses penyelesaian sengketa tanpa melibatkan jaringan pembayaran dimulai.
FRAUD_NOTIFICATION Menunjukkan bahwa notifikasi penipuan dikeluarkan untuk transaksi tersebut, yang dikirim oleh bank penerbit instrumen pembayaran karena transaksi tersebut tampaknya menipu. Sebaiknya sertakan data TC40 atau SAFE di kolom reason untuk jenis peristiwa ini. Untuk penagihan balik sebagian, sebaiknya sertakan jumlah dalam kolom value.
CHARGEBACK Menunjukkan bahwa penjual diberi tahu oleh jaringan pembayaran bahwa transaksi telah memasuki proses penagihan balik karena penipuan. Contoh kode alasan mencakup 6005 dan 6041 Discover. Untuk penagihan balik sebagian, sebaiknya sertakan jumlah dalam kolom value.
CHARGEBACK_REPRESENTMENT Menunjukkan bahwa transaksi telah memasuki proses penagihan balik karena penipuan, dan bahwa penjual telah memilih untuk memasukkan perwakilan. Contoh alasan mencakup 6005 dan 6041 Discover. Untuk penagihan balik sebagian, sebaiknya sertakan jumlah dalam kolom value.
CHARGEBACK_REVERSE Menunjukkan bahwa transaksi memiliki penagihan balik penipuan yang tidak sah dan dibatalkan sebagai akibatnya. Untuk penagihan balik sebagian, sebaiknya sertakan jumlah dalam kolom value.
REFUND_REQUEST Menunjukkan bahwa penjual telah menerima pengembalian dana untuk transaksi yang telah selesai. Untuk pengembalian dana sebagian, sebaiknya sertakan jumlah di kolom value. Contoh alasan: FRAUD.
REFUND_DECLINE Menunjukkan bahwa penjual telah menerima permintaan pengembalian dana untuk transaksi ini, tetapi penjual tersebut telah menolaknya. Untuk pengembalian dana sebagian, sebaiknya Anda menyertakan jumlah dalam kolom value. Contoh alasan: FRAUD.
REFUND Menunjukkan bahwa transaksi yang telah selesai dikembalikan dananya oleh penjual. Untuk pengembalian dana sebagian, sebaiknya sertakan jumlah dalam kolom value. Contoh alasan: PROACTIVE_FRAUD.
REFUND_REVERSE Menunjukkan bahwa transaksi yang telah selesai dikembalikan dananya oleh penjual, dan pengembalian dana ini telah dibatalkan. Untuk pengembalian dana sebagian, sebaiknya sertakan jumlah dalam kolom value.

Contoh berikut menunjukkan contoh payload anotasi yang berisi peristiwa transaksi. Untuk mengetahui detail selengkapnya, lihat Menganotasi penilaian.

POST https://recaptchaenterprise.googleapis.com/v1/ASSESSMENT_ID:annotate
{
  "transaction_event": {
    "event_type": "CHARGEBACK",
    "reason": "Card Reported Stolen",
    "value": 20
  }
}

Menafsirkan penilaian

Setelah mulai mengirim data transaksi, Anda akan melihat komponen fraudPreventionAssessment dalam respons riskAnalysis.

Komponen fraudPreventionAssessment mencakup skor risiko transaksi, dan beberapa skor penipuan yang mengidentifikasi berbagai jenis serangan. Skor transactionRisk Pencegahan Penipuan reCAPTCHA Enterprise berkisar dari 0,0 hingga 1,0, yang meringkas risiko yang terkait dengan transaksi ini dari komponen di bawah. Skor risiko 0,0 menunjukkan bahwa risikonya rendah dan transaksi kemungkinan sah, dan 1,0 menunjukkan bahwa risikonya tinggi dan interaksi kemungkinan bersifat menipu.

Dengan menginstal reCAPTCHA Enterprise Fraud Prevention dan menambahkan komponen TransactionData, Anda mendapatkan akses ke nilai cardTestingVerdict, yang mendeteksi adanya ancaman menggunakan situs Anda untuk menguji daftar instrumen curian atau informasi brute force. Ketika mereka berhasil, ini mengakibatkan kerugian bagi bisnis Anda.

Anda juga mendapatkan akses ke nilai behavioralTrustVerdict, yang menunjukkan kepercayaan sesi berdasarkan sinyal perilaku di situs Anda dan di seluruh internet. Skor ini sangat membantu jika Anda menggunakan mesin penipuan yang sudah ada dan ingin mengurangi positif palsu (PP). Karena skor ini mencakup informasi unik dan ortogonal ke deteksi konvensional berdasarkan data transaksi, skor ini efektif untuk menambah keyakinan pada transaksi tertentu yang berisiko atau netral.

Setelah mengirim peristiwa siklus proses termasuk informasi penagihan balik, Anda akan mendapatkan akses ke nilai stolenInstrumentVerdict. Cara ini mendeteksi serangan bahkan dalam skala yang sangat rendah yang kemungkinan merupakan penipuan berdasarkan sinyal yang dianalisis reCAPTCHA Enterprise pada transaksi dan perilaku pengguna di seluruh jaringan jutaan situs.

Akses ke skor tambahan (risiko instrumen curian, risiko pengujian kartu) diaktifkan setelah peninjauan keamanan. Hubungi tim penjualan kami untuk memulai peninjauan keamanan.

Blok berikut menunjukkan contoh respons dengan nilai transactionRisk, cardTestingVerdict, stolenInstrumentVerdict, dan behavioralTrustVerdict.

"riskAnalysis": {
    "score": "BOT_SCORE"
}
"fraudPreventionAssessment": {
    "transactionRisk": 0.9,
    "stolenInstrumentVerdict": {
        "risk": 0.7
    },
    "cardTestingVerdict": {
        "risk": 1.0
    }
    "behavioralTrustVerdict": {
        "trust": 0.0
    }
}

Anda bertanggung jawab atas tindakan yang Anda lakukan berdasarkan penilaian. Untuk integrasi yang paling sederhana, Anda dapat menetapkan nilai minimum pada transactionRisk level teratas untuk berkontribusi pada keputusan Anda. Misalnya, opsi ini dapat berkontribusi pada pengiriman ke peninjauan manual atau menolak secara langsung kemungkinan transaksi penipuan. Anda juga dapat menggunakan skor ini dalam alur kerja penipuan Anda sendiri, atau sebagai bagian dari aturan dengan sistem yang sudah ada. Karena reCAPTCHA Enterprise memeriksa berbagai sinyal dan memiliki visibilitas perilaku yang berbeda, Anda dapat mengharapkan nilai inkremental bahkan dengan mesin deteksi yang sudah matang.

Langkah selanjutnya