Exemplo n.º 1
0
 /**
  * Unified Order, the order must contain `orderNumber`,
  *     `shallCount`, `payMode`, `user`, `timeExpire`
  * @param  ObjectId $accountId
  * @param  array $order  the detail of trade order.
  * @return bool
  */
 public function create($order)
 {
     $requiredFields = ['userIp', 'subject', 'orderNumber', 'expectedAmount', 'realAmount', 'payMode', 'timeExpire', 'openId', 'user' => ['memberId']];
     ValidatorUtil::fieldsRequired($order, $requiredFields);
     ModelPayment::avoidDuplicate($order['orderNumber']);
     if (!ModelPayment::isAlreadyPrepay($order['orderNumber'])) {
         if (!ModelPayment::create($this->accountId, $order)) {
             throw new BadRequestHttpException(Yii::t('common', 'parameters_missing'));
         }
     }
     $totalFee = round(floatval($order['realAmount']) * 100);
     try {
         $reponse = Yii::$app->tradeService->unifiedOrder($order['subject'], $order['orderNumber'], $totalFee, MongodbUtil::MongoDate2msTimeStamp($order['timeExpire']), $order['userIp'], $this->accountId, $order['openId']);
         return $reponse;
     } catch (yii\base\Exception $e) {
         LogUtil::error(['message' => 'Create wechat order occurs a error', 'error' => $e->getMessage()], 'trade');
     }
 }