Cara Membuat Gerbang Pembayaran WooCommerce

Diterbitkan: 2021-04-26

Buat Gerbang Pembayaran WooCommerce Apakah Anda ingin membuat Gateway Pembayaran WooCommerce yang menerima opsi pembayaran khusus Anda? Dalam tutorial ini, saya ingin menunjukkan secara singkat cara Membuat Gateway Pembayaran di WooCommerce untuk memungkinkan pelanggan Anda membayar melalui gateway pembayaran WooCommerce kustom ini.

Dimungkinkan untuk membuat gateway pembayaran kustom Anda sendiri. Ada 2 cara untuk mencapai ini. Anda dapat menggunakan plugin atau kode khusus.

Namun, penting untuk dicatat bahwa plugin akan membuat situs Anda membengkak. Inilah mengapa kami akan menggunakan cuplikan kode khusus.

Kami akan membahas setiap langkah secara rinci, untuk memungkinkan pemula menggunakan metode ini.

Cara Membuat Gerbang Pembayaran WooCommerce

Dalam posting ini, kami akan membuat plugin untuk menambahkan gateway pembayaran baru. Ini berarti Anda harus memiliki keterampilan pemrograman untuk melakukan ini.

Kami akan memperluas kelas WooCommerce. WooCommerce memberi kami beberapa kelas inti, seperti gateway pembayaran atau kelas email.

Kelas-kelas ini dapat diperluas untuk menambahkan fungsionalitas Anda sendiri, yang menghemat waktu dalam pengembangan. Ini juga memastikan plugin Anda bekerja dengan cara standar.

Kelas WC_Payment_Gateway

Kelas WC_Payment_Gateway memperluas ini untuk memberi kami struktur dan fungsi yang akan spesifik untuk metode pembayaran, seperti kemampuan untuk mendapatkan total pesanan atau URL halaman terima kasih.

Kita bisa mendapatkan keuntungan dari struktur jika kita memperluas kelas ini. Ini akan menangani beberapa fungsi untuk kami, termasuk mendapatkan judul dan deskripsi dan menampilkannya di halaman checkout.

Penting untuk dicatat bahwa semua gateway pembayaran di WooCommerce akan dimulai dengan memperluas kelas WC_Payment_Gateway.

Berikut adalah langkah-langkah yang perlu Anda ikuti:

1. Periksa apakah WooCommerce Aktif

Karena kita akan memperluas kelas WooCommerce, kita perlu memeriksa apakah itu aktif:

// Make sure WooCommerce is active

if ( ! in_array( 'woocommerce/woocommerce.php', apply_filters( 'active_plugins', get_option( 'active_plugins' ) ) ) ) return;

2. Bangun Kelas Anak Anda

Untuk melakukan ini, pertama-tama kita harus membungkusnya dalam fungsi init dan menghubungkannya ke plugins_loaded lebih lambat dari prioritas default.

Setelah kami memeriksa apakah WooCommerce aktif, kami memuat kelas kami setelah inti WooCommerce. Ini menjadikannya pemeriksaan sekunder terhadap kesalahan fatal.

Ini juga memastikan bahwa kelas WC_Payment_Gateway tersedia. o memperluas kelas, Anda akan mengikuti format:

class My_Child_Class memperluas The_Parent_Class {}

Inilah yang akan terlihat seperti di plugin kami:

/**

* Offline Payment Gateway

* @class       WC_Gateway_Offline

* @extends     WC_Payment_Gateway

* @version     1.0.0

* @package     WooCommerce/Classes/Payment

* @author      Njengah

*/

add_action( 'plugins_loaded', 'wc_offline_gateway_init', 11 );

function wc_offline_gateway_init() {

class WC_Gateway_Offline extends WC_Payment_Gateway {

// You plugin code starts here

} // end \WC_Gateway_Offline class

}

3. Bangun Gerbang

Karena kita memiliki kelas di luar, kita perlu membangun fungsi __construct() kita. Ini memastikan bahwa variabel yang perlu kita sertakan di kelas kita.

Berikut adalah variabel yang diperlukan:

  • $ini->id
  • $ini->ikon
  • $this->has_fields = benar atau salah (bool)
  • $this->method_title
  • $this->method_description

Setelah variabel ditetapkan, konstruktor akan membutuhkan beberapa fungsi lainnya.

Bidang Formulir akan diatur dalam fungsi init_form_fields(). Fungsi ini menambahkan semua bidang pengaturan seperti mengaktifkan gateway dan menambahkan judul.

$this->init_form_fields();
$this->init_settings();

4. Init Form Fields

Di bagian ini, kita akan membuat fungsi init_form_fields() untuk mengatur kolom formulir untuk gateway pembayaran kita.

Fungsi tidak melakukan apa pun di kelas induk, tetapi memastikan tidak ada kesalahan fatal jika Anda tidak menimpanya.

