RefillCallBack.php 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. <?php
  2. namespace refill\shengchuang;
  3. require_once(BASE_HELPER_RAPI_PATH . '/shengchuang/config.php');
  4. use refill;
  5. class RefillCallBack implements refill\IRefillCallBack
  6. {
  7. public function verify($params): bool
  8. {
  9. $input = $params;
  10. unset($input['sign']);
  11. $sign = $this->sign($input);
  12. if ($params['sign'] == $sign) {
  13. return true;
  14. } else {
  15. return false;
  16. }
  17. }
  18. private function check_empty($value)
  19. {
  20. if (!isset($value))
  21. return true;
  22. if ($value === null)
  23. return true;
  24. if (trim($value) === "")
  25. return true;
  26. return false;
  27. }
  28. private function sign($params)
  29. {
  30. ksort($params);
  31. $body = "";
  32. $key = config::APP_KEY;
  33. $i = 0;
  34. foreach ($params as $k => $v)
  35. {
  36. if (false === $this->check_empty($v) && "@" != substr($v, 0, 1)) {
  37. if ($i == 0) {
  38. $body .= "{$k}" . "=" . urldecode($v);
  39. } else {
  40. $body .= "&" . "{$k}" . "=" . urldecode($v);
  41. }
  42. $i++;
  43. }
  44. }
  45. $body .= md5($key);
  46. return md5($body);
  47. }
  48. public function notify($params)
  49. {
  50. $status = intval($params['status']);
  51. $order_sn = $params['orderId'];
  52. $order_info = Model('vr_order')->getOrderInfo(['order_sn' => $order_sn]);
  53. if (empty($order_info)) {
  54. return [false, false, false, false];
  55. }
  56. $order_id = $order_info['order_id'];
  57. if ($status === 1) {
  58. return [$order_id, true, false, true];
  59. } elseif ($status === 0) {
  60. return [$order_id, false, false, true];
  61. } else {
  62. return [$order_id, false, false, false];
  63. }
  64. }
  65. }