Die Integration von Zahlungsplattformen kann eine Herausforderung sein, insbesondere wenn Dokumentationen keine Beispiele in Ihrer bevorzugten Sprache haben. Dieser Artikel beschreibt einen Ruby on Rails -Lösung zur Validierung von Bayarcash -Prüfsummen, eine häufige Hürde für Entwickler, die mit diesem malaysischen Zahlungsgateway arbeiten. Die offizielle Dokumentation liefert ein PHP
das PHP -Beispiel) und generiert eine HMAC SHA256 -Prüfsumme. Die direkte Übersetzung dieser Ruby erfordert jedoch eine sorgfältige Berücksichtigung von Datenstrukturen und Hashing -Methoden. |
<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>
hash.sort.to_h
effektiv wider. ksort
join('|')
OpenSSL::HMAC.hexdigest
ActiveSupport::SecurityUtils.secure_compare
Das obige ist der detaillierte Inhalt vonImplementierung der BayarCash Payment API mit Ruby: Prüfsumme validieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!