open-withdrawal-demo/php/demo.php

63 lines
2.2 KiB
PHP

<?php
require __DIR__ . '/sign.php';
$BASE_URL = rtrim(getenv('BASE_URL') ?: 'https://example.com', '/');
$ACCESS_KEY = getenv('ACCESS_KEY') ?: 'your_access_key';
$SECRET_KEY = getenv('SECRET_KEY') ?: 'your_secret_key';
$PAY_CHANNEL_ID = getenv('PAY_CHANNEL_ID') ?: '821';
function post_json(string $path, array $body): array {
global $BASE_URL, $SECRET_KEY;
$body['Sign'] = build_sign($body, $SECRET_KEY);
$ch = curl_init($BASE_URL . $path);
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
CURLOPT_POSTFIELDS => json_encode($body, JSON_UNESCAPED_UNICODE),
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
]);
$resp = curl_exec($ch);
if ($resp === false) {
throw new RuntimeException(curl_error($ch));
}
curl_close($ch);
return json_decode($resp, true) ?: [];
}
$cmd = $argv[1] ?? '';
if ($cmd === 'balance') {
echo json_encode(post_json('/api/apiv1/open/withdrawal/querybalance', [
'Timestamp' => time(),
'AccessKey' => $ACCESS_KEY,
]), JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT), PHP_EOL;
} elseif ($cmd === 'submit') {
$orderNo = 'DEMO' . date('YmdHis') . sprintf('%04d', random_int(0, 9999));
echo json_encode(post_json('/api/apiv1/open/withdrawal/submit', [
'Timestamp' => time(),
'AccessKey' => $ACCESS_KEY,
'PayChannelId' => $PAY_CHANNEL_ID,
'OrderNo' => $orderNo,
'Amount' => '100.01',
'CallbackUrl' => 'https://xxxxx.com/xxxx/callback',
'Ext' => '-',
'Payee' => '张三',
'PayeeNo' => '6235753100001261596',
'PayeeAddress' => '招商银行',
]), JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT), PHP_EOL;
} elseif ($cmd === 'query') {
$orderNo = $argv[2] ?? '';
if ($orderNo === '') {
fwrite(STDERR, "usage: php demo.php query <OrderNo>\n");
exit(1);
}
echo json_encode(post_json('/api/apiv1/open/withdrawal/queryorder', [
'Timestamp' => time(),
'AccessKey' => $ACCESS_KEY,
'OrderNo' => $orderNo,
]), JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT), PHP_EOL;
} else {
fwrite(STDERR, "usage: php demo.php balance|submit|query <OrderNo>\n");
exit(1);
}