c5_labsci/web/api/v1_test.php
2026-01-27 00:52:00 +08:00

94 lines
4.0 KiB
PHP

<?php
//https://ciyon.local.ciy.cn/ajax/api/v1_test.transfer
//https://ciyon.local.ciy.cn/ajax/api/v1_test.query
namespace web\api;
class v1_test {
public static function json_transfer() {
$param = array();
$param['thirdno'] = '34538';
$param['amount'] = 100;
$param['notify_url'] = 'https://ciyon.ciy.cn/api/recv.transfer';
$param['timestamp'] = time();
$waitsignstr = 'amount=100,addtimes=' . $param['timestamp'];
clog($waitsignstr);
$param['sign'] = self::sign($waitsignstr);
$param = self::send($param, 'transfer');
}
public static function json_query() {
$param = array();
$param['thirdno'] = '34538';
$param['timestamp'] = time();
$param = self::send($param, 'query');
}
static function send($param, $func) {
global $db;
$appid = 215695;
$csql = new \ciy\sql('ap_api');
$csql->where('id', $appid);
$apirow = $db->getone($csql);
$apisecret = $apirow['apisecret'];
$param['appid'] = $appid;
$signstr = '';
ksort($param);
foreach ($param as $key => $value) {
if ($key == 'sign')
continue;
$signstr .= $key . '=' . $value . '&';
}
$signstr = substr($signstr, 0, -1);
$signstr .= $apisecret;
$hash = sha256($signstr);
$param['hash'] = $hash;
$urlget = 'https://ciyon.local.ciy.cn/ajax/api/v1.' . $func;
$http = new \ciy\http();
$http->request($urlget, json_encode($param));
$statcode = $http->get_statcode();
clog('test http status code: ' . $statcode);
$result = $http->get_data();
clog($result);
exit();
}
static function sign($data) {
$hashbin = hex2bin(sha256($data));
$prikey = <<<EOD
-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDI1V1v9Gf7lJRW
lbVoYUg6I/nwHNnysCmAn5ImkMQ9tGNLb4BzHhaBPrxOArEMvXHz8cadH7DcmVkr
khpaF9I4jLTW1w5o/U5YMn0dshwF8XA1izS67D6GtUO/JSubczbL0TrCNZeqSiuK
UrSmlqpM7nYpQdSa6URyXo4x32c0mbX6+42cfsOE4Ye3hW1vDZKZOQA4buVoYO0b
3uVbysQUtbQ5s+OjNTJYQ0ijlGwUIGMnlFaKVsip4OBv52gfXFDmsPkob9qTtCZO
Aw9slJChftCZevO1MHiWVBed+h7vIRE1oZHf8b0AB45R3OxOAFMRp3H49mYBvE02
BQ51m943AgMBAAECggEAEePf1O9CrAiKRkRDyq6Pzo4R36/SQmoq6EhOrpzKvmxp
Q/kEyjxt6Ml74L8gom/lzMNG3AxMpvoKFXWIX2or0dnG6jRyFiwqZHTq7FBHasgd
JMfnxJby4vEWvdpDzi8vPGzA/Tfk8Mh2pHXFnelh9kRvxjEVDU+mR0HhDNRHz0mR
mBdDKA/WSzkijUfp8C1aq/qj4Qjx1vnCIlaogXg/CfnUN1Mbj8Wr+egFEmmVb5Vd
NmpBeBQgnidMZJRUdbBrum7NQOsz6ixNk9x9jUi2JEAS9H7BeG1bNgbPddeWNhZl
0QzfaeMi523WwOKK9pVmqBw5mjzc/+TeGDOzqGl7kQKBgQDuPLkRnKefeEZfYSfb
QYXqw9Bf2FtlYPn+8ZYxRkUJGHyCSl0dsCD+EN7qz766Q4nEQdPleehpy0qIgoxI
Y91s12ZY4+uQSJ3KppIeSe5VHvWCnHSBGKEYEggWGnlxxUv+0133qQ4diah7y2/z
Un6QKlGu0Eei8FLz99l26Vup/QKBgQDXzrXBwGOI8miQVTR5LdL0KbhD89ESZ+Qe
e/yhIo6Q4P96rSd2oQYu3CIyZXpRB3RLamEdjtOMHGub5qixqp5QPuPamerzq/zZ
D0bIiiATIAnSZHAKojlyFYd9aC5/fD6rGJCVcfnG0MJBJoLnkXXHksCYVyTXYan8
JRi+CzE1QwKBgCgIsjzga1aj+odqpyz0HNHvp+ODUxB9NGWAKXIMUeuOXtXyMyWb
BGBNa3hgArgAQ3VkbnxAeSrWC6dW8MX1ai8xHzTO0DYFzeZRCXrnh5JsSmtxaS6M
ef22gf9c4Y2ZzwR6dm74zLNv/40WCbEE6tnFEsbinzclVXtD6hpOaqXtAoGBAIo0
7Lv3rQcAT6zXlHJiwW3y5fpGxEdoV3SabPD5A5qPLa5wBAz6FM6f1hq2WH5aKsU9
jJJ0bNCXRuch8jlODnNPw3a1Cf4h0B1mpis6Ik59Py0Je6OjvuxsE0hiFx04AZ5r
bfT3eEI2YaF9u2n4AxjbyBIIBSUWe9lqHI1g95OnAoGATtwi1tKfQ8qKPveBexMd
AoHAJW8CxnCQEC/2mqydiKiLQZTCTXqJqZLa4SvuHojMnDlnbslA5C69d6mBDWA+
mZ8Y/QE6M+LieH7UXGe5IhGdB4aympiOA1Ig/uDdpbjy0/OKi7UH4ZbDAtJ6jORn
N/r/sMhXDVJBjxNf3nJijDU=
-----END PRIVATE KEY-----
EOD;
$privateKey = $prikey;
if (strpos($privateKey, '-----BEGIN RSA PRIVATE KEY-----') === false && strpos($privateKey, '-----BEGIN PRIVATE KEY-----') === false)
$privateKey = "-----BEGIN PRIVATE KEY-----\n" . wordwrap($privateKey, 64, "\n", true) . "\n-----END PRIVATE KEY-----";
$result = openssl_sign($hashbin, $signature, $privateKey, OPENSSL_ALGO_SHA256);
if ($result !== true)
return errjson('签名错误:' . openssl_error_string());
return bin2hex($signature);
}
}