1
This commit is contained in:
parent
6c30fc90e8
commit
958865eee1
@ -79,6 +79,24 @@ CREATE TABLE `orderinfo` (
|
|||||||
) ENGINE=InnoDB AUTO_INCREMENT=10001 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
|
) ENGINE=InnoDB AUTO_INCREMENT=10001 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Table structure for table `notify_his`
|
||||||
|
--
|
||||||
|
|
||||||
|
DROP TABLE IF EXISTS `notify_his`;
|
||||||
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||||
|
/*!40101 SET character_set_client = utf8 */;
|
||||||
|
CREATE TABLE `notify_his` (
|
||||||
|
`idx` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增id',
|
||||||
|
`orderid` varchar(60) DEFAULT '' COMMENT '订单id',
|
||||||
|
`request_data` mediumblob COMMENT 'request_data',
|
||||||
|
`ipv4` varchar(50) NOT NULL DEFAULT '' COMMENT '账号创建时ipv4地址',
|
||||||
|
`createtime` int(11) NOT NULL DEFAULT '0' COMMENT '创建时间',
|
||||||
|
PRIMARY KEY (`idx`),
|
||||||
|
KEY `orderid` (`orderid`)
|
||||||
|
) ENGINE=InnoDB AUTO_INCREMENT=10001 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
|
||||||
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||||
|
|
||||||
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||||
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
|
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
|
||||||
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
|
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
|
||||||
|
@ -4,8 +4,9 @@ class PayController {
|
|||||||
|
|
||||||
const SCAN_PAY_API_URL = 'https://gwapi.yemadai.com/pay/scanpay';
|
const SCAN_PAY_API_URL = 'https://gwapi.yemadai.com/pay/scanpay';
|
||||||
# const PRI_KEY = 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCaxbGPoh7l8zq7AwhsSsuOj1wNH1YArG/oZvjCZn2xkeeemhWMh13t03mdz6VVaCsqOc3suN9zCG9tPMxSzSDmtvtcqfqQnFG80Fmi7TCPhju9yW+povjC6GrQnGWdafBpwh0jT/Wqa+GKlygVDXMxhwbDExn/aWStPCaB1pkMcwIDAQAB';
|
# const PRI_KEY = 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCaxbGPoh7l8zq7AwhsSsuOj1wNH1YArG/oZvjCZn2xkeeemhWMh13t03mdz6VVaCsqOc3suN9zCG9tPMxSzSDmtvtcqfqQnFG80Fmi7TCPhju9yW+povjC6GrQnGWdafBpwh0jT/Wqa+GKlygVDXMxhwbDExn/aWStPCaB1pkMcwIDAQAB';
|
||||||
|
const PRI_KEY = 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCaxbGPoh7l8zq7AwhsSsuOj1wNH1YArG/oZvjCZn2xkeeemhWMh13t03mdz6VVaCsqOc3suN9zCG9tPMxSzSDmtvtcqfqQnFG80Fmi7TCPhju9yW+povjC6GrQnGWdafBpwh0jT/Wqa+GKlygVDXMxhwbDExn/aWStPCaB1pkMcwIDAQAB';
|
||||||
const PUB_KEY = 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCVd+f/YkGDi8s9AKhZvmHCxZ2+sPKIsr+JVS2Uj4pP6qApuNq5lEwtF4c6LzHJbUUxKge/OttiR7pR481tqW3PgeSYjyU6rayx0rSEo8/xqVHnh4XugbJREUVyq/Evp79f0BePO69zC0AdYZSjXOAVG8uduRzHl4RWb7BiDLBL3QIDAQAB';
|
const PUB_KEY = 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCVd+f/YkGDi8s9AKhZvmHCxZ2+sPKIsr+JVS2Uj4pP6qApuNq5lEwtF4c6LzHJbUUxKge/OttiR7pR481tqW3PgeSYjyU6rayx0rSEo8/xqVHnh4XugbJREUVyq/Evp79f0BePO69zC0AdYZSjXOAVG8uduRzHl4RWb7BiDLBL3QIDAQAB';
|
||||||
const PRI_KEY = 'MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAJyCbZ+14jK2NwJ6v1mE4ZR8H+sOyUs33LzNys8mJj8+1zDxTIlv0tr0JnR/m8swKw9Jes7QsQw05edmtndeQ9bLbJeXSzqpuI3Dw35etBRD7Ec93NBtX49ezf51qmqxTRRwYcMUsIhXqliuK/2G1B75EbfgGfprA1MVNQv6YX8bAgMBAAECgYAF0xjPU86KQpvDfNv4MejPRNtPPSqioP6XDDWbBflwax9JFAHcL4wyV9nChik/I5jGpd5rKfsc0C8qMHlj8d8mZV9hgh8YeUFsfH8i02SbnR8l4MvutxnDaq2PDatTPnK6Qd7PPvKqwOnfT3BHhL415yJ0ia8+uzwVONYCYcvvqQJBAMpNEa+dx/d1xY50M9n6ds4uxKEBJN+DoMqtBRUu2tdvqgITgY7es8LW2Kn+5GTCIiSdWbvmL2GSIlwqfMz92a8CQQDGDbEzgECX0kp5J3odgLm5C5nrfmk3HG2+vt0eUUWP+a5iBKqCXXW9lx+8AYs5MKxkvQkA2m13Wxm+r1ND0UhVAkEAo4MVd3e1R/umGVUtD9OUsWQ1w9jz38E5dnfQcuWzNoxnwlPX1Q2GCEa1Svndyt7qz+NqwyfzRg7ivNIOm3XWuwJAHAILsTDN8ap3hbKjflCZ8yVE2xzBXF3U10i+lG8B215/3rSyOEVnRSx9/GRrf+b2OjjRcSFyoZJsjZ7Vs52BEQJBAILJlhPhaSQ2QG+gxkdqUmcTtU28ImI2MGzJmNAkfSzSOoogO5SCw8/6qxRZqyuTxZWUm0dEs7YEln3LT7PObuM=';
|
# const PRI_KEY = 'MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAJyCbZ+14jK2NwJ6v1mE4ZR8H+sOyUs33LzNys8mJj8+1zDxTIlv0tr0JnR/m8swKw9Jes7QsQw05edmtndeQ9bLbJeXSzqpuI3Dw35etBRD7Ec93NBtX49ezf51qmqxTRRwYcMUsIhXqliuK/2G1B75EbfgGfprA1MVNQv6YX8bAgMBAAECgYAF0xjPU86KQpvDfNv4MejPRNtPPSqioP6XDDWbBflwax9JFAHcL4wyV9nChik/I5jGpd5rKfsc0C8qMHlj8d8mZV9hgh8YeUFsfH8i02SbnR8l4MvutxnDaq2PDatTPnK6Qd7PPvKqwOnfT3BHhL415yJ0ia8+uzwVONYCYcvvqQJBAMpNEa+dx/d1xY50M9n6ds4uxKEBJN+DoMqtBRUu2tdvqgITgY7es8LW2Kn+5GTCIiSdWbvmL2GSIlwqfMz92a8CQQDGDbEzgECX0kp5J3odgLm5C5nrfmk3HG2+vt0eUUWP+a5iBKqCXXW9lx+8AYs5MKxkvQkA2m13Wxm+r1ND0UhVAkEAo4MVd3e1R/umGVUtD9OUsWQ1w9jz38E5dnfQcuWzNoxnwlPX1Q2GCEa1Svndyt7qz+NqwyfzRg7ivNIOm3XWuwJAHAILsTDN8ap3hbKjflCZ8yVE2xzBXF3U10i+lG8B215/3rSyOEVnRSx9/GRrf+b2OjjRcSFyoZJsjZ7Vs52BEQJBAILJlhPhaSQ2QG+gxkdqUmcTtU28ImI2MGzJmNAkfSzSOoogO5SCw8/6qxRZqyuTxZWUm0dEs7YEln3LT7PObuM=';
|
||||||
const MER_NO = '49118';
|
const MER_NO = '49118';
|
||||||
|
|
||||||
protected function getMysql($accountid)
|
protected function getMysql($accountid)
|
||||||
@ -110,7 +111,7 @@ class PayController {
|
|||||||
'OrderTime=' . $params['OrderTime'] . '&' .
|
'OrderTime=' . $params['OrderTime'] . '&' .
|
||||||
'AdviceUrl=' . $advice_url
|
'AdviceUrl=' . $advice_url
|
||||||
);
|
);
|
||||||
// var_dump(phpcommon\objectToXml($params, '<ScanPayRequest/>'));
|
var_dump(phpcommon\objectToXml($params, '<ScanPayRequest/>'));
|
||||||
$requestDomain = base64_encode(phpcommon\objectToXml($params, '<ScanPayRequest/>'));
|
$requestDomain = base64_encode(phpcommon\objectToXml($params, '<ScanPayRequest/>'));
|
||||||
$response = '';
|
$response = '';
|
||||||
if (phpcommon\HttpClient::post(self::SCAN_PAY_API_URL,
|
if (phpcommon\HttpClient::post(self::SCAN_PAY_API_URL,
|
||||||
|
@ -2,9 +2,86 @@
|
|||||||
|
|
||||||
class PayNotifyController {
|
class PayNotifyController {
|
||||||
|
|
||||||
|
const PUB_KEY = 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCVd+f/YkGDi8s9AKhZvmHCxZ2+sPKIsr+JVS2Uj4pP6qApuNq5lEwtF4c6LzHJbUUxKge/OttiR7pR481tqW3PgeSYjyU6rayx0rSEo8/xqVHnh4XugbJREUVyq/Evp79f0BePO69zC0AdYZSjXOAVG8uduRzHl4RWb7BiDLBL3QIDAQAB';
|
||||||
|
|
||||||
|
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 _redPubkey()
|
||||||
|
{
|
||||||
|
$pem = "-----BEGIN PUBLIC KEY-----\n" .
|
||||||
|
chunk_split(self::PUB_KEY, 64, "\n") .
|
||||||
|
"-----END PUBLIC KEY-----\n";
|
||||||
|
echo $pem;
|
||||||
|
return openssl_pkey_get_public($pem);
|
||||||
|
}
|
||||||
|
|
||||||
|
private function _redPrikey()
|
||||||
|
{
|
||||||
|
$pem = "-----BEGIN RSA PRIVATE KEY-----\n" .
|
||||||
|
chunk_split(self::PRI_KEY, 64, "\n") .
|
||||||
|
"-----END RSA PRIVATE KEY-----\n";
|
||||||
|
error_log($pem);
|
||||||
|
return openssl_pkey_get_private($pem);
|
||||||
|
}
|
||||||
|
|
||||||
|
private function _reaEncode($str) {
|
||||||
|
$prikey = self::_redPrikey();
|
||||||
|
return openssl_sign($str, $sign, $prikey, OPENSSL_ALGO_SHA1) ? base64_encode($sign) : false;
|
||||||
|
}
|
||||||
|
|
||||||
public function payNotify()
|
public function payNotify()
|
||||||
{
|
{
|
||||||
error_log('payNotify:' . json_encode($_REQUEST));
|
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');
|
||||||
|
}
|
||||||
|
$conn = $this->getMysql($_REQUEST['OrderNo']);
|
||||||
|
$conn->execScript("INSERT INTO notify_his(orderid, request_data, ipv4, createtime)" .
|
||||||
|
"VALUES(:orderid, :request_data, :ipv4, :createtime);",
|
||||||
|
array(
|
||||||
|
':orderid' => $_REQUEST['OrderNo'],
|
||||||
|
':request_data' => json_encode($_REQUEST),
|
||||||
|
':ipv4' => phpcommon\getIPv4(),
|
||||||
|
':createtime' => time()
|
||||||
|
));
|
||||||
|
if ($_REQUEST['Succeed'] == '88') {
|
||||||
|
$row = $conn->execQueryOne('SELECT orderid, accountid, sp_pay_result, status FROM orderinfo ' .
|
||||||
|
'WHERE orderid=:orderid;',
|
||||||
|
array(
|
||||||
|
'orderid' => $_REQUEST['OrderNo']
|
||||||
|
)
|
||||||
|
);
|
||||||
|
if ($row) {
|
||||||
|
if ($row['status'] == 0 && $row['sp_pay_result'] == 0) {
|
||||||
|
$ret = $conn->execScript('UPDATE orderinfo SET sp_pay_result = 1 WHERE orderid=:orderid',
|
||||||
|
array(
|
||||||
|
'orderid' => $_REQUEST['OrderNo']
|
||||||
|
));
|
||||||
|
if ($ret) {
|
||||||
|
die('ok');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
die('sign error');
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user