sign($input); if ($params['sign'] == $sign) { return true; } else { return false; } } protected function check_empty($value) { if (!isset($value)) return true; if ($value === null) return true; if (trim($value) === "") return true; return false; } private function sign($params) { ksort($params); $body = ""; $i = 0; foreach ($params as $k => $v) { if (false === $this->check_empty($v) && "@" != substr($v, 0, 1)) { if ($i == 0) { $body .= "{$k}" . "=" . urlencode($v); } else { $body .= "&" . "{$k}" . "=" . urlencode($v); } $i++; } } $body .= "&key=".config::KEY; return md5($body); } public function notify($params) { $status = $params['state']; $order_sn = $params['order_sn']; $order_info = Model('vr_order')->getOrderInfo(['order_sn' => $order_sn]); if (empty($order_info)) { return [false, false, false,false]; } $order_id = $order_info['order_id']; Model('refill_order')->edit($order_id, ['ch_trade_no' => $params['trade_no']]); if ($status === 'SUCCESS') { $data['official_sn'] = strtolower($params['official_sn']) == 'null' ? '' : $params['official_sn']; Model('refill_order')->edit($order_id, $data); return [$order_id, true, false,true]; } elseif ($status === 'CANCEL') { return [$order_id, false, false,true]; } else { return [$order_id, false, false,false]; } } }