hxp
2025-06-04 f4a514d5ac952110da846636ecbb9de951eaf3d2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<?php
include_once '/Common/CommFunc.php';
include_once '/Common/Logging.php';
 
\Logging\CreateLogging("sohagame.paymenttest.php");
 
// 本脚本仅用于内网测试使用
$host = $_SERVER["HTTP_HOST"];
if ($host != "vm-mobile") {
    echo "error test host: ", $host;
    exit;
}
 
$spid = "sohagame";
if ($_POST["spid"]) {
    // 可选参数,也可用于测试用
    $spid = $_POST["spid"];
}
 
\CommFunc\GetKeyFromConfig(dirname(__FILE__) . '\\..\\..\\InterfaceConfig.php', "SP." . $spid, "app_secret", $app_secret);
 
$_POST["algorithm"] = "HMAC-SHA256";
\Logging\LogInfo("_POST: " . print_r($_POST, true));
$signed_request = do_signed($_POST, $app_secret);
\Logging\LogInfo("signed_request: " . $signed_request);
 
$postUrl = curPageBaseUrl() . "/api/sohagame/payment.php";
\Logging\LogInfo("postUrl: " . $postUrl);
 
$payData = array("signed_request" => $signed_request, "spid" => $spid);
$ret = \CommFunc\DoPost($postUrl, $payData);
\Logging\LogInfo("ret: " . $ret);
echo $ret;
 
function do_signed($data, $secret)
{
    $payload = strtr(base64_encode(json_encode($data)), '+/', '-_');
    $sig = hash_hmac('sha256', $payload, $secret, $raw = true);
    $sig = base64_encode(strtr($sig, '+/', '-_'));
    $signed_request = $sig . "." . $payload;
    return $signed_request;
}
 
function curPageBaseUrl()
{
    $pageURL = 'http';
    if ($_SERVER["HTTPS"] == "on") {
        $pageURL .= "s";
    }
    $pageURL .= "://";
    if ($_SERVER["SERVER_PORT"] != "80") {
        $pageURL .= $_SERVER["SERVER_NAME"] . ":" . $_SERVER["SERVER_PORT"];
    } else {
        $pageURL .= $_SERVER["SERVER_NAME"];
    }
    // . $_SERVER["REQUEST_URI"]
    return $pageURL;
}