/** * 创建快递跟踪信息 * @method send * @since 0.0.1 * @param {string} $company 快递公司代码 * @param {string} $number 快递单号 * @return {boolean} * @example \Yii::$app->express->send($company, $number); */ public function send($company, $number) { $eid = 0; if ($express = Express::findOne(['company' => $company, 'number' => $number])) { $eid = $express->id; } else { $express = new Express(); $express->company = $company; $express->number = $number; $express->generateAuthKey(); if ($express->save()) { $result = $this->debug ? ['returnCode' => 200] : Json::decode(Kd100::sdk($this->key)->poll($company, $number, $this->getUrl($express->id), $express->auth_key, $this->resultv2)); if (isset($result['returnCode'])) { switch ($result['returnCode']) { case 200: $express->status = '提交成功'; $eid = $express->id; break; case 501: $express->status = '重复订阅'; break; } $express->save(); } } } return $eid; }
public function actionNotify($id) { $response = ['result' => 'false', 'returnCode' => '500', 'message' => '失败']; $express = Express::findOne($id); if ($express && isset($_POST['param'])) { $param = Json::decode($_POST['param']); if (isset($param['lastResult']) && $express->company == $param['lastResult']['com'] && $express->number == $param['lastResult']['nu'] && (empty($express->auth_key) || isset($_POST['sign']) && $this->module->manager->verify($_POST['sign'], $_POST['param'], $express->auth_key))) { $express->status = $this->module->manager->getStatus($param['lastResult']['state']); $express->details = Json::encode($param['lastResult']['data']); if ($param['lastResult']['ischeck'] == 1 && $param['lastResult']['state'] == 3) { $express->receipted_at = strtotime($param['lastResult']['data'][0]['time']); } if ($express->save()) { $response['result'] = 'true'; $response['returnCode'] = '200'; $response['message'] = '成功'; if ($notifyClass = $this->module->notifyClass) { $notifyClass::receipted($id); } } } } \Yii::$app->response->format = 'json'; return $response; }