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.
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.
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>
Kod ini menangani perbezaan utama antara PHP dan Ruby:
hash.sort.to_h
Ruby dengan berkesan mencerminkan ksort
PHP.join('|')
menggabungkan nilai muatan yang diisih dengan cekap.OpenSSL::HMAC.hexdigest
menyediakan penjanaan checksum HMAC SHA256 yang selamat.ActiveSupport::SecurityUtils.secure_compare
menghalang serangan pemasaan semasa pengesahan checksum. Pengendalian ralat disertakan untuk keteguhan.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!