pay/webapp/controller/PayController.class.php
aozhiwei f432eeec45 1
2019-08-19 15:15:28 +08:00

101 lines
3.3 KiB
PHP

<?php
class PayController {
const SCAN_PAY_API_URL = 'https://gwapi.yemadai.com/pay/scanpay';
const PRI_KEY = 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCaxbGPoh7l8zq7AwhsSsuOj1wNH1YArG/oZvjC
Zn2xkeeemhWMh13t03mdz6VVaCsqOc3suN9zCG9tPMxSzSDmtvtcqfqQnFG80Fmi7TCPhju9yW+p
ovjC6GrQnGWdafBpwh0jT/Wqa+GKlygVDXMxhwbDExn/aWStPCaB1pkMcwIDAQAB';
const PUB_KEY = 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCVd+f/YkGDi8s9AKhZvmHCxZ2+sPKIsr+JVS2U
j4pP6qApuNq5lEwtF4c6LzHJbUUxKge/OttiR7pR481tqW3PgeSYjyU6rayx0rSEo8/xqVHnh4Xu
gbJREUVyq/Evp79f0BePO69zC0AdYZSjXOAVG8uduRzHl4RWb7BiDLBL3QIDAQAB';
const MER_NO = '49118';
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;
}
//ksome201908191405_xxxxx
private function getOrderId()
{
$conn = $this->getMysql($_REQUEST['account_id']);
$orderid_pre = 'ksome' . strftime('%y%m%d%H%M%S');
$ret = $conn->execScript("INSERT INTO orderidx(createtime) VALUES(:createtime);",
array(
'createtime' => time()
));
if (!$ret) {
die();
}
$row = $conn->execQueryOne('SELECT LAST_INSERT_ID();', array());
if (empty($row)) {
die();
}
$orderid = $orderid_pre . '_' . $row[0];
echo $orderid;
}
private function _redPubkey()
{
$pem = "-----BEGIN PUBLIC KEY-----\n" . chunk_split(self::$pubkey, 64, "\n") . "-----END PUBLIC KEY-----\n";
return openssl_pkey_get_public($pem);
}
private function _redPrikey()
{
$pem = "-----BEGIN RSA PRIVATE KEY-----\n" . chunk_split(self::$prikey, 64, "\n") . "-----END RSA PRIVATE KEY-----\n";
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 scanPay()
{
$response = '';
$params = array(
'MerNo' => '',
'BillNo' => '',
'payType' => '',
'Amount' => '',
'OrderTime' => '',
'AdviceUrl' => '',
'ScanpayMerchantCode' => '',
'SignInfo' => '',
'products' => '',
'remark' => '',
'MerName' => '',
);
$this->getOrderId();
die();
$params['SignInfo'] = $this->reaEncode(
'MerNo=' . $params['MerNo'] . '&' .
'BillNo=' . $params['BillNo'] . '&' .
'Amount=' . $params['Amount'] . '&' .
'OrderTime=' . $params['OrderTime'] . '&' .
'AdviceUrl=' . $params['AdviceUrl']
);
$requestDomain = '';
if (phpcommon\HttpClient::post(self::SCAN_PAY_API_URL,
array(
'requestDomain' => $requestDomain
),
$response)
) {
}
}
}