Ejemplo n.º 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;
 }
Ejemplo n.º 2
0
 public function CreateOrder($requestBody, $authorId, $payChannel)
 {
     $logger = Logger::getLogger("transfermoney");
     $logger->debug("开始创建转账付款订单");
     // 调用外部函数******
     $logger->debug("正在创建转账付款订单 : 调用函数GetPayCalcuInfo::readpaycardid,传入参数(" . $requestBody["cardReaderId"] . ", " . $authorId . ")");
     $agentInfo = GetPayCalcuInfo::readpaycardid($requestBody["cardReaderId"], $authorId);
     $logger->debug("正在创建转账付款订单 : 调用函数GetPayCalcuInfo::readpaycardid,返回的结果" . print_r($agentInfo, true));
     // ******调用外部函数
     $cardReaderId = $agentInfo["paycardid"];
     // 刷卡器ID
     $agentId = $agentInfo["cusid"];
     // 代理商ID
     $payChannelFee = 0;
     switch ($payChannel) {
         case "YiBao":
             $payChannelFee = YiBaoPay::GetPayFee($requestBody['payMoney']);
             break;
     }
     $orderId = "tfbtfs" . date("YmdHiss") . mt_rand(1000, 9999);
     // 调用外部函数******
     $orderListNumber = makeorderno("transfermoneyglist", "tfmglist", "tfs");
     // ******调用外部函数
     $payDate = date("Y-m-d H:i:s");
     $feeMoney = 0;
     // 调用外部函数******
     $logger->debug("正在创建转账付款订单 : 调用函数getbankid,传入参数(" . $requestBody["receiveBankName"] . ")");
     $receiveBankId = getbankid(u2g($requestBody["receiveBankName"]));
     if ($receiveBankId == "") {
         ErrorReponse::reponError(array("retcode" => "200", "retmsg" => "不支持的银行"));
     }
     $logger->debug("正在创建转账付款订单 : 调用函数getbankid,返回的结果" . $receiveBankId);
     $logger->debug("正在创建转账付款订单 : 调用函数GetPayCalcuInfo :: readPayFee,传入参数({$authorId}, {$receiveBankId}, " . $requestBody['transferMoney'] . ", " . $requestBody['arriveId'] . ", 2, " . $requestBody["payType"] . ")");
     $payChannelFeeInfo = GetPayCalcuInfo::readPayFee($authorId, $receiveBankId, $requestBody['transferMoney'], $requestBody['arriveId'], 2, $requestBody["payType"]);
     $logger->debug("正在创建转账付款订单 : 调用函数GetPayCalcuInfo :: readPayFee,返回的结果" . print_r($payChannelFeeInfo, true));
     if (is_array($payChannelFeeInfo)) {
         $feeMoney = $payChannelFeeInfo["feemoney"];
     }
     $arriveDate = GetPayCalcuInfo::getfeedate($payDate, $payChannelFeeInfo['addday']);
     $logger->debug("正在创建转账付款订单 : 调用函数GetPayCalcuInfo :: getfeedate,返回的结果" . $arriveDate);
     // ******调用外部函数
     $query = "INSERT INTO tb_transfermoneyglist (fd_tfmglist_no, fd_tfmglist_bkordernumber, fd_tfmglist_payrq, fd_tfmglist_paycardid, fd_tfmglist_authorid, fd_tfmglist_sdcrid, fd_tfmglist_sdcrpayfeemoney, fd_tfmglist_sdcragentfeemoney, fd_tfmglist_paytype, fd_tfmglist_paydate, fd_tfmglist_payfeedirct, fd_tfmglist_fucardno, fd_tfmglist_fucardbank, \n\t\tfd_tfmglist_fucardmobile, fd_tfmglist_fucardman, \n\t\tfd_tfmglist_shoucardno, fd_tfmglist_shoucardbank, \n\t\tfd_tfmglist_shoucardman, fd_tfmglist_shoucardmobile, fd_tfmglist_sendsms, fd_tfmglist_shoucardmemo, fd_tfmglist_current, fd_tfmglist_paymoney, fd_tfmglist_payfee, fd_tfmglist_money, fd_tfmglist_feebankid, fd_tfmglist_arrivedate, fd_tfmglist_arriveid, fd_tfmglist_state) VALUES \n\t\t('{$orderListNumber}', '{$orderId}', '01', \n\t\t'{$cardReaderId}', {$authorId}, 3, {$payChannelFee}, \n\t\t0.00, '" . $requestBody["payType"] . "', '{$payDate}', 'f', \n\t\t'" . $requestBody["sendBankCardId"] . "', '" . $requestBody["sendBankName"] . "', \n\t\t'" . $requestBody["sendPhone"] . "', '" . $requestBody["sendPersonName"] . "', \n\t\t'" . $requestBody["receiveBankCardId"] . "', '" . $requestBody["receiveBankName"] . "', \n\t\t'" . $requestBody["receivePersonName"] . "', '" . $requestBody["receivePhone"] . "', 0, '', \n\t\t'RMB', " . $requestBody["transferMoney"] . ", {$feeMoney}, " . $requestBody["payMoney"] . ", {$receiveBankId}, \n\t\t'{$arriveDate}', '" . $requestBody['arriveId'] . "', '0')";
     $logger->debug("新增数据进 tb_transfermoneyglist 的sql" . $query);
     $db = new DB_test();
     $db->query(u2g($query));
     return $orderId;
 }
