增加docke部署
This commit is contained in:
345
codes/agent/game-docker/api/sample/onlinepay/test.php
Normal file
345
codes/agent/game-docker/api/sample/onlinepay/test.php
Normal file
@@ -0,0 +1,345 @@
|
||||
<?php
|
||||
/// https://api.tscce.cn/sample/onlinepay/test.php
|
||||
define('USEDCHARSET', 'utf-8');
|
||||
|
||||
/// 这里定义公共变量
|
||||
$app_id = '14992192722868'; /// appid
|
||||
$dev_key = '14915485974028'; /// 开发者key
|
||||
$market_key = '0000'; /// 门店key
|
||||
$sign_key = '0000'; /// 签名key(暂时支付时不校验签名, 但是退款时将校验这个签名)
|
||||
|
||||
|
||||
|
||||
/// 接口返回用的信息类
|
||||
class ResultObject
|
||||
{
|
||||
public $error; /// 返回值: 0成功; 非0失败;
|
||||
public $error_code; /// 错误号
|
||||
public $msg; /// 错误信息
|
||||
public $data; /// 返回的数据
|
||||
|
||||
public function ResultObject($string)
|
||||
{
|
||||
$this->error = 0;
|
||||
$this->error_code = 0;
|
||||
$this->msg = null;
|
||||
$this->data = null;
|
||||
|
||||
$this->from_string($string);
|
||||
}
|
||||
|
||||
|
||||
public function to_array()
|
||||
{
|
||||
return (array)$this;
|
||||
}
|
||||
|
||||
public function to_string()
|
||||
{
|
||||
return json_encode($this, JSON_UNESCAPED_UNICODE);
|
||||
}
|
||||
|
||||
public function from_array($array)
|
||||
{
|
||||
foreach ($array as $key => $value)
|
||||
{
|
||||
if (property_exists($this, $key))
|
||||
{
|
||||
$this->$key = $value;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public function from_string($string)
|
||||
{
|
||||
return $this->from_array((array)json_decode($string));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @note 获取当前页面的完整连接
|
||||
* @return string
|
||||
*/
|
||||
function GetLocaleUrl()
|
||||
{
|
||||
$is_https =
|
||||
(isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') ||
|
||||
(isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') ||
|
||||
(isset($_SERVER['REQUEST_SCHEME']) && $_SERVER['REQUEST_SCHEME'] == 'https');
|
||||
|
||||
$request_scheme = $is_https ? 'https://' : 'http://';
|
||||
$hostname = $_SERVER['SERVER_NAME'];
|
||||
$hostport = (($is_https && '443' == $_SERVER['SERVER_PORT']) || (!$is_https && '80' == $_SERVER['SERVER_PORT'])) ? '' : ':' . intval($_SERVER['SERVER_PORT']);
|
||||
|
||||
return $request_scheme . $hostname . $hostport . $_SERVER['PHP_SELF'];
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @date 2017-03-04
|
||||
* @note 给参数按key的顺序排序。(支持递归)
|
||||
* @param mixed $parameter 要排序的参数
|
||||
* @return array
|
||||
* @auth 应俊
|
||||
*/
|
||||
function SortParam($parameter)
|
||||
{
|
||||
$parameter = (array)$parameter;
|
||||
foreach ($parameter as $k => $v)
|
||||
{
|
||||
if (is_array($v) || is_object($v))
|
||||
{
|
||||
$parameter[$k] = SortParam($v);
|
||||
}
|
||||
}
|
||||
|
||||
// 调用strcmp函数来排序,该函数区分大小写。
|
||||
uksort($parameter, 'strcmp');
|
||||
return $parameter;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @date 2017-03-06
|
||||
* @note 转换参数成字符串形式按key=value的形式,用&分隔)。
|
||||
* @param mixed $parameter 要转换的参数
|
||||
* @return string
|
||||
* @auth 应俊
|
||||
*/
|
||||
function ConvertParam($parameter)
|
||||
{
|
||||
$parameter = (array)$parameter;
|
||||
$return = '';
|
||||
foreach ($parameter as $k => $v)
|
||||
{
|
||||
if (is_array($v) || is_object($v))
|
||||
{
|
||||
$return .= sprintf('&%s={%s}', $k, ConvertParam($v));
|
||||
}
|
||||
else
|
||||
{
|
||||
$return .= sprintf('&%s=%s', $k, $v);
|
||||
}
|
||||
}
|
||||
|
||||
$sublen = mb_strlen('&', USEDCHARSET);
|
||||
$retlen = mb_strlen($return, USEDCHARSET);
|
||||
$return = mb_substr($return, $sublen, $retlen - $sublen, USEDCHARSET);
|
||||
return $return;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @date 2017-03-04
|
||||
* @note 为参数生成签名
|
||||
* @param mixed $parameter 要签名的参数
|
||||
* @param string $signkey 签名key
|
||||
* @return string
|
||||
* @auth 应俊
|
||||
*/
|
||||
function SignParameter($parameter, $signkey = '')
|
||||
{
|
||||
// 1:先把参数按参数名(key)从小到大排序
|
||||
$parameter = SortParam($parameter);
|
||||
|
||||
// 2:连接参数成一个字符串(按key=value的形式,用&分隔)。
|
||||
$return = ConvertParam($parameter);
|
||||
|
||||
// 3:结尾加上key=签名key
|
||||
$return .= '&key=' . $signkey;
|
||||
|
||||
// 4:md5加密这个字符串
|
||||
return md5($return);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param mixed $data
|
||||
* @return array|mixed
|
||||
*/
|
||||
function ChangePostData($data)
|
||||
{
|
||||
switch (gettype($data))
|
||||
{
|
||||
case 'array':
|
||||
{
|
||||
foreach ($data as $key => $value)
|
||||
{
|
||||
$data[$key] = ChangePostData($value);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case 'object':
|
||||
{
|
||||
$array = (array)$data;
|
||||
foreach ($array as $key => $value)
|
||||
{
|
||||
$data->$key = ChangePostData($value);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
{
|
||||
$data = preg_replace_callback('/\+/', function ($r) { return '%2B'; }, $data);
|
||||
$data = preg_replace_callback('/\&/', function ($r) { return '%26'; }, $data);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return $data;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @note 发送post请求
|
||||
* @param string $url
|
||||
* @param mixed $data
|
||||
* @return string
|
||||
*/
|
||||
function SendPost($url, $data)
|
||||
{
|
||||
$data = http_build_query(ChangePostData($data));
|
||||
|
||||
$opts = array(
|
||||
'http' => array(
|
||||
'method' => 'POST',
|
||||
'header' => "Content-type: application/x-www-form-urlencoded\r\n" . "Content-Length: " . strlen($data) . "\r\n",
|
||||
'content' => $data,
|
||||
),
|
||||
);
|
||||
|
||||
$context = stream_context_create($opts);
|
||||
$ret = file_get_contents($url, false, $context);
|
||||
$ret = trim($ret, "\xEF\xBB\xBF");
|
||||
return $ret;
|
||||
}
|
||||
|
||||
|
||||
$order_id = md5(time().rand(1000,9999));
|
||||
$notice_url = dirname(getLocaleUrl()) . '/notice.php'; /// 通知页面地址
|
||||
$return_url = dirname(getLocaleUrl()) . '/return.php'; /// 通知页面地址
|
||||
|
||||
|
||||
/// 登录
|
||||
$url = 'https://api.tscce.cn/api/login/ylnn';
|
||||
$data = array(
|
||||
'appid' => $app_id, /// appid
|
||||
'devkey' => $dev_key, /// 开发者key
|
||||
'market_key' => $market_key, /// 门店key
|
||||
'scode' => md5(date('Ymdhis') . rand(1000, 9999)), /// 随机数
|
||||
'agent_key' => 'i33v0llvp0euhd1n9qo1fM2RV8vtog4y', /// 代理号
|
||||
'game_key' => '7N0e0z2u2098pf1M2fj0kyB1D4n4ylkA', /// 渠道号
|
||||
'user_key' => '100000', /// 用户号
|
||||
'headImg' => '', /// 头像
|
||||
'nickname' => '100000', /// 昵称
|
||||
);
|
||||
$ret = SendPost($url, $data);
|
||||
$ret = new ResultObject($ret);
|
||||
|
||||
if ($ret->error)
|
||||
die($ret->msg);
|
||||
|
||||
$sid = $ret->data->sid;
|
||||
$scode = $ret->data->scode;
|
||||
|
||||
$fee = 1;
|
||||
$title = '支付测试';
|
||||
|
||||
$tdy_id = 1;
|
||||
$tdy_token = 1;
|
||||
?>
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Title</title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<form style="display:none;" id="frm" name="frm" method="post" action="https://api.tscce.cn/api/newpay/pay/online/">
|
||||
<input name="appid" type="text" value="<?php echo $app_id; ?>" />
|
||||
<input name="devkey" type="text" value="<?php echo $dev_key; ?>" />
|
||||
<input name="sid" type="text" value="<?php echo $sid; ?>" />
|
||||
<input name="scode" type="text" value="<?php echo $scode; ?>" />
|
||||
<input name="orderid" type="text" value="<?php echo $order_id; ?>" />
|
||||
<input name="fee" type="text" value="1" />
|
||||
<input name="title" type="text" value="支付测试" />
|
||||
<input name="notice_url" type="text" value="<?php echo $notice_url; ?>" />
|
||||
<input name="return_url" type="text" value="<?php echo $return_url; ?>" />
|
||||
<input name="paytype" type="text" value="9"/>
|
||||
<input name="p1" type="text" value="aaa"/>
|
||||
<input name="p2" type="text" value="bbb"/>
|
||||
<input name="version" type="text" value="1"/>
|
||||
<input name="sign" type="text" value=""/>
|
||||
</form>
|
||||
|
||||
<script>
|
||||
frm.submit();
|
||||
<?php
|
||||
/*
|
||||
$html = <<<EOL
|
||||
var add_formchild = function (name, value) {
|
||||
var edt = document.createElement('input');
|
||||
edt.type = 'text';
|
||||
edt.id = name;
|
||||
edt.name = name;
|
||||
edt.value = value;
|
||||
frmPost.appendChild(edt);
|
||||
};
|
||||
|
||||
function startpay() {
|
||||
var frmPost = document.createElement('form');
|
||||
frmPost.id = '____frmPost____';
|
||||
frmPost.name = '____frmPost____';
|
||||
frmPost.method = 'post';
|
||||
frmPost.action = 'https://api.tscce.cn/api/newpay/pay/online/';
|
||||
var add_formchild = function (name, value) {
|
||||
var edt = document.createElement('input');
|
||||
edt.type = 'text';
|
||||
edt.id = name;
|
||||
edt.name = name;
|
||||
edt.value = value;
|
||||
frmPost.appendChild(edt);
|
||||
};
|
||||
add_formchild('appid', '{$app_id}');
|
||||
add_formchild('devkey', '{$dev_key}');
|
||||
add_formchild('market_key', '{$market_key}');
|
||||
add_formchild('sid', '{$sid}');
|
||||
add_formchild('scode', '{$scode}');
|
||||
add_formchild('tdyid', '{$tdy_id}');
|
||||
add_formchild('tdytoken', '{$tdy_token}');
|
||||
add_formchild('fee', '{$fee}'); /// 本次需要支付的金额,单位为分
|
||||
add_formchild('orderid', '{$order_id}'); /// 订单编号
|
||||
add_formchild('title', '{$title}'); /// 本次支付主题
|
||||
add_formchild('return_url', '{$return_url}'); /// 支付成功后的通知回调地址, 异步
|
||||
add_formchild('notice_url', '{$return_url}'); /// 支付成功后的回跳地址, 同步
|
||||
add_formchild('paytype', '1001');
|
||||
add_formchild('version', 1);
|
||||
add_formchild('sign', '');
|
||||
|
||||
/// form表单提交
|
||||
document.body.appendChild(frmPost);
|
||||
frmPost.submit();
|
||||
frmPost.remove();
|
||||
}
|
||||
|
||||
startpay();
|
||||
|
||||
EOL;
|
||||
|
||||
echo $html, PHP_EOL;
|
||||
*/
|
||||
?>
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user