發表文章

目前顯示的是 10月, 2019的文章

藍新金流約定信用卡 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"] ))); } 以上提供給需要的工程師大大們。 參考資料: segmentfault.com/q/1010000009624263/a-1020000010047802 stackoverflow.com/a/41677002 gist.github.com/odan/c1dc2798ef9cedb9fedd09cdfe6e8e76#gistcomment-2869268