Ejemplo n.º 3
0
 public function PayWithVerifyCode()
 {
     $now = time();
     $logger = Logger::getLogger('transfermoney');
     $logger->debug("开始使用验证码进行验证后充值({$now})");
     $authorId = trim($this->arr_channelinfo['authorid']);
     // 用户ID
     $msgBody = $this->arr_body;
     foreach ($msgBody as $key => $value) {
         $msgBody[$key] = trim($value);
     }
     // 必填的字段
     $requiredField = array("orderId", "verifyCode");
     foreach ($requiredField as $key => $value) {
         if ($msgBody[$value] == "") {
             ErrorReponse::reponError(array('retcode' => '200', 'retmsg' => '用户输入信息不完整'));
         }
     }
     $logger->info("正在使用验证码进行验证后充值({$now}) : 输入的信息包括" . print_r($msgBody, true));
     $cardInfo = array("orderId" => $msgBody['orderId'], "verifyCode" => $msgBody['verifyCode']);
     $payResult = YiBaoPay::PayWithVerifyCode($cardInfo);
     $logger->info("完成易宝支付({$now}), 返回的结果" . print_r($payResult, true));
     TransferMoney::YiBaoPayFeedback($payResult, $msgBody['orderId']);
     if ($payResult['r1_Code'] == "1") {
         $retcode = "0";
         $arr_message = array("result" => "success", "message" => "支付成功,正在为您转账中");
     } else {
         $retcode = "200";
         $arr_message = array("result" => "fail", "message" => $payResult['errorMsg']);
     }
     $arr_msg["msgbody"]['result'] = $arr_message['result'];
     $arr_msg["msgbody"]['message'] = $arr_message['message'];
     $logger->info("完成使用验证码进行验证后充值({$now}) : 返回的信息包括" . print_r($arr_msg["msgbody"], true));
     $returnvalue = array("msgbody" => $arr_msg["msgbody"]);
     $returnval = TfbxmlResponse::ResponsetoApp($retcode, $returnvalue);
     return $returnval;
 }
Ejemplo n.º 4
0
<?php

