藍新金流約定信用卡 API,mcrypt_encrypt 替代解法 (PHP 7.2 以上)

藍新金流的約定信用卡(不定期不定額)的 PHP 官方文件,
使用 mcrypt_encrypt 這個函式來加密,如下示。

function newebpay_creditcard_charge_encrypt__legacy($data=""){
 GLOBAL $pay_auth;
 return trim(bin2hex(mcrypt_encrypt(
  MCRYPT_RIJNDAEL_128,
  $pay_auth["key"],
  newebpay_addpadding($data),
  MCRYPT_MODE_CBC,
  $pay_auth["iv"]
 )));
}

但 mcrypt_encrypt 在 PHP 7.2 時棄用,
因此必須改用其他來代替。

爬了一些文章之後,
實測可以 openssl_encrypt 的 AES-256-CBC 直接換掉。
如下示:

function newebpay_creditcard_charge_encrypt($data=""){
 GLOBAL $pay_auth;
 return trim(bin2hex(openssl_encrypt(
  newebpay_addpadding($data),
  "AES-256-CBC",
  $pay_auth["key"],
  OPENSSL_RAW_DATA | OPENSSL_NO_PADDING,
  $pay_auth["iv"]
 )));
}

以上提供給需要的工程師大大們。

參考資料:

留言

這個網誌中的熱門文章

如何設定貼牌 DNS (Vanity DNS)

不會寫程式的男生,經由自學而獨立打造一支療癒日記 App,讓每個女孩都少女心迸發