pay/webapp/controller/PayNotifyController.class.php
aozhiwei 14cf6ffe0a 1
2019-08-26 17:03:53 +08:00

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');
}
}