// 20140728
require_once "../../include/config.inc.php";
require_once "../../class/Logger.php";
Logger::configure("../../class/Logger.ini");
$now = time();
$logger = Logger::getLogger('yibaopay');
$logger->info("开始处理易宝异步返回的数据({$now}) : " . $_SERVER["QUERY_STRING"]);
echo "success";
require_once "YiBaoPay.php";
$payResult = YiBaoPay::Feedback($_GET, "", "", true);
$logger->info("正在处理易宝异步返回的数据({$now}) : " . print_r($payResult, true));
if ($payResult["r6_Order"] != "") {
    $orderId = $payResult["r6_Order"];
    $payType = substr($orderId, 3, 3);
    switch ($payType) {
        case "mrc":
            // 手机充值业务
            require_once "../../class/mobilerecharge.php";
            $logger->info("正在处理易宝异步返回的数据({$now}) : 开始手机充值业务");
            MobileRecharge::YiBaoPayFeedback($payResult, $orderId);
            $logger->info("正在处理易宝异步返回的数据({$now}) : 完成手机充值业务");
            break;
    }
}
Ejemplo n.º 5
0
 public function Feedback($rawData, $phone, $orderId, $asyncReturn = false)
 {
     $now = time();
     $logger = Logger::getLogger('yibaopay');
     $logger->info("获取转账结果({$now}) : 返回的结果:({$rawData}), 手机({$phone}), 订单号({$orderId})");
     $returnArray = array();
     if (!is_array($rawData)) {
         $rawData = explode("\n", $rawData);
         for ($i = 0; $i < count($rawData); $i++) {
             $item = trim($rawData[$i]);
             if (strlen($item) == 0) {
                 continue;
             }
             $itemArr = explode("=", $item);
             if (count($itemArr) != 2) {
                 continue;
             }
             $returnArray[$itemArr[0]] = trim($itemArr[1]);
         }
     } else {
         $returnArray = $rawData;
     }
     if ($returnArray["hmac"] == "") {
         $logger->error("分析转账结果({$now}) : 签名sign({$sign})为空");
         return array("r1_Code" => -1);
     }
     // 验证返回结果
     if (!$asyncReturn) {
         $paramList = array($returnArray["r0_Cmd"], $returnArray["r1_Code"], $returnArray["r2_TrxId"], $returnArray["r6_Order"], $returnArray["ro_BankOrderId"]);
     } else {
         $paramList = array($returnArray["p1_MerId"], $returnArray["r0_Cmd"], $returnArray["r1_Code"], $returnArray["r2_TrxId"], $returnArray["r3_Amt"], $returnArray["r4_Cur"], $returnArray["r5_Pid"], $returnArray["r6_Order"], $returnArray["r7_Uid"], $returnArray["r8_MP"], $returnArray["r9_BType"]);
     }
     $sign = YiBaoPay::GetHmacString($paramList);
     if (YiBaoPay::$MODE != "TEST" && $sign != $returnArray["hmac"]) {
         $logger->error("分析转账结果({$now}) : 签名sign({$sign})错误,无法匹配(" . print_r($returnArray, true) . ")");
         return array("r1_Code" => -1, "errorMsg" => "签名验证失败");
     }
     // 如果返回的状态码为81202,则需要通付宝把验证码用短信发送给用户
     if ($returnArray["r1_Code"] == '81202') {
         $logger->info("分析转账结果({$now}) : 需要发送手机({$phone})验证码" . $returnArray["errorMsg"]);
         if ($phone != "" && $returnArray["errorMsg"] != "") {
             $returnArray['r6_Order'] = $orderId;
             $data = array('FUNC' => 'SEND_SMS', 'phone' => $phone, 'message' => "您的验证码是:" . $returnArray["errorMsg"] . ",仅用于通付宝支付业务,电话400-6868-956。如需帮助请联系客服。");
             // 调用接口把短信发给用户
             global $weburl;
             $url = $weburl . "sever/AsyncInterface.php";
             $ch = curl_init();
             curl_setopt($ch, CURLOPT_URL, $url);
             curl_setopt($ch, CURLOPT_POST, 1);
             curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
             curl_exec($ch);
             curl_close($ch);
             $logger->info("分析转账结果({$now}) : 已经发送手机验证码");
         } else {
             $logger->error("分析转账结果({$now}) : 不能发送验证码,phone({$phone}),verifyCode(" . $returnArray["errorMsg"] . ")");
         }
     }
     return $returnArray;
 }