Rumah > pembangunan bahagian belakang > tutorial php > Melaksanakan API Pembayaran BayarCash dengan Ruby: Sahkan Jumlah Cek

Melaksanakan API Pembayaran BayarCash dengan Ruby: Sahkan Jumlah Cek

Patricia Arquette
Lepaskan: 2025-01-25 14:03:10
asal
927 orang telah melayarinya

Implementing BayarCash Payment API with Ruby: Validate Checksum

Mengintegrasikan platform pembayaran boleh menjadi mencabar, terutamanya apabila dokumentasi tidak mempunyai contoh dalam bahasa pilihan anda. Artikel ini memperincikan penyelesaian Ruby on Rails untuk mengesahkan jumlah cek BayarCash, halangan biasa bagi pemaju yang bekerja dengan gerbang pembayaran Malaysia ini. Dokumentasi rasmi menyediakan contoh PHP, tetapi panduan ini merapatkan jurang untuk pembangun Ruby.

Memahami Contoh PHP

Kod penjanaan checksum PHP BayarCash agak mudah: ia mengisih data muatan mengikut kunci, menggabungkan nilai dengan paip (|), dan menjana jumlah semak HMAC SHA256. Walau bagaimanapun, menterjemah secara langsung ini kepada Ruby memerlukan pertimbangan yang teliti terhadap struktur data dan kaedah pencincangan.

Penyelesaian Ruby on Rails yang Teguh

Kod Ruby berikut menyediakan kaedah yang selamat dan cekap untuk mengesahkan jumlah semak BayarCash dalam aplikasi Rails:

<code class="language-ruby"># Your BayarcashService class

def valid_checksum?(params)
  received_checksum = params['checksum']

  payload_data = {
    'record_type' => params['record_type'],
    'transaction_id' => params['transaction_id'],
    'exchange_reference_number' => params['exchange_reference_number'],
    'exchange_transaction_id' => params['exchange_transaction_id'],
    'order_number' => params['order_number'],
    'currency' => params['currency'],
    'amount' => params['amount'],
    'payer_name' => params['payer_name'],
    'payer_email' => params['payer_email'],
    'payer_bank_name' => params['payer_bank_name'],
    'status' => params['status'],
    'status_description' => params['status_description'],
    'datetime' => params['datetime']
  }

  sorted_payload = payload_data.sort.to_h
  payload_string = sorted_payload.values.join('|')
  generated_checksum = OpenSSL::HMAC.hexdigest('sha256', SECRET_KEY, payload_string)
  ActiveSupport::SecurityUtils.secure_compare(generated_checksum.downcase, received_checksum.downcase)
rescue => e
  Rails.logger.error "Checksum validation error: #{e.message}"
  false
end</code>
Salin selepas log masuk

Kod ini menangani perbezaan utama antara PHP dan Ruby:

  1. Isih Cincang: hash.sort.to_h Ruby dengan berkesan mencerminkan ksort PHP.
  2. Penggabungan Rentetan: Kaedah join('|') menggabungkan nilai muatan yang diisih dengan cekap.
  3. Penjanaan Checksum: OpenSSL::HMAC.hexdigest menyediakan penjanaan checksum HMAC SHA256 yang selamat.
  4. Perbandingan Selamat: ActiveSupport::SecurityUtils.secure_compare menghalang serangan pemasaan semasa pengesahan checksum. Pengendalian ralat disertakan untuk keteguhan.

Kesimpulan

Pelaksanaan Ruby yang diperhalusi ini memastikan pengesahan ceksum BayarCash yang selamat dan boleh dipercayai dalam aplikasi Rails anda. Penyelesaian ini memperkemas proses penyepaduan dan meningkatkan keselamatan pemprosesan pembayaran anda.

Atas ialah kandungan terperinci Melaksanakan API Pembayaran BayarCash dengan Ruby: Sahkan Jumlah Cek. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan