Pembayaran Lite

Pembayaran Lite adalah cara baru untuk menentukan dan mengelola pembelian dalam aplikasi game Anda. Fitur baru ini memungkinkan Anda untuk mengembangkan solusi pembayaran tanpa server.

Jika Anda memiliki server sendiri, Anda mungkin ingin menentukan dan meng-hosting produk pembayaran Anda sendiri di Menerima Pembayaran.

Ringkasan

Pembayaran Lite adalah cara baru untuk mendefinisikan pembelian dalam aplikasi game Anda sebagai products secara langsung di Dasbor Aplikasi, menetapkan ID, nama, deskripsi, harga, mata uang, dan gambar. Kemudian, product ID diteruskan dalam panggilan JavaScript untuk memulai aliran pembayaran, alih-alih URL OG Object yang diperlukan dalam aliran pembayaran biasa. Hal ini memungkinkan alur pembuatan dan modifikasi produk yang ramping tanpa harus menggunakan server.

Membuat Produk

Untuk membuat produk, Anda harus membuka Pembayaran Canvas di Dasbor Aplikasi untuk menampilkan subbagian Produk.

Untuk membuat produk, klik tombol Buat Produk Baru di kanan atas. Di dialog Perincian Produk, masukkan Product ID, Title, Description, dan Price, pilih mata uang dari menu pilihan, dan unggah gambar 50 px kali 50 px yang akan mewakili produk Anda.

Pembayaran Lite hanya akan mengizinkan Anda untuk meminta Dialog Pembayaran untuk satu produk, jadi jika Anda berencana menjual mata uang dalam game, produk Anda harus mencerminkan paket mata uang.

API Daftar Produk

Setelah menentukan produk yang akan disediakan untuk dijual dalam game, Anda harus membuat toko dalam game. Pemain akan bisa menggunakan toko ini untuk memilih produk yang dianggap menarik untuk dibeli. Untuk memastikan Anda menggunakan informasi yang tepat untuk produk yang akan dijual, Anda dapat menggunakan API Daftar Produk untuk mendapatkan informasi tentang produk. Untuk mendapatkan daftar produk, Anda harus memanggil endpoint berikut ini:

GET https://graph.facebook.com/APP_ID/products

Dengan parameter berikut:

Nama Parameter Jenis Nilai Diwajibkan

product_ids

String

Daftar ID produk aplikasi yang dipisahkan oleh tanda koma

Tidak

Contoh panggilan dan tanggapan:

FB.api(
  '/app/products', 
  'get', 
  function(response) {
    console.log(response);
  }
);
FB.API(
  "app/products",
  HttpMethod.GET,
  this.productCallback // callback that receives a IGraphResult
);
{
  "data": [
    {
      "title": "100 coins lite package",
      "product_id": "payments_lite_test_01",
      "product_type": "managed",
      "description": "Package of 100 coins to test Payments Lite",
      "price": "$1.00",
      "price_amount_cents": 100,
      "price_currency_code": "USD"
    },
    {
      "title": "Friend Smash!",
      "product_id": "480369938658210_premium",
      "product_type": "managed",
      "description": "One time purchase to play game",
      "price": "$0.01",
      "price_amount_cents": 1,
      "price_currency_code": "USD"
    }
  ],
  "paging": {
    "cursors": {
      "before": "QVFIUlg1cXRqcnVad05taFRVRlZAZAU2tQdWNSd0FKRDh1TTJMdGd3azVTZA3ZAZAOFgzcXZAaZAlQ1N1VMMmRmZAXpUNG9KX2tsSWhYVlB6Yko2cEotUXZAiRGgzQkFKc0lJLUQzVlJxbHVPampZAS19SWEQ4",
      "after": "QVFIUmRiSGltU1BKQnRqWTRxNkd1WktUTHFKMmxvaEwtV2dSYUtpeDJxQnN0Ri1mZAnF0TG1Ub3oyWnphSExqZAU5qQzNNZAmFrejVnSTlaRVVGMXdSSlNsNE13"
    }
  }
}

Jika Anda telah mengonfigurasi lebih dari 25 produk, tanggapan hanya akan mengembalikan 25 produk pertama. Anda dapat mengacu ke https://developers.facebook.com/docs/graph-api/using-graph-api#paging untuk informasi tentang cara mengambil sisanya.

Memanggil UI

Setelah pengguna memilih produk, Anda harus memintanya untuk menyelesaikan pembelian dengan memanggil dialog Pembayaran. Hal ini bisa dicapai melalui fungsi ui dari objek FB Facebook JavaScript SDK.

Untuk meminta dialog Pembayaran, Anda harus menyediakan objek JSON sebagai parameter pertama beserta kode berikut ini:

Nama Parameter Jenis Nilai Diwajibkan

method

String

pay

Ya

action

String

purchaseiap

Ya

product_id

String

ID produk Anda

Ya

developer_payload

String

String menentukan payload yang harus digunakan untuk memverifikasi bahwa transaksi berasal dari developer.

Tidak

quantity

Int

Jika sudah ditentukan, harus selalu 1.

Tidak

Contoh kode untuk meminta dialog:

FB.ui(
  {
    method: 'pay',
    action: 'purchaseiap',
    product_id: 'com.fb.friendsmash.coins.10',
    developer_payload: 'this_is_a_test_payload'
  },
  response => (console.log(response)) // Callback function
);
FB.PayWithProductId(
  "com.fb.friendsmash.coins.10",
  "purchaseiap",
  1,
  null, null, null, null, null,
  this.payCallback  // Callback function that receives an IPayResult
);

