Beispiel #1
0
 /**
  * 扣费
  * @param $userId
  * @param $price
  * @param string $userAccountId
  * @param $note
  * @param $requestId
  * @return array
  */
 public function chargeMoney($userId, $price, $userAccountId = "", $note, $requestId)
 {
     $result = array('status' => false, 'balance' => 0, 'msg' => '');
     if (empty($userId) || empty($price) || empty($note) || empty($requestId)) {
         $result['msg'] = "参数不正确";
         return $result;
     }
     if (empty($userAccountId)) {
         // 获取到支付账户Id
         $accountId = Bll_Fyk_Payment_User::getInstance()->getUserAccountId($userId);
     } else {
         $accountId = $userAccountId;
     }
     $count = 0;
     while (true) {
         if ($count >= 3) {
             break;
         }
         // 调用api,开始扣钱
         $params = array('account' => $accountId, 'requestid' => $requestId, 'amount' => $price, 'note' => $note, 'addnote' => "");
         $configPayment = Const_PaymentApp::FYK;
         $apiResult = Bll_Service_Payment::pay($configPayment, $params);
         if ($apiResult->isSucceeded()) {
             $transferInfo = $apiResult->getTransferInfo();
             if ($apiResult['result'] == true) {
                 $result['status'] = true;
                 $result['balance'] = $apiResult['amount'];
                 $result['msg'] = array('response' => $apiResult->getResponse(), 'transferInfo' => array('url' => $transferInfo['url'], 'content_type' => $transferInfo['content_type'], 'http_code' => $transferInfo['http_code']));
                 break;
             } else {
                 $result['msg'] = array('response' => $apiResult->getResponse(), 'transferInfo' => array('url' => $transferInfo['url'], 'content_type' => $transferInfo['content_type'], 'http_code' => $transferInfo['http_code']));
                 $count++;
             }
         } else {
             $result['msg'] = '链接失败';
             $count++;
         }
     }
     // 记录请求支付中心日志
     $addLogArr = array('userId' => $userId, 'accountId' => $accountId, 'price' => $price, 'amount' => $result['balance'], 'requestId' => $requestId, 'status' => $result['status'] ? 2 : 1, 'msg' => json_encode($apiResult), 'createTime' => time());
     Bll_Fyk_Payment_Log::getInstance()->insertPayRequestLog($addLogArr);
     return $result;
 }