Example #1
0
<?php

require_once "../../include/config.inc.php";
require_once "../../class/Logger.php";
Logger::configure("../../class/Logger.ini");
$logger = Logger::getLogger('365xs');
$now = time();
$logger->info("开始处理向上异步返回的数据({$now}) : " . print_r($_SERVER, true));
$logger->info("开始处理向上异步返回的数据({$now}) : " . print_r($_GET, true));
echo "true";
require_once "mobilerecharge.php";
recharge365xs::Feedback($_GET, "");
 public function Recharge($data)
 {
     // 之所以这样写,是因为向上系统的时间跟我们的不一样,相差了八个小时
     $now = time() + 8 * 60 * 60;
     $logger = Logger::getLogger('365xs');
     $logger->info("开始向上充值({$now}) : " . print_r($data, true));
     $deno = $data['money'] + 0;
     // 面额
     $macid = recharge365xs::$MODE == "TEST" ? recharge365xs::$macid_TEST : recharge365xs::$macid_FORMAL;
     $orderid = $data['orderId'];
     // 合作商订单号
     $orderid = substr($orderid, 6, 20);
     // 由于向上的接口要求订单号不超过20位
     // 充值号码
     $phone = recharge365xs::$MODE == "TEST" ? recharge365xs::$phone_TEST : $data['phone'];
     // 这个私钥是向上提供的测试示例
     $privateKey = recharge365xs::$MODE == "TEST" ? recharge365xs::$privateKey_TEST : recharge365xs::$privateKey_FORMAL;
     $sign = "deno" . $deno . "macid" . $macid . "orderid" . $orderid . "phone" . $phone . "time" . $now;
     $logger->debug("正在向上充值({$now}) : 生成签名的明文({$sign})");
     $piKey = openssl_pkey_get_private($privateKey);
     $encrypted = "";
     openssl_sign($sign, $encrypted, $piKey);
     $logger->debug("正在向上充值({$now}) : 生成的密文({$encrypted})");
     $sign = urlencode(base64_encode($encrypted));
     $logger->debug("正在向上充值({$now}) : sign({$sign})");
     $url = recharge365xs::$MODE == "TEST" ? recharge365xs::$url_TEST : recharge365xs::$url_FORMAL;
     $url .= "?deno={$deno}&macid={$macid}&orderid={$orderid}&phone={$phone}&sign={$sign}&time={$now}";
     $logger->info("正在向上充值({$now}) : url({$url})");
     $maxTryCount = 3;
     $tryCount = 0;
     while ($tryCount < $maxTryCount && !$xml) {
         $tryCount++;
         $xml = simplexml_load_file($url);
     }
     if ($xml) {
         $logger->info("正在向上充值({$now}) : 经历过{$tryCount} 次尝试后,返回的结果(" . print_r($xml, true) . ")");
         $xml = xml2array($xml);
         recharge365xs::Feedback($xml, $orderId);
     } else {
         $logger->error("完成向上充值({$now}) : 经历过{$tryCount} 次尝试后,({$url}) 没有返回数据");
     }
 }