Setelah alur selesai, Anda dapat memverifikasi hasil transaksi dengan menyediakan fungsi panggilan balik sebagai parameter kedua panggilan permintaan. Fungsi ini dapat dipanggil dengan objek yang berisi informasi tentang transaksi atau dengan kode kesalahan serta pesan:

Contoh tanggapan yang berhasil:

{
  app_id: 241431489326925,
  developer_payload: "this_is_a_test_payload",
  payment_id: 860496004080598,
  product_id: "com.fb.friendsmash.coins.10",
  purchase_time: 1473719771,
  purchase_token: "10157567446205226",
  signed_request: "M3fQFj6MlK7WJi597QgCvMlMLh7fl_...",
}

Contoh transaksi yang memiliki kesalahan:

{
  error_code: 1383010, 
  error_message: "User canceled the order."
}

Mendaftar pembelian pemain

Dengan Pembayaran Lite, pembelian dapat didaftar dan dikonsumsi sebagai bentuk verifikasi dan pengelolaan pembelian. Artinya, pemain tidak akan bisa membeli produk yang tidak dapat digunakan di game Anda. Sebagai praktik terbaik, sebaiknya periksa pembelian pemain saat ini setelah game dimuat untuk memverifikasi bahwa tidak ada pembelian yang menunggu untuk dikonsumsi.

Untuk mendaftar pembelian pemain, Anda dapat menggunakan endpoint /APP_ID/purchases aplikasi beserta token akses pengguna. Panggilan ini akan menghasilkan daftar semua pembelian yang tidak dikonsumsi untuk pemain saat ini, dengan informasi pembelian terkait.

Sebagai contoh, dengan menggunakan panggilan berikut:

FB.api(
  '/app/purchases',
  'get',
  {access_token: 'ACCESS_TOKEN'},      // user access token
   payload => {        // callback function
     console.log('purchases payload:');
     console.log(payload);
   }
);
FB.API(
  "/app/purchases?access_token=YOUR_ACCESS_TOKEN",
  HttpMethod.GET,
  this.purchasesCallback // callback that receives a IGraphResult
);

Contoh tanggapan:

{
  data: [
    {
      app_id: 241431489326925,
      developer_payload: "this_is_a_test_payload",
      payment_id: 860496004080598,
      product_id: "com.fb.friendsmash.coin",
      purchase_time: 1473719771,
      purchase_token: "10157567446205226",
      signed_request: "M3fQFj6MlK7WJi597QgCvMlMLh7fl_...",
    },
    {
      ...
    }
  ],
  paging: {
    cursors: {
      after: "M3fQFj6MlK7WJi597QgCvMlMLh7fl...",
      before: "M3fQFj6MlK7WJi597QgCvMlMLh7...",
    }
  }
}

Untuk informasi lebih lanjut untuk signed_request yang dihasilkan dari tanggapan ini, silakan lihat bagian ini.

Jika Anda memiliki lebih dari 25 pembelian, tanggapan tersebut akan menghasilkan hanya 25 pembelian pertama. Anda dapat mengacu ke https://developers.facebook.com/docs/graph-api/using-graph-api#paging untuk informasi tentang cara mengambil sisanya.

Dimulai dengan API Grafik v11.0, kolom consumed diubah namanya menjadi is_consumed.

Menggunakan pembelian

Setelah produk dibeli dan Anda sudah memverifikasi bahwa ini adalah pembelian yang sah dengan menggunakan permintaan yang ditandatangani dan payload developer, Anda harus memberikan barang atau mata uang yang dibeli kepada pemain. Pada tahap ini, jika produk yang dibeli dapat dikonsumsi (misalnya, mata uang, barang sekali pakai, dsb.), Anda harus menandai pembelian ini sebagai dikonsumsi agar pengguna dapat membeli barang yang sama lagi. Produk yang tidak dapat dikonsumsi (misalnya, membuka fungsi khusus, program VIP khusus, dsb.) tidak boleh ditandai sebagai dikonsumsi agar pembeli tidak membeli barang yang sama lebih dari sekali.

Untuk mengonsumsi pembelian, Anda harus menggunakan purchase_token yang disediakan dalam panggilan balik JavaScript atau di daftar pembelian pemain yang dibahas pada bagian terakhir. Untuk mengonsumsi pembelian, Anda harus memanggil endpoint API Grafik berikut:

POST	https://graph.facebook.com/PURCHASE_TOKEN/consume

Contohnya, menggunakan Facebook JavaScript SDK:

FB.api(
  '/' + PURCHASE_TOKEN + '/consume',    // Replace the PURCHASE_TOKEN
  'post',
  {access_token: access_token},         // Replace with a user access token
  result => {
    console.log('consuming product', productId, 'with purchase token', purchaseToken);
    console.log('Result:');
    console.log(result);
  }
);
FB.API(
  "/YOUR_PURCHASE_TOKEN/consume?access_token=YOUR_ACCESS_TOKEN",
  HttpMethod.POST,
  this.consumeCallback // callback that receives a IGraphResult
);

Contoh tanggapan yang berhasil:

{
  success: true,
}

Sengketa

Sengketa dapat terjadi lama setelah pembayaran awal diselesaikan. Oleh karena itu, untuk menangani sengketa, komponen server diperlukan agar developer dapat mengetahui saat pemain memulai proses sengketa. Di Pembayaran Lite, yang merupakan sistem pembayaran tanpa server, semua sengketa secara otomatis ditutup dan pengembalian dana diberikan. Untuk perincian tentang cara menerapkan Pembayaran dan menangani sengketa dengan komponen server, lihat Menerima Pembayaran dan Sengketa.