RefillCallBack.php 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. <?php
  2. namespace refill\lingzhthird;
  3. require_once(BASE_HELPER_RAPI_PATH . '/lingzhthird/config.php');
  4. use refill;
  5. use Log;
  6. class RefillCallBack implements refill\IRefillCallBack
  7. {
  8. public function verify($params): bool
  9. {
  10. $sign = $this->sign($params);
  11. if ($params['sgn'] == $sign) {
  12. return true;
  13. } else {
  14. return false;
  15. }
  16. }
  17. private function sign($params)
  18. {
  19. $content = $params['ord'] . $params['state'] . config::KEY;
  20. return strtoupper(md5($content));
  21. }
  22. public function notify($params)
  23. {
  24. $status = intval($params['state']);
  25. $order_sn = $params['ord'];
  26. $order_info = Model('vr_order')->getOrderInfo(['order_sn' => $order_sn]);
  27. if (empty($order_info)) {
  28. return [false, false, false,false];
  29. }
  30. $order_id = $order_info['order_id'];
  31. if ($status === 1) {
  32. $card_info = $params['CardInfo'];
  33. if(!empty($card_info))
  34. {
  35. $result = $this->decrypt($card_info);
  36. if (empty($result)) {
  37. $data['ret_state'] = 2;
  38. $data['card_info'] = '回调解密,解密失败';
  39. } else {
  40. $data['ret_state'] = 1;
  41. $data['card_info'] = $result;
  42. }
  43. Model('thrid_refill')->edit_third($order_id, $data);
  44. }
  45. Model('refill_order')->edit($order_id, $data);
  46. return [$order_id, true, false,true];
  47. }
  48. elseif ($status === 2) {
  49. return [$order_id, false, true,true];
  50. }
  51. else {
  52. return [$order_id, false, false,false];
  53. }
  54. }
  55. private function decrypt($encrypt)
  56. {
  57. $ret = openssl_decrypt($encrypt, 'AES-128-CBC', config::KEY);
  58. if ($ret) {
  59. return $ret;
  60. } else {
  61. $err = openssl_error_string();
  62. Log::record("lingzhthird query openssl_decrypt error={$err}", Log::ERR);
  63. return false;
  64. }
  65. }
  66. }