集成支付平台可能具有挑战性,尤其是当文档缺少您首选的语言示例时。 本文详细介绍了用于验证Bayarcash校验和的Ruby Ruby,这是与此马来西亚支付网关合作的开发人员的常见障碍。 官方文档提供了一个PHP示例,但是本指南桥接了Ruby开发人员的差距。
理解php示例)相连,并生成HMAC SHA256校验和。 但是,将其直接转换为Ruby需要仔细考虑数据结构和哈希方法。
|
>在铁轨解决方案上有强大的红宝石
此代码解决了PHP和Ruby之间的关键差异:
<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
ksort
方法有效地串联了分类的有效载荷值。join('|')
OpenSSL::HMAC.hexdigest
以上是使用Ruby实施Bayarcash付款API:验证校验和的详细内容。更多信息请关注PHP中文网其他相关文章!