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