sign($params); if ($params['Sign'] == $sign) { return true; } else { return false; } } private function sign($params) { $content = config::APP_KEY . $params['TimesTamp'] . $params['MOrderID'] . $params['OrderID'] . $params['State'] . $params['ChargeAccount']; $content .= $params['BuyCount'] . config::App_Secret; return strtoupper(md5($content)); } public function notify($params) { $status = intval($params['State']); $order_sn = $params['MOrderID']; $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']; if ($status === 2) { $card_info = $params['CardInfo']; if(!empty($card_info)) { $result = $this->rsa_decode($params['CardInfo']); if (empty($result)) { $data['ret_state'] = 2; $data['card_info'] = '回调解密,解密失败'; } else { $data['ret_state'] = 1; $data['card_info'] = $result; } Model('thrid_refill')->edit_third($order_id, $data); } return [$order_id, true, false,true]; } elseif ($status === 3) { return [$order_id, false, true,true]; } else { return [$order_id, false, false,false]; } } private function rsa_decode($encrypted) { $ret = openssl_private_decrypt(base64_decode($encrypted), $decrypted, config::PRIVATE_KEY); if ($ret) { $result = json_decode($decrypted, true); return $result; } else { $err = openssl_error_string(); Log::record("sctongqian callback openssl_private_decrypt error={$err}",Log::ERR); return false; } } }