PayUtils.php 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. <?php
  2. namespace common\pay\chuanghui;
  3. class PayUtils
  4. {
  5. /**
  6. * @param array $data
  7. * @return string
  8. */
  9. public static function makeSign($data, $privateKey)
  10. {
  11. $str = "";
  12. ksort($data);
  13. foreach ($data as $key => $value) {
  14. $str .= "{$value}";
  15. }
  16. $rsa = openssl_pkey_get_private(file_get_contents( $privateKey));
  17. if (empty($rsa))
  18. {
  19. echo "private key resource identifier False!";
  20. return False;
  21. }
  22. openssl_sign($str, $sign, $rsa,OPENSSL_ALGO_MD5);
  23. $sign = base64_encode($sign);
  24. return $sign;
  25. }
  26. /**
  27. * @param array $data
  28. * @param $pubCert
  29. * @return bool|int
  30. */
  31. public static function verify($data, $pubCert)
  32. {
  33. // 签名
  34. if (!isset($data['sign']) || trim($data['sign']) === '') {
  35. return false;
  36. }
  37. $sign = $data['sign'];
  38. unset($data['sign']);
  39. ksort($data);
  40. $temp = '';
  41. foreach($data as $key=>$value)
  42. {
  43. $temp .="{$value}";
  44. }
  45. $pubKey = openssl_get_publickey(file_get_contents($pubCert));
  46. return openssl_verify($temp, base64_decode($sign), $pubKey, OPENSSL_ALGO_MD5);
  47. }
  48. }