$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];
return $orderid;
}
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 = $this->_redPrikey();
return openssl_sign($str, $sign, $prikey, OPENSSL_ALGO_SHA1) ? base64_encode($sign) : false;
}
public function scanPay()
{
/*
if (!phpcommon\isValidSessionId(
$_REQUET['account_id'],
$_REQUET['session_id']
)) {
echo json_encode(array(
'errcode' => 100,
'errmsg' => 'session无效',
));
die();
}
*/
$orderid = $this->getOrderId();
if (empty($orderid)) {
die();
}
$nowtime = time();
$advice_url = '';
if (SERVER_ENV != _ONLINE) {
$advice_url = "https://gamepay-test.kingsome.cn/webapp/index.php?c=PayNotify&a=payNotify";
} else {
$advice_url = "https://gamepay.kingsome.cn/webapp/index.php?c=PayNotify&a=payNotify";
}
$advice_url = 'https://gamepay.kingsome.cn/webapp/index.php';
$params = array(
'MerchantNo' => self::MER_NO,
'MerchantOrderNo' => $orderid,
'PayType' => 'WxJsapi_OnLine',
'Amount' => '0.1',
'Subject' => '1',
'Desc' => '1',
'CompanyNo' => 'sweep-f4fea613fec043f8bd81e9b70375e364',
'RandomStr' => $orderid,
'SignInfo' => '',
'AdviceUrl' => htmlentities($advice_url),
'SubAppid' => 'wx7d6509053659d9ed',
'UserId' => '1'
);
$params['SignInfo'] = $this->_reaEncode(
'AdviceUrl=' . $advice_url . '&' .
'Amount=' . $params['Amount'] . '&' .
'MerchantNo=' . $params['MerchantNo'] . '&' .
'MerchantOrderNo=' . $params['MerchantOrderNo'] . '&' .
'PayType=' . $params['PayType'] . '&' .
'RandomStr=' . $params['RandomStr'] .
''
);
$xml_txt = phpcommon\objectToXml($params, '');
$xml_txt = str_replace('', '', $xml_txt);
echo $xml_txt;
$requestDomain = base64_encode($xml_txt);
$response = '';
if (phpcommon\HttpClient::post(self::SCAN_PAY_API_URL,
'requestDomain='. urlencode($requestDomain),
$response)
) {
/* echo json_encode(array(
'errcode' => 101,
'errmsg' => '交易失败:' . $response,
));
die();*/
}
var_dump(base64_decode($response));
$xmlobj = new \SimpleXMLElement(base64_decode($response));
var_dump($xmlobj->respCode);
if ($xmlobj->respCode == '0000') {
$conn = $this->getMysql($_REQUEST['account_id']);
$ret = $conn->execScript();
}
}
public function scanPay1()
{
/*
if (!phpcommon\isValidSessionId(
$_REQUET['account_id'],
$_REQUET['session_id']
)) {
echo json_encode(array(
'errcode' => 100,
'errmsg' => 'session无效',
));
die();
}
*/
$orderid = $this->getOrderId();
if (empty($orderid)) {
die();
}
$nowtime = time();
$advice_url = '';
if (SERVER_ENV != _ONLINE) {
$advice_url = "https://gamepay-test.kingsome.cn/webapp/index.php?c=PayNotify&a=payNotify";
} else {
$advice_url = "https://gamepay.kingsome.cn/webapp/index.php?c=PayNotify&a=payNotify";
}
$advice_url = 'https://gamepay.kingsome.cn/webapp/index.php';
$params = array(
'MerNo' => self::MER_NO,
'BillNo' => $orderid,
'payType' => 'WxJsapi_OffLine',
'Amount' => '0.1',
'OrderTime' => strftime('%Y%m%d%H%M%S', $nowtime),
'AdviceUrl' => htmlentities($advice_url),
'ScanpayMerchantCode' => '',
'SignInfo' => '',
'products' => '',
'remark' => '',
'MerName' => '',
);
$params['SignInfo'] = $this->_reaEncode(
'MerNo=' . $params['MerNo'] . '&' .
'BillNo=' . $params['BillNo'] . '&' .
'Amount=' . $params['Amount'] . '&' .
'OrderTime=' . $params['OrderTime'] . '&' .
'AdviceUrl=' . $advice_url
);
echo $params['SignInfo'];
var_dump(phpcommon\objectToXml($params, ''));
$requestDomain = base64_encode(phpcommon\objectToXml($params, ''));
$response = '';
if (phpcommon\HttpClient::post(self::SCAN_PAY_API_URL,
'requestDomain='. urlencode($requestDomain),
$response)
) {
/* echo json_encode(array(
'errcode' => 101,
'errmsg' => '交易失败:' . $response,
));
die();*/
}
var_dump($response);
$xmlobj = new \SimpleXMLElement($response);
var_dump($xmlobj->respCode);
if ($xmlobj->respCode == '0000') {
$conn = $this->getMysql($_REQUEST['account_id']);
$ret = $conn->execScript();
}
}
public function merchantIn()
{
$orderid = $this->getOrderId();
if (empty($orderid)) {
die();
}
$params = array(
'MerNo' => self::MER_NO,
'SignInfo' => '',
'PayType' => 'WXZF_ONLINE',
'RandomStr' => $orderid,
'ChannelNo' => '235009412',
'MerchantInfo' => array(
'MerName' => '上海画石网络科技有限公司',
'ShortName' => '画石网络',
'ServicePhone' => '17891958491',
'Business' => '203',
'SubAppID' => 'wx7d6509053659d9ed'
)
);
$params['SignInfo'] = $this->_reaEncode(
'MerNo=' . $params['MerNo'] . '&' .
'PayType=' . $params['PayType'] . '&' .
'RandomStr=' . $params['RandomStr'] .
''
);
$xml_txt = phpcommon\objectToXml($params, '');
$xml_txt = str_replace('', '', $xml_txt);
echo $xml_txt;
$requestDomain = base64_encode($xml_txt);
$response = '';
if (phpcommon\HttpClient::post('https://gwapi.yemadai.com/scanpay/merchantIn',
'requestDomain='. urlencode($requestDomain),
$response)
) {
/* echo json_encode(array(
'errcode' => 101,
'errmsg' => '交易失败:' . $response,
));
die();*/
}
echo $response;
var_dump(base64_decode($response));
}
public function merchantInQuery()
{
$orderid = $this->getOrderId();
if (empty($orderid)) {
die();
}
$params = array(
'MerNo' => self::MER_NO,
'CompanyNo' => 'sweep-f4fea613fec043f8bd81e9b70375e364',
'SignInfo' => '',
'PayType' => 'WXZF_ONLINE',
'RandomStr' => $orderid,
'PayType' => 'WXZF_ONLINE',
);
$params['SignInfo'] = $this->_reaEncode(
'MerNo=' . $params['MerNo'] . '&' .
'CompanyNo=' . $params['CompanyNo'] . '&' .
'PayType=' . $params['PayType'] . '&' .
'RandomStr=' . $params['RandomStr'] .
''
);
$xml_txt = phpcommon\objectToXml($params, '');
$xml_txt = str_replace('', '', $xml_txt);
$requestDomain = base64_encode($xml_txt);
$response = '';
if (phpcommon\HttpClient::post('https://gwapi.yemadai.com/scanpay/merchantInQuery',
'requestDomain='. urlencode($requestDomain),
$response)
) {
/* echo json_encode(array(
'errcode' => 101,
'errmsg' => '交易失败:' . $response,
));
die();*/
}
var_dump(base64_decode($response));
}
}