コード例 #1
0
 public function CreateOrder($msgBody, $authorId, $payType)
 {
     $now = time();
     $logger = Logger::getLogger('mobilerecharge');
     $logger->debug("开始创建手机充值订单({$now})");
     $arrPayCard = GetPayCalcuInfo::readpaycardid($msgBody['paycardid'], $authorId);
     // ******
     $logger->debug("正在创建手机充值订单({$now}) : paycardid(" . $msgBody['paycardid'] . "),authorId({$authorId} ),arrPayCard(" . print_r($arrPayCard, true) . ")");
     $payCardId = $arrPayCard['paycardid'];
     // 刷卡器ID
     $cusId = $arrPayCard['cusid'];
     // 代理商ID
     $payfee = 0;
     // 利润 = 用户支付给通付宝的钱 - 通付宝从向上的进货价- 支付通道的费率
     $query = "SELECT (fd_recham_paymoney - fd_recham_costmoney) AS payfee \n\t\t\t\tFROM tb_mobilerechamoney WHERE fd_recham_money = '" . $msgBody['rechargeMoney'] . "'";
     $db = new DB_test();
     $dataInDB = $db->get_all($query);
     if (is_array($dataInDB) && count($dataInDB) == 1) {
         $payfee = $dataInDB[0]['payfee'];
         $logger->debug("正在创建手机充值订单({$now}) : 用户支付给通付宝的钱 - 通付宝从向上的进货价 = ({$payfee})");
     } else {
         $logger->error("正在创建手机充值订单({$now}) : 无法获取面额" . $msgBody['rechargeMoney'] . "元所对应的利润值");
     }
     $payTypeFee = 0;
     // 转账费率
     switch ($payType) {
         case "YiBao":
             $payTypeFee = YiBaoPay::GetPayFee($msgBody['payMoney']);
             break;
         case "upmp":
             $payTypeFee = BankPayInfoV3::GetPayFee($msgBody['payMoney']);
             break;
     }
     // ********
     $cusfeeResult = getcusfenrun::get_cusfenrun($cusId, "mobilerecharge", $msgBody['payMoney'], 0, $payfee, 0, date("Y-m-d"), null, null);
     //$cusfeeResult = getcusfenrun :: get_cusfenrun($cusId, "mobilerecharge", $msgBody['payMoney'], $payTypeFee, $payfee, 0, date("Y-m-d"), null, null);
     $logger->debug("正在创建手机充值订单({$now}) : cusId({$cusId} ),cusfeeResult(" . print_r($cusfeeResult, true) . ")");
     $cusfee = $cusfeeResult["cusfee"];
     $cusfee = $cusfee > 0 ? $cusfee : 0;
     $logger->debug("正在创建手机充值订单({$now}) : 通付宝的利润({$payfee}), 代理商的利润({$cusfee})");
     $orderNumber = "tfbmrc" . date("YmdHiss") . mt_rand(1000, 9999);
     // 创建通付宝订单号
     $listno = makeorderno("mobilerechargelist", "mrclist", "mrc");
     // ******
     $sql = "INSERT INTO tb_mobilerechargelist(fd_mrclist_no, fd_mrclist_paycardid, fd_mrclist_cusid, \n\t\t\t\tfd_mrclist_cusfee, fd_mrclist_authorid, fd_mrclist_paydate, \n\t\t\t\tfd_mrclist_bkordernumber, fd_mrclist_sdcrid, fd_mrclist_payrq, fd_mrclist_paytypeid, \n\t\t\t\tfd_mrclist_paytype, fd_mrclist_rechamoney, fd_mrclist_bkmoney, fd_mrclist_rechaphone, \n\t\t\t\tfd_mrclist_paymoney, fd_mrclist_payfee, fd_mrclist_mobileprov, fd_mrclist_bankcardno, \n\t\t\t\tfd_mrclist_state, fd_mrclist_date, fd_mrclist_datetime) VALUES \n\t\t\t\t('{$listno}', '{$payCardId}', '{$cusId}', \n\t\t\t\t'{$cusfee}', '{$authorId}', NOW(), \n\t\t\t\t'{$orderNumber}', 3, '01', '1', \n\t\t\t\t'mobilerecharge', '" . $msgBody['rechargeMoney'] . "', '" . $msgBody['payMoney'] . "', '" . $msgBody['rechargePhone'] . "', \n\t\t\t\t'" . $msgBody['payMoney'] . "', '{$payfee}', '" . $msgBody['mobileProvince'] . "', '" . $msgBody['bankCardId'] . "', \n\t\t\t\t'0', NOW(), NOW());";
     $logger->debug("正在创建手机充值订单({$now}) : ({$sql})");
     $sql = auto_charset($sql, 'utf-8', 'gbk');
     $db->query($sql);
     return $orderNumber;
 }
コード例 #2
0
 public function CheckTransStatus()
 {
     $now = time();
     $logger = Logger::getLogger('mobilerecharge');
     $logger->debug("开始银联支付完成后,检查订单状态({$now})");
     $msgBody = $this->arr_body;
     $transNumber = trim($msgBody['bkntno']);
     $result = trim($msgBody['result']);
     if ($transNumber == "") {
         ErrorReponse::reponError(array('retcode' => '200', 'retmsg' => '账单信息不能为空'));
     }
     $logger->info("正在银联支付完成后,检查订单状态({$now}) : transNumber({$transNumber}), result({$result})");
     $query = "SELECT fd_mrclist_bkordernumber AS orderId, DATE_FORMAT(fd_mrclist_date, '%Y%m%d') AS orderTime FROM tb_mobilerechargelist \n\t\t\t\tWHERE fd_mrclist_bkntno = '{$transNumber}'";
     $logger->debug("正在银联支付完成后,检查订单状态({$now}) : query({$query})");
     $db = new DB_test();
     $dataInDB = $db->get_all($query);
     if (!is_array($dataInDB) || count($dataInDB) != 1) {
         $logger->error("完成银联支付完成后,检查订单状态({$now}) : 数据({$query})有误(" . print_r($dataInDB, true) . ")");
         ErrorReponse::reponError(array('retcode' => '200', 'retmsg' => '账单信息异常'));
     }
     $orderId = $dataInDB[0]['orderId'];
     $orderTime = $dataInDB[0]['orderTime'];
     $logger->debug("正在银联支付完成后,检查订单状态({$now}) : orderId({$orderId}), orderTime({$orderTime})");
     if ($orderId == "" || $orderTime == "") {
         $logger->error("完成银联支付完成后,检查订单状态({$now}) : 订单号异常 orderId({$orderId}), orderTime({$orderTime})");
         ErrorReponse::reponError(array('retcode' => '200', 'retmsg' => '订单号异常'));
     }
     $payResult = BankPayInfoV3::GetTransStatus($orderId, $orderTime);
     $logger->debug("正在银联支付完成后,检查订单状态({$now}) : payResult(" . $payResult . ")");
     $payResult = md5("" . (string) $payResult . "");
     if ($payResult == "cace2a1f74fa974808c185f17ef557de") {
         // bankReturnInfo为00
         $retcode = 0;
         $arr_message = array("result" => "success", "message" => "支付成功,正在为您充值中!");
     } else {
         $arr_message = array("result" => "fail", "message" => "支付失败,如有疑问,请联系客服!");
     }
     MobileRecharge::UpmpPayFeedback($payResult, $orderId);
     $arr_msg['msgbody']['result'] = $arr_message['result'];
     $arr_msg['msgbody']['message'] = $arr_message['message'];
     $logger->info("完成银联支付完成后,检查订单状态({$now}) : msgbody" . print_r($arr_msg['msgbody'], true));
     $returnvalue = array("msgbody" => $arr_msg['msgbody']);
     $returnval = TfbxmlResponse::ResponsetoApp($retcode, $returnvalue);
     return $returnval;
 }