Ejemplo n.º 1
0
 /**
  * 创建快递跟踪信息
  * @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;
 }
Ejemplo n.º 2
0
 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;
 }