116 lines
5.2 KiB
PHP
116 lines
5.2 KiB
PHP
<?php
|
|
|
|
require 'phpcommon/tglog.php';
|
|
|
|
class PayNotifyController {
|
|
|
|
const PUB_KEY = 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC2g2T98rLysZAS1pVv2gE/2DOf9+LkHI9oEFVeKvVZKLHMNzEpZkXK+IXJMHpxlMNLStiwuLxLpnvCQQptGbFohqDsHACademc6/t+YVF2FX4F6GIgBuaPDdJwSGAljtU5P3vsCbJpGPXh6QNyKveBAJKILbXem6pPl+J01CMXyQIDAQAB';
|
|
|
|
protected function getMysql($accountid)
|
|
{
|
|
$mysql_conf = getMysqlConfig(crc32($accountid));
|
|
$conn = new phpcommon\Mysql(array(
|
|
'host' => $mysql_conf['host'],
|
|
'port' => $mysql_conf['port'],
|
|
'user' => $mysql_conf['user'],
|
|
'passwd' => $mysql_conf['passwd'],
|
|
'dbname' => 'paydb'
|
|
));
|
|
return $conn;
|
|
}
|
|
|
|
private function _reaEncode($str) {
|
|
$prikey = self::_redPrikey();
|
|
return openssl_sign($str, $sign, $prikey, OPENSSL_ALGO_SHA1) ? base64_encode($sign) : false;
|
|
}
|
|
|
|
public function payNotify()
|
|
{
|
|
error_log('payNotify:' . json_encode($_REQUEST));
|
|
/*
|
|
$sign_info = $this->_reaEncode(
|
|
'MerNo=' . $_REQUEST['MerNo'] . '&' .
|
|
'BillNo=' . $_REQUEST['BillNo'] . '&' .
|
|
'OrderNo=' . $_REQUEST['OrderNo'] . '&' .
|
|
'Amount=' . $_REQUEST['Amount'] . '&' .
|
|
'Succeed=' . $_REQUEST['Succeed']
|
|
);
|
|
if ($sign_info != $_REQUEST['SignInfo']) {
|
|
die('sign error');
|
|
}*/
|
|
$nowtime = time();
|
|
$conn = $this->getMysql($_REQUEST['BillNo']);
|
|
$conn->execScript("INSERT INTO notify_his(orderid, request_data, ipv4, createtime)" .
|
|
"VALUES(:orderid, :request_data, :ipv4, :createtime);",
|
|
array(
|
|
':orderid' => $_REQUEST['BillNo'],
|
|
':request_data' => json_encode($_REQUEST),
|
|
':ipv4' => phpcommon\getIPv4(),
|
|
':createtime' => time()
|
|
));
|
|
if ($_REQUEST['Succeed'] == '88') {
|
|
$row = $conn->execQueryOne('SELECT orderid, accountid, sp_pay_result, status, channel, '.
|
|
' gameid, itemid, price '.
|
|
'FROM orderinfo ' .
|
|
'WHERE orderid=:orderid;',
|
|
array(
|
|
'orderid' => $_REQUEST['BillNo']
|
|
)
|
|
);
|
|
if ($row) {
|
|
{
|
|
$log_params = array(
|
|
'#account_id' => $row['accountid'],
|
|
'#distinct_id' => '',
|
|
'#type' => 'track',
|
|
'#time' => date("Y-m-d H:i:s"),
|
|
'#ip' => phpcommon\getIPv4(),
|
|
'#event_name' => 'event_' . 11 . '_' . 41,
|
|
|
|
'properties' => array(
|
|
'channel' => $row['channel'],
|
|
'gameid' => $row['gameid'],
|
|
'orderid' => $row['orderid'],
|
|
'itemid' => $row['itemid'],
|
|
'itemnum' => 1,
|
|
'amount' => $row['price'],
|
|
'sp_orderid' => $_REQUEST['OrderNo'],
|
|
'sp_amount' => $_REQUEST['Amount'],
|
|
)
|
|
);
|
|
phpcommon\TGLog::writeToLog('gamepay', $row['gameid'], $log_params);
|
|
}
|
|
if ($row['status'] == 0 && $row['sp_pay_result'] == 0) {
|
|
$ret = $conn->execScript('INSERT INTO confirmed_order(orderid, status, createtime)' .
|
|
'VALUES(:orderid, :status, :createtime);',
|
|
array(
|
|
':orderid' => $_REQUEST['BillNo'],
|
|
':status' => 0,
|
|
':createtime' => $nowtime,
|
|
));
|
|
if (!$ret) {
|
|
die('dberror');
|
|
}
|
|
$ret = $conn->execScript('UPDATE orderinfo SET ' .
|
|
' sp_pay_result = 1, ' .
|
|
' sp_confirm_time = :sp_confirm_time, ' .
|
|
' sp_amount = :sp_amount, ' .
|
|
' sp_orderid = :sp_orderid ' .
|
|
'WHERE orderid=:orderid;',
|
|
array(
|
|
':orderid' => $_REQUEST['BillNo'],
|
|
':sp_orderid' => $_REQUEST['OrderNo'],
|
|
':sp_amount' => $_REQUEST['Amount'],
|
|
':sp_confirm_time' => $nowtime
|
|
));
|
|
if ($ret) {
|
|
die('ok');
|
|
}
|
|
}
|
|
}
|
|
}
|
|
die('sign error');
|
|
}
|
|
|
|
}
|