Namun, kami akan memberikannya beberapa fungsionalitas di kelas anak kami.

Bidang dasar yang harus kita sertakan adalah judul dan deskripsi yang diaktifkan.

/**

* Initialize Gateway Settings Form Fields

*/

public function init_form_fields() {

$this->form_fields = apply_filters( 'wc_offline_form_fields', array(

'enabled' => array(

'title'   => __( 'Enable/Disable', 'wc-gateway-offline' ),

'type'    => 'checkbox',

'label'   => __( 'Enable Offline Payment', 'wc-gateway-offline' ),

'default' => 'yes'

),

'title' => array(

'title'       => __( 'Title', 'wc-gateway-offline' ),

'type'        => 'text',

'description' => __( 'This controls the title for the payment method the customer sees during checkout.', 'wc-gateway-offline' ),

'default'     => __( 'Offline Payment', 'wc-gateway-offline' ),

'desc_tip'    => true,

),

'description' => array(

'title'       => __( 'Description', 'wc-gateway-offline' ),

'type'        => 'textarea',

'description' => __( 'Payment method description that the customer will see on your checkout.', 'wc-gateway-offline' ),

'default'     => __( 'Please remit payment to Store Name upon pickup or delivery.', 'wc-gateway-offline' ),

'desc_tip'    => true,

),

'instructions' => array(

'title'       => __( 'Instructions', 'wc-gateway-offline' ),

'type'        => 'textarea',

'description' => __( 'Instructions that will be added to the thank you page and emails.', 'wc-gateway-offline' ),

'default'     => '',

'desc_tip'    => true,

),

) );

}

5. Proses Pembayaran

Ini adalah bagian terpenting dalam membuat gateway pembayaran. Kita perlu menambahkan fungsi untuk menangani pemrosesan pesanan, memberi tahu WooCommerce status apa yang seharusnya dimiliki dan ke mana pelanggan pergi setelah digunakan:

public function process_payment( $order_id ) {

$order = wc_get_order( $order_id );

// Mark as on-hold (we're awaiting the payment)

$order->update_status( 'on-hold', __( 'Awaiting offline payment', 'wc-gateway-offline' ) );

// Reduce stock levels

$order->reduce_order_stock();

// Remove cart

WC()->cart->empty_cart();

// Return thankyou redirect

return array(

'result'    => 'success',

'redirect'  => $this->get_return_url( $order )

);

}

6. Tambahkan Info Payment Gateway ke Pesanan yang Diterima dan Email

Gateway yang telah kami tambahkan memerlukan instruksi lebih lanjut untuk menyelesaikan pembayaran. Kita perlu memastikan bahwa instruksi ini ditampilkan pada halaman terima kasih dan email pesanan, menggunakan metode rintisan thankyou_page() dan email_instructions().

/**

* Output for the order received page.

*/

public function thankyou_page() {

if ( $this->instructions ) {

echo wpautop( wptexturize( $this->instructions ) );

}

}

/**

* Add content to the WC emails.

*

* @access public

* @param WC_Order $order

* @param bool $sent_to_admin

* @param bool $plain_text

*/

public function email_instructions( $order, $sent_to_admin, $plain_text = false ) {

if ( $this->instructions && ! $sent_to_admin && 'offline' === $order->payment_method && $order->has_status( 'on-hold' ) ) {

echo wpautop( wptexturize( $this->instructions ) ) . PHP_EOL;

}

}

7. Tambahkan ke Gateway Pembayaran WooCommerce

Langkah terakhir adalah memastikan bahwa gateway pembayaran tersedia di bawah WooCommerce > Settings > Checkout .

Kami akan menggunakan filter woocommerce_payment_gateways yang memberi kami array dari semua gateway yang tersedia. Ini berarti bahwa kita akan menambahkan gateway kita ke dalam array ini, dan kemudian mengembalikan array dengan menambahkan gateway kita.

function wc_offline_add_to_gateways( $gateways ) {

$gateways[] = 'WC_Gateway_Offline';

return $gateways;

}

add_filter( 'woocommerce_payment_gateways', 'wc_offline_add_to_gateways' );

Kesimpulan

Itu saja yang perlu Anda lakukan untuk menambahkan gateway pembayaran khusus. Kami baru saja mengkloning fungsionalitas gateway "Cek".

Jika Anda berintegrasi dengan pemroses pembayaran, penting untuk diperhatikan bahwa Anda perlu memasukkan informasi pengeposan dan penerimaan dari pemroses pembayaran.

Jika proses ini terlalu rumit, Anda dapat menyewa pengembang yang memenuhi syarat. Ini akan memastikan bahwa Anda tidak merusak situs Anda.

Artikel Serupa

  1. Pengalihan WooCommerce Setelah Keluar [Panduan Utama]
  2. Cara Menyesuaikan Halaman Produk WooCommerce
  3. Cara Mengubah Titik Akhir Checkout WooCommerce