增加docke部署
This commit is contained in:
151
codes/agent/game-docker/api/sample/transfer/css/style.css
Normal file
151
codes/agent/game-docker/api/sample/transfer/css/style.css
Normal file
@@ -0,0 +1,151 @@
|
||||
body{
|
||||
font-size: 14px;
|
||||
font-family: "微软雅黑";
|
||||
position: relative;
|
||||
}
|
||||
body,ul,li,article{
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
ul,li{
|
||||
list-style: none;
|
||||
}
|
||||
a{
|
||||
text-decoration: none;
|
||||
color: inherit;
|
||||
}
|
||||
.text-center{
|
||||
text-align: center;
|
||||
}
|
||||
.red{
|
||||
color: red;
|
||||
}
|
||||
.btn{
|
||||
display: inline-block;
|
||||
padding: 8px 14px;
|
||||
margin-bottom: 0;
|
||||
font-size: 14px;
|
||||
font-weight: 400;
|
||||
line-height: 1.42857143;
|
||||
text-align: center;
|
||||
white-space: nowrap;
|
||||
vertical-align: middle;
|
||||
-ms-touch-action: manipulation;
|
||||
touch-action: manipulation;
|
||||
cursor: pointer;
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
-ms-user-select: none;
|
||||
user-select: none;
|
||||
background-image: none;
|
||||
border: 1px solid transparent;
|
||||
/*border-radius: 4px;*/
|
||||
text-decoration: none;
|
||||
}
|
||||
.btn-blue{
|
||||
color: #fff;
|
||||
background: -moz-linear-gradient(top, #41b8ff, #0b53bb);
|
||||
background: -webkit-gradient(linear,0% 0%,0% 100%,from(#41b8ff),to(#0b53bb));
|
||||
background: -webkit-linear-gradient(top, #41b8ff, #0b53bb);
|
||||
background: -o-linear-gradient(top, #41b8ff, #0b53bb);
|
||||
background: -ms-linear-gradient(top, #41b8ff, #0b53bb);
|
||||
border-color: rgb(253, 253, 254);
|
||||
}
|
||||
.header{
|
||||
background-color: #2b2b2b;
|
||||
color: #ffffff;
|
||||
height: 40px;
|
||||
line-height: 40px;
|
||||
text-align: center;
|
||||
position: fixed;
|
||||
width: 100%;
|
||||
}
|
||||
.header .img{
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 7px;
|
||||
padding-left: 10px;
|
||||
height: 25px;
|
||||
}
|
||||
.neirong{
|
||||
padding-top: 40px;
|
||||
}
|
||||
.neirong ul{
|
||||
padding-top: 15px;
|
||||
}
|
||||
.neirong ul li{
|
||||
padding: 15px 0;
|
||||
text-align: center;
|
||||
}
|
||||
.neirong ul li .name{
|
||||
text-align: right;
|
||||
width: 100px;
|
||||
display: inline-block;
|
||||
}
|
||||
.neirong ul li .input{
|
||||
width: 250px;
|
||||
height: 35px;
|
||||
line-height: 35px;
|
||||
border-top: transparent;
|
||||
border-left: transparent;
|
||||
border-right: transparent;
|
||||
border-bottom: 1px solid #000;
|
||||
}
|
||||
.foot_btn{
|
||||
width: 250px;margin-top: 30px;height: 35px;line-height: 35px;
|
||||
}
|
||||
|
||||
.shaoma{
|
||||
z-index: 3;
|
||||
position: absolute;
|
||||
text-align: center;
|
||||
top: 35%;
|
||||
display: none;
|
||||
width: 100%;
|
||||
}
|
||||
.shaoma .xians{
|
||||
width: 18%;
|
||||
min-width: 312px;
|
||||
height: 100%;
|
||||
border: 1px solid #d8d8d8;
|
||||
position: relative;
|
||||
background-color: #ffffff;
|
||||
/* left: 41%;
|
||||
right: 41%;*/
|
||||
margin: 0 auto;
|
||||
|
||||
}
|
||||
.shaoma .xians .img_close{
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 0;
|
||||
}
|
||||
.img-responsive{
|
||||
width: 100%;
|
||||
max-width: 100%;
|
||||
height: auto;
|
||||
}
|
||||
.mt_20{
|
||||
margin-top: 20px;
|
||||
}
|
||||
.shaoma .xians .qing{
|
||||
width: 70%;
|
||||
height: 80px;
|
||||
background-color: #445e84;
|
||||
color: #ffffff;
|
||||
margin: 0 auto 20px auto;
|
||||
}
|
||||
.shaoma .xians .qing .sys{
|
||||
width: 50px;
|
||||
height: 50px;
|
||||
display: inline-block;
|
||||
float: left;
|
||||
margin: 15px;
|
||||
}
|
||||
.shaoma .xians .qing span{
|
||||
margin: 10px;
|
||||
height: 70px;
|
||||
display: block;
|
||||
padding-top: 7%;
|
||||
}
|
||||
|
||||
BIN
codes/agent/game-docker/api/sample/transfer/img/close.png
Normal file
BIN
codes/agent/game-docker/api/sample/transfer/img/close.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 280 B |
BIN
codes/agent/game-docker/api/sample/transfer/img/sys.jpg
Normal file
BIN
codes/agent/game-docker/api/sample/transfer/img/sys.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 3.8 KiB |
BIN
codes/agent/game-docker/api/sample/transfer/img/timg.jpg
Normal file
BIN
codes/agent/game-docker/api/sample/transfer/img/timg.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 33 KiB |
591
codes/agent/game-docker/api/sample/transfer/index.php
Normal file
591
codes/agent/game-docker/api/sample/transfer/index.php
Normal file
@@ -0,0 +1,591 @@
|
||||
<?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;
|
||||
}
|
||||
|
||||
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>转账测试</title>
|
||||
<meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no">
|
||||
<link href="css/style.css?v=2" rel="stylesheet">
|
||||
|
||||
<script src="js/jquery-2.1.4.min.js"></script>
|
||||
<script src="js/common.js"></script>
|
||||
</head>
|
||||
<body id="mainbody">
|
||||
<?php
|
||||
$bankList = array(
|
||||
array('code' => 1, 'name' => '中国工商银行', ),
|
||||
array('code' => 2, 'name' => '建设银行', ),
|
||||
array('code' => 3, 'name' => '中国农业银行', ),
|
||||
array('code' => 4, 'name' => '中国邮政储蓄银行', ),
|
||||
array('code' => 5, 'name' => '中国银行', ),
|
||||
array('code' => 6, 'name' => '交通银行', ),
|
||||
array('code' => 7, 'name' => '招商银行', ),
|
||||
array('code' => 8, 'name' => '光大银行', ),
|
||||
array('code' => 9, 'name' => '浦发银行', ),
|
||||
array('code' => 10, 'name' => '华夏银行', ),
|
||||
array('code' => 11, 'name' => '广东发展银行', ),
|
||||
array('code' => 12, 'name' => '中信银行', ),
|
||||
array('code' => 13, 'name' => '兴业银行', ),
|
||||
array('code' => 14, 'name' => '民生银行', ),
|
||||
array('code' => 15, 'name' => '杭州银行', ),
|
||||
array('code' => 16, 'name' => '上海银行', ),
|
||||
array('code' => 17, 'name' => '宁波银行', ),
|
||||
array('code' => 18, 'name' => '平安银行', ),
|
||||
array('code' => 23, 'name' => '渤海银行', ),
|
||||
array('code' => 25, 'name' => '徽商银行', ),
|
||||
array('code' => 26, 'name' => '江苏银行', ),
|
||||
array('code' => 32, 'name' => '浙商银行', ),
|
||||
array('code' => 33, 'name' => '北京银行', ),
|
||||
array('code' => 36, 'name' => '潍坊银行', ),
|
||||
array('code' => 38, 'name' => '浙江泰隆商业银行', ),
|
||||
array('code' => 39, 'name' => '济宁银行', ),
|
||||
array('code' => 40, 'name' => '台州银行', ),
|
||||
array('code' => 41, 'name' => '汉口银行', ),
|
||||
array('code' => 42, 'name' => '安徽省农村信用社联合社', ),
|
||||
array('code' => 43, 'name' => '郑州银行', ),
|
||||
array('code' => 44, 'name' => '中原银行', ),
|
||||
array('code' => 45, 'name' => '宜宾商业银行', ),
|
||||
array('code' => 46, 'name' => '莱商银行', ),
|
||||
array('code' => 47, 'name' => '日照银行', ),
|
||||
array('code' => 48, 'name' => '常熟农商银行', ),
|
||||
array('code' => 49, 'name' => '北京农商银行', ),
|
||||
array('code' => 50, 'name' => '福建省农村信用社联合社', ),
|
||||
array('code' => 51, 'name' => '齐商银行', ),
|
||||
array('code' => 52, 'name' => '云南省农村信用社联合社', ),
|
||||
array('code' => 53, 'name' => '山东省农村信用社联合社', ),
|
||||
array('code' => 54, 'name' => '广东华兴银行', ),
|
||||
array('code' => 55, 'name' => '江西银行', ),
|
||||
array('code' => 56, 'name' => '东营银行', ),
|
||||
array('code' => 57, 'name' => '浙江稠州商业银行', ),
|
||||
array('code' => 58, 'name' => '重庆农村商业银行', ),
|
||||
array('code' => 59, 'name' => '晋城银行', ),
|
||||
array('code' => 60, 'name' => '秦农银行', ),
|
||||
array('code' => 61, 'name' => '长安银行', ),
|
||||
array('code' => 62, 'name' => '成都银行', ),
|
||||
array('code' => 63, 'name' => '恒丰银行', ),
|
||||
array('code' => 64, 'name' => '承德银行', ),
|
||||
array('code' => 65, 'name' => '绍兴银行', ),
|
||||
array('code' => 66, 'name' => '广东南粤银行', ),
|
||||
array('code' => 67, 'name' => '青岛银行', ),
|
||||
array('code' => 68, 'name' => '江苏长江商行', ),
|
||||
array('code' => 69, 'name' => '包商银行', ),
|
||||
array('code' => 70, 'name' => '富滇银行', ),
|
||||
array('code' => 71, 'name' => '自贡市商业银行', ),
|
||||
array('code' => 72, 'name' => '湖北农信', ),
|
||||
array('code' => 73, 'name' => '浙江农信', ),
|
||||
array('code' => 74, 'name' => '葫芦岛银行', ),
|
||||
array('code' => 75, 'name' => '昆仑银行', ),
|
||||
array('code' => 76, 'name' => '苏州银行', ),
|
||||
array('code' => 77, 'name' => '湖州银行', ),
|
||||
array('code' => 78, 'name' => '泉州银行', ),
|
||||
array('code' => 79, 'name' => '广州农村商业银行', ),
|
||||
array('code' => 81, 'name' => '太仓农村商业银行', ),
|
||||
array('code' => 82, 'name' => '烟台银行', ),
|
||||
array('code' => 83, 'name' => '上饶银行', ),
|
||||
array('code' => 84, 'name' => '绵阳市商业银行', ),
|
||||
array('code' => 85, 'name' => '德州银行', ),
|
||||
array('code' => 86, 'name' => '广西农村信用社', ),
|
||||
array('code' => 87, 'name' => '柳州银行', ),
|
||||
array('code' => 88, 'name' => '新韩银行中国', ),
|
||||
array('code' => 89, 'name' => '长沙银行', ),
|
||||
array('code' => 90, 'name' => '黄河农村商业银行', ),
|
||||
array('code' => 91, 'name' => '鞍山银行', ),
|
||||
array('code' => 92, 'name' => '龙江银行', ),
|
||||
array('code' => 93, 'name' => '河北银行', ),
|
||||
array('code' => 94, 'name' => '内蒙古银行', ),
|
||||
array('code' => 95, 'name' => '吉林农村信用社', ),
|
||||
array('code' => 96, 'name' => '浙江三门银座村镇银行', ),
|
||||
array('code' => 97, 'name' => '东莞银行', ),
|
||||
array('code' => 98, 'name' => '泰安银行', ),
|
||||
array('code' => 99, 'name' => '桂林银行股份有限公司', ),
|
||||
array('code' => 100, 'name' => '昆山农村商业银行', ),
|
||||
array('code' => 101, 'name' => '攀枝花市商业银行', ),
|
||||
array('code' => 102, 'name' => '西安银行', ),
|
||||
array('code' => 103, 'name' => '营口银行', ),
|
||||
array('code' => 104, 'name' => '江苏省农村信用社联合社', ),
|
||||
array('code' => 105, 'name' => '顺德农村商业银行', ),
|
||||
array('code' => 106, 'name' => '张家港农村商业银行', ),
|
||||
array('code' => 107, 'name' => '重庆黔江银座村镇银行', ),
|
||||
array('code' => 108, 'name' => '临商银行', ),
|
||||
array('code' => 109, 'name' => '洛阳银行', ),
|
||||
array('code' => 110, 'name' => '邢台银行', ),
|
||||
array('code' => 111, 'name' => '韩亚银行', ),
|
||||
array('code' => 112, 'name' => '广西北部湾银行', ),
|
||||
array('code' => 113, 'name' => '张家口市商业银行', ),
|
||||
array('code' => 114, 'name' => '珠海华润银行', ),
|
||||
array('code' => 115, 'name' => '天津银行', ),
|
||||
array('code' => 116, 'name' => '阜新银行', ),
|
||||
array('code' => 117, 'name' => '吴江农村商业银行', ),
|
||||
array('code' => 118, 'name' => '友利银行', ),
|
||||
array('code' => 119, 'name' => '北京顺义银座村镇银行', ),
|
||||
array('code' => 120, 'name' => '晋商银行', ),
|
||||
array('code' => 121, 'name' => '赣州银行', ),
|
||||
array('code' => 122, 'name' => '鄞州银行', ),
|
||||
array('code' => 123, 'name' => '兰州银行', ),
|
||||
array('code' => 124, 'name' => '锦州银行', ),
|
||||
array('code' => 125, 'name' => '邯郸市商业银行', ),
|
||||
array('code' => 126, 'name' => '深圳福田银座村镇银行', ),
|
||||
array('code' => 127, 'name' => '东莞农村商业银行', ),
|
||||
array('code' => 128, 'name' => '乌鲁木齐市商业银行', ),
|
||||
array('code' => 129, 'name' => '浙江景宁银座村镇银行', ),
|
||||
array('code' => 130, 'name' => '威海市商业银行', ),
|
||||
array('code' => 131, 'name' => '海南省农村信用社', ),
|
||||
array('code' => 132, 'name' => '商丘银行', ),
|
||||
array('code' => 133, 'name' => '鄂尔多斯银行', ),
|
||||
array('code' => 134, 'name' => '江西赣州银座村镇银行', ),
|
||||
array('code' => 135, 'name' => '天津农商银行', ),
|
||||
array('code' => 136, 'name' => '重庆银行', ),
|
||||
array('code' => 137, 'name' => '宁夏银行', ),
|
||||
array('code' => 138, 'name' => '浙江民泰商业银行', ),
|
||||
array('code' => 140, 'name' => '长城华西银行', ),
|
||||
array('code' => 141, 'name' => '廊坊银行', ),
|
||||
array('code' => 142, 'name' => '沧州银行', ),
|
||||
array('code' => 143, 'name' => '福建海峡银行', ),
|
||||
array('code' => 144, 'name' => '嘉兴银行', ),
|
||||
array('code' => 145, 'name' => '吉林银行', ),
|
||||
array('code' => 146, 'name' => '青海银行', ),
|
||||
array('code' => 147, 'name' => '重庆渝北银座村镇银行', ),
|
||||
array('code' => 148, 'name' => '枣庄银行', ),
|
||||
);
|
||||
$bankListStr = '';
|
||||
foreach($bankList as $v) {
|
||||
if($v['code'] == 9) {
|
||||
$bankListStr .= '<option value=' . $v['code'] . ' selected>' . $v['name'] . '</option>';
|
||||
} else {
|
||||
$bankListStr .= '<option value=' . $v['code'] . '>' . $v['name'] . '</option>';
|
||||
}
|
||||
}
|
||||
//"bank_id":"银行编号","type":"对公对私","account_no":"收款人帐号","account_name":"收款人姓名","money":"付款金额","reason":"付款理由","province":"省份","city":"城市","bank_name":"收款支行名称"
|
||||
if (!isset($_POST['account_list'])) {
|
||||
$html = <<<EOL
|
||||
<form style="display:none;" id="frm" name="frm" method="post" action="">
|
||||
<input id = 'account_list' name="account_list" type="text" value="" />
|
||||
<input id = 'transfer_type' name="transfer_type" type="text" value="" />
|
||||
</form>
|
||||
|
||||
<header class="header">
|
||||
<span>支付测试</span>
|
||||
</header>
|
||||
<!-- 转账类型 -->
|
||||
<div class="neirong">
|
||||
<ul>
|
||||
<li>
|
||||
<span class="name">转账类型:</span>
|
||||
<select id='pay_type' class="input" style="width: 250px;" onchange="pay_type()">
|
||||
<!--option value='1'>银联</option-->
|
||||
<option value="2" selected>支付宝</option>
|
||||
<!--option value="3">微信</option-->
|
||||
<option value="4">汇元</option>
|
||||
</select>
|
||||
<sapn class="red">*</sapn>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- /转账类型 -->
|
||||
|
||||
<div class="neirong" id="pay_params_areas" style="padding-top: 0">
|
||||
<!-- 汇付宝 -->
|
||||
<form id="form_4" style="display: none">
|
||||
<ul>
|
||||
<li>
|
||||
<span class="name">银行编号:</span>
|
||||
<select id='bank_id' name='bank_id' class="input" style="width: 250px;">
|
||||
{$bankListStr}
|
||||
</select>
|
||||
<sapn class="red">*</sapn>
|
||||
</li>
|
||||
<li>
|
||||
<span class="name">对公对私:</span>
|
||||
<select id='type' name='type' class="input" style="width: 250px;">
|
||||
<option value=0>对私</option>
|
||||
<option value=1>对公</option>
|
||||
</select>
|
||||
<sapn class="red">*</sapn>
|
||||
</li>
|
||||
<li>
|
||||
<span class="name">收款人帐号:</span>
|
||||
<input id='account_no' name='account_no' value='' class="input">
|
||||
<sapn class="red">*</sapn>
|
||||
</li>
|
||||
<li>
|
||||
<span class="name">收款人姓名:</span>
|
||||
<input id='account_name' name='account_name' value='' class="input">
|
||||
<sapn class="red">*</sapn>
|
||||
</li>
|
||||
<li>
|
||||
<span class="name">付款金额:</span>
|
||||
<input id='money' name='money' value='' class="input">
|
||||
<sapn class="red">*</sapn>
|
||||
</li>
|
||||
<li>
|
||||
<span class="name">付款理由:</span>
|
||||
<input id='reason' name='reason' value='' class="input">
|
||||
<sapn class="red">*</sapn>
|
||||
</li>
|
||||
<li>
|
||||
<span class="name">省份:</span>
|
||||
<input id='province' name='province' value='' class="input">
|
||||
<sapn class="red">*</sapn>
|
||||
</li>
|
||||
<li>
|
||||
<span class="name">城市:</span>
|
||||
<input id='city' name='city' value='' class="input">
|
||||
<sapn class="red">*</sapn>
|
||||
</li>
|
||||
<li>
|
||||
<span class="name">收款支行名称:</span>
|
||||
<input id='bank_name' name='bank_name' value='' class="input">
|
||||
<sapn class="red">*</sapn>
|
||||
</li>
|
||||
</ul>
|
||||
</form>
|
||||
<!-- /汇付宝 -->
|
||||
|
||||
<!-- 支付宝 -->
|
||||
<form id="form_2">
|
||||
<ul>
|
||||
<li>
|
||||
<span class="name">账号:</span>
|
||||
<input id='account_no' name='account_no' value='' class="input">
|
||||
<sapn class="red">*</sapn>
|
||||
</li>
|
||||
<li>
|
||||
<span class="name">名称:</span>
|
||||
<input id='account_name' name='account_name' value='' class="input">
|
||||
<sapn class="red">*</sapn>
|
||||
</li>
|
||||
<li>
|
||||
<span class="name">金额:</span>
|
||||
<input id='money' name='money' value='' class="input">
|
||||
<sapn class="red">*</sapn>
|
||||
</li>
|
||||
<li>
|
||||
<span class="name">备注:</span>
|
||||
<input id='remark' name='remark' value='' class="input">
|
||||
<sapn class="red">*</sapn>
|
||||
</li>
|
||||
</ul>
|
||||
</form>
|
||||
<!-- /支付宝 -->
|
||||
</div>
|
||||
|
||||
<footer class="text-center">
|
||||
<a href="javascript:;" onclick="submit_data();" class="btn btn-blue foot_btn">提交</a>
|
||||
</footer>
|
||||
|
||||
<script language='javascript'>
|
||||
function ID(id) {
|
||||
return document.getElementById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过选择判断哪个form表单显示
|
||||
*/
|
||||
function pay_type() {
|
||||
// 支付类型
|
||||
var pay_type = $("#pay_type").val();
|
||||
var pay_target_form = '#form_'+pay_type;
|
||||
// form全部隐藏
|
||||
$("#pay_params_areas form").hide();
|
||||
// 显示指定form
|
||||
$(pay_target_form).show();
|
||||
}
|
||||
|
||||
/**
|
||||
* 把选中的form表单数据提交
|
||||
*/
|
||||
function submit_data() {
|
||||
var pay_type = $("#pay_type").val();
|
||||
var target = '#form_'+pay_type;
|
||||
var params = $(target).serializeArray();
|
||||
var tmp = {};
|
||||
params.forEach(function(value, index) {
|
||||
tmp[value['name']] = value['value'];
|
||||
});
|
||||
// 转账类型
|
||||
//tmp['transfer_type'] = pay_type;
|
||||
|
||||
console.log(tmp);
|
||||
|
||||
ID('account_list').value=JSON.stringify(tmp);
|
||||
// 转账类型
|
||||
ID('transfer_type').value=pay_type;
|
||||
frm.submit();
|
||||
}
|
||||
</script>
|
||||
EOL;
|
||||
|
||||
} else {
|
||||
$account_list = $_POST['account_list'];
|
||||
$transfer_type = $_POST['transfer_type'];
|
||||
$order_no = date('YmdHis') . rand(1000, 9999); /// 随机生成一个订单号
|
||||
$notice_url = dirname(getLocaleUrl()) . '/notice.php'; /// 通知页面地址
|
||||
$return_url = getLocaleUrl(); /// 回调地址
|
||||
|
||||
$data = array(
|
||||
'appid' => $app_id, /// appid
|
||||
'devkey' => $dev_key, /// 开发者key
|
||||
'market_key' => $market_key, /// 门店key
|
||||
'order_no' => $order_no, /// 订单号
|
||||
'account_list' => $account_list, /// 收款账户列表
|
||||
'notice_url' => $notice_url, /// 回调页面地址(异步)
|
||||
'return_url' => $return_url, /// 回调页面地址(同步)
|
||||
'transfer_type' => $transfer_type, /// 支付类型(可通过接口获取所有支持的类型列表)
|
||||
'p1' => 'p1', /// 附加的其他参数, 回调时会原样返回, 参数名可自定义
|
||||
'p2' => 'p2', /// 附加的其他参数, 回调时会原样返回, 参数名可自定义
|
||||
'version' => '1', /// 接口版本号, 整型, 目前只支持1
|
||||
);
|
||||
$sign = SignParameter($data, $sign_key); /// 对参数进行签名(必须)
|
||||
|
||||
$html = <<<EOL
|
||||
<form style="display:none;" id="frm" name="frm" method="post" action="https://api2.daoqijuyou77.cn/api/transfer/transfer/">
|
||||
<input name='appid' type='text' value='{$data["appid"]}' />
|
||||
<input name='devkey' type='text' value='{$data["devkey"]}' />
|
||||
<input name='market_key' type='text' value='{$data["market_key"]}' />
|
||||
<input name='order_no' type='text' value='{$data["order_no"]}' />
|
||||
<input name='account_list' type='text' value='{$data["account_list"]}' />
|
||||
<input name='notice_url' type='text' value='{$data["notice_url"]}' />
|
||||
<input name='return_url' type='text' value='{$data["return_url"]}' />
|
||||
<input name='transfer_type' type='text' value='{$data["transfer_type"]}' />
|
||||
<input name='p1' type='text' value='{$data["p1"]}'/>
|
||||
<input name='p2' type='text' value='{$data["p2"]}'/>
|
||||
<input name='version' type='text' value='{$data["version"]}'/>
|
||||
<input name='sign' type='text' value='{$sign}'/>
|
||||
</form>
|
||||
|
||||
<script>
|
||||
frm.submit();
|
||||
</script>
|
||||
EOL;
|
||||
}
|
||||
|
||||
echo $html;
|
||||
?>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
288
codes/agent/game-docker/api/sample/transfer/index1.php
Normal file
288
codes/agent/game-docker/api/sample/transfer/index1.php
Normal file
@@ -0,0 +1,288 @@
|
||||
<?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;
|
||||
}
|
||||
|
||||
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>转账测试</title>
|
||||
<meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no">
|
||||
<link href="css/style.css" rel="stylesheet">
|
||||
|
||||
<script src="js/jquery-2.1.4.min.js"></script>
|
||||
<script src="js/common.js"></script>
|
||||
</head>
|
||||
<body id="mainbody">
|
||||
<?php
|
||||
|
||||
//"bank_id":"银行编号","type":"对公对私","account_no":"收款人帐号","account_name":"收款人姓名","money":"付款金额","reason":"付款理由","province":"省份","city":"城市","bank_name":"收款支行名称"
|
||||
//$account_list = $_POST['account_list'];
|
||||
$account_list = '{"account_no":"fantasyfinal@126.com","account_name":"应俊","money":"0.10","remark":"转账备注"}';
|
||||
$order_no = date('YmdHis') . rand(1000, 9999); /// 随机生成一个订单号
|
||||
$notice_url = dirname(getLocaleUrl()) . '/notice.php'; /// 通知页面地址
|
||||
$return_url = getLocaleUrl(); /// 回调地址
|
||||
|
||||
$data = array(
|
||||
'appid' => $app_id, /// appid
|
||||
'devkey' => $dev_key, /// 开发者key
|
||||
'market_key' => $market_key, /// 门店key
|
||||
'order_no' => $order_no, /// 订单号
|
||||
'account_list' => $account_list, /// 收款账户列表
|
||||
'notice_url' => $notice_url, /// 回调页面地址(异步)
|
||||
'return_url' => $return_url, /// 回调页面地址(同步)
|
||||
'transfer_type' => '2', /// 支付类型(可通过接口获取所有支持的类型列表)
|
||||
'p1' => 'p1', /// 附加的其他参数, 回调时会原样返回, 参数名可自定义
|
||||
'p2' => 'p2', /// 附加的其他参数, 回调时会原样返回, 参数名可自定义
|
||||
'version' => '1', /// 接口版本号, 整型, 目前只支持1
|
||||
);
|
||||
$sign = SignParameter($data, $sign_key); /// 对参数进行签名(必须)
|
||||
|
||||
$html = <<<EOL
|
||||
<form style="display:none;" id="frm" name="frm" method="post" action="https://api2.tscce.cn/api/transfer/transfer/">
|
||||
<input name='appid' type='text' value='{$data["appid"]}' />
|
||||
<input name='devkey' type='text' value='{$data["devkey"]}' />
|
||||
<input name='market_key' type='text' value='{$data["market_key"]}' />
|
||||
<input name='order_no' type='text' value='{$data["order_no"]}' />
|
||||
<input name='account_list' type='text' value='{$data["account_list"]}' />
|
||||
<input name='notice_url' type='text' value='{$data["notice_url"]}' />
|
||||
<input name='return_url' type='text' value='{$data["return_url"]}' />
|
||||
<input name='transfer_type' type='text' value='{$data["transfer_type"]}' />
|
||||
<input name='p1' type='text' value='{$data["p1"]}'/>
|
||||
<input name='p2' type='text' value='{$data["p2"]}'/>
|
||||
<input name='version' type='text' value='{$data["version"]}'/>
|
||||
<input name='sign' type='text' value='{$sign}'/>
|
||||
</form>
|
||||
|
||||
<script>
|
||||
frm.submit();
|
||||
</script>
|
||||
EOL;
|
||||
|
||||
echo $html;
|
||||
?>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
216
codes/agent/game-docker/api/sample/transfer/js/common.js
Normal file
216
codes/agent/game-docker/api/sample/transfer/js/common.js
Normal file
@@ -0,0 +1,216 @@
|
||||
//var g_appid = '14919772144482';
|
||||
//var g_devkey = '14915485974028';
|
||||
var g_RequestAddress = 'https://api2.tscce.cn';
|
||||
|
||||
/**
|
||||
* @note 字符串格式化
|
||||
* @param fn_objs
|
||||
* @returns object
|
||||
* @constructor
|
||||
*/
|
||||
Overload = function (fn_objs) {
|
||||
var is_match = function (x, y) {
|
||||
if (x == y) {
|
||||
return true;
|
||||
}
|
||||
if (x.indexOf("*") == -1) {
|
||||
return false;
|
||||
}
|
||||
|
||||
var x_arr = x.split(","), y_arr = y.split(",");
|
||||
if (x_arr.length != y_arr.length) {
|
||||
return false;
|
||||
}
|
||||
|
||||
while (x_arr.length) {
|
||||
var x_first = x_arr.shift(), y_first = y_arr.shift();
|
||||
if (x_first != "*" && x_first != y_first) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
};
|
||||
var ret = function () {
|
||||
var args = arguments
|
||||
, args_len = args.length
|
||||
, args_types = []
|
||||
, args_type
|
||||
, fn_objs = args.callee._fn_objs
|
||||
, match_fn = function () {
|
||||
};
|
||||
|
||||
for (var i = 0; i < args_len; i++) {
|
||||
var type = typeof args[i];
|
||||
type == "object" && (args[i].length > -1) && (type = "array");
|
||||
args_types.push(type);
|
||||
}
|
||||
args_type = args_types.join(",");
|
||||
for (var k in fn_objs) {
|
||||
if (is_match(k, args_type)) {
|
||||
match_fn = fn_objs[k];
|
||||
break;
|
||||
}
|
||||
}
|
||||
return match_fn.apply(this, args);
|
||||
};
|
||||
ret._fn_objs = fn_objs;
|
||||
return ret;
|
||||
};
|
||||
|
||||
/**
|
||||
* 通过对字符串进行伪重载实现对字符串对象的格式化功能
|
||||
* @type {Object}
|
||||
*/
|
||||
String.prototype.format = Overload({
|
||||
|
||||
"array": function (params) {
|
||||
var reg = /{(\d+)}/gm;
|
||||
return this.replace(reg, function (match, name) {
|
||||
return params[~~name];
|
||||
});
|
||||
},
|
||||
|
||||
"object": function (param) {
|
||||
var reg = /{([^{}]+)}/gm;
|
||||
return this.replace(reg, function (match, name) {
|
||||
return param[name];
|
||||
});
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
|
||||
function getQueryString(name) {
|
||||
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
|
||||
var r = window.location.search.substr(1).match(reg);
|
||||
if (r != null) {
|
||||
return r[2];
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
//------------设置Cookie参数方法------------//
|
||||
function setCookie(name, value) {
|
||||
var Days = 30; //此 cookie 将被保存 30 天
|
||||
var exp = new Date();
|
||||
exp.setTime(exp.getTime() + Days * 24 * 60 * 60 * 1000);
|
||||
document.cookie = name + "=" + value + ";expires=" + exp.toGMTString();
|
||||
}
|
||||
|
||||
|
||||
//------------获取Cookie参数方法------------//
|
||||
function getCookie(name) {
|
||||
var arr = document.cookie.match(new RegExp("(^| )" + name + "=([^;]*)(;|$)"));
|
||||
if (arr != null) {
|
||||
return arr[2];
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
//------------删除Cookie参数方法------------//
|
||||
function delCookie(name) {
|
||||
var exp = new Date();
|
||||
exp.setTime(exp.getTime() - 1);
|
||||
var cval = getCookie(name);
|
||||
if (cval != null) {
|
||||
document.cookie = name + "=" + cval + ";expires=" + exp.toGMTString();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取随机数
|
||||
*/
|
||||
function randomChar(length) {
|
||||
var x = "0123456789qwertyuioplkjhgfdsazxcvbnm";
|
||||
var tmp = "";
|
||||
var timestamp = new Date().getTime();
|
||||
for (var i = 0; i < length; i++) {
|
||||
tmp += x.charAt(Math.ceil(Math.random() * 100000000) % x.length);
|
||||
}
|
||||
return timestamp + tmp;
|
||||
}
|
||||
|
||||
|
||||
function localeUrl() {
|
||||
var url = window.location.origin + window.location.pathname;
|
||||
var index = url.indexOf('?');
|
||||
if (-1 == index)
|
||||
return url;
|
||||
else
|
||||
return name.substr(0, index);
|
||||
}
|
||||
|
||||
|
||||
function extractPath(name) {
|
||||
var index = name.lastIndexOf('/');
|
||||
if (-1 == index)
|
||||
return name;
|
||||
else
|
||||
return name.substr(0, index + 1);
|
||||
}
|
||||
|
||||
|
||||
function HttpRequest(args) {
|
||||
var defaults =
|
||||
{
|
||||
url: g_RequestAddress,
|
||||
async: true,
|
||||
|
||||
OnBeforeSend: function (/*XMLHttpRequest*/object) { },
|
||||
OnComplete: function (/*XMLHttpRequest, textStatus*/object, status) { },
|
||||
OnSuccess: function (/*data, textStatus*/message, status) { },
|
||||
OnError: function (/*XMLHttpRequest, textStatus, errorThrown*/object, status, error) { },
|
||||
},
|
||||
|
||||
settings = $.extend({}, defaults, args);
|
||||
|
||||
var data = {};
|
||||
$.each(settings, function (name, value) {
|
||||
if (
|
||||
'async' != name &&
|
||||
'url' != name &&
|
||||
'OnBeforeSend' != name &&
|
||||
'OnComplete' != name &&
|
||||
'OnSuccess' != name &&
|
||||
'OnError' != name
|
||||
) {
|
||||
data[name] = value;
|
||||
}
|
||||
});
|
||||
|
||||
//var succ = function (/*data, textStatus*/message, status) {
|
||||
// var obj = eval("(" + decodeURIComponent(message) + ")");
|
||||
// if (!obj) {
|
||||
// //alert('pager6');
|
||||
// window.location.href = PAGENAME_LOGIN + "?manager_id=" + getCookie(g_managerid);
|
||||
// return false;
|
||||
// }
|
||||
// else if (1 == obj.error && 10008 == obj.error_code) {
|
||||
// //alert('pager7');
|
||||
// window.location.href = PAGENAME_LOGIN + "?manager_id=" + getCookie(g_managerid);
|
||||
// return false;
|
||||
// }
|
||||
// else {
|
||||
// return settings.OnSuccess(message, status);
|
||||
// }
|
||||
//};
|
||||
|
||||
$.ajax({
|
||||
url: settings.url,
|
||||
type: 'post',
|
||||
async: settings.async,
|
||||
data: data,
|
||||
datatype: 'json',
|
||||
timeout: 1000 * 7,
|
||||
beforeSend: settings.OnBeforeSend,
|
||||
success: settings.OnSuccess,
|
||||
//success: succ,
|
||||
error: settings.OnError,
|
||||
complete: settings.OnComplete,
|
||||
});
|
||||
|
||||
return settings;
|
||||
}
|
||||
4
codes/agent/game-docker/api/sample/transfer/js/jquery-1.11.1.min.js
vendored
Normal file
4
codes/agent/game-docker/api/sample/transfer/js/jquery-1.11.1.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
2394
codes/agent/game-docker/api/sample/transfer/js/jquery-2.1.4.min.js
vendored
Normal file
2394
codes/agent/game-docker/api/sample/transfer/js/jquery-2.1.4.min.js
vendored
Normal file
File diff suppressed because it is too large
Load Diff
9
codes/agent/game-docker/api/sample/transfer/notice.php
Normal file
9
codes/agent/game-docker/api/sample/transfer/notice.php
Normal file
@@ -0,0 +1,9 @@
|
||||
<?php
|
||||
/// 支付的回调通知页面
|
||||
|
||||
$data = file_get_contents('php://input');
|
||||
file_put_contents(__DIR__ . '/pay.log', $data);
|
||||
|
||||
|
||||
/// 返回success表示成功接收到了回调通知
|
||||
die('success');
|
||||
1
codes/agent/game-docker/api/sample/transfer/pay.log
Normal file
1
codes/agent/game-docker/api/sample/transfer/pay.log
Normal file
@@ -0,0 +1 @@
|
||||
account_list=%5B%7B%22id%22%3A1%2C%22ret_code%22%3A-1%2C%22ret_info%22%3A%22%5Cu6279%5Cu6b21%5Cu8d85%5Cu65f6%5Cu672a%5Cu5904%5Cu7406%5Cu5f3a%5Cu5236%5Cu4f5c%5Cu5e9f%5Cuff01%22%2C%22account_no%22%3A%22fantasyfinal%40126.com%22%2C%22account_name%22%3A%22%5Cu5e94%5Cu4fca%22%2C%22money%22%3A%220.10%22%2C%22title%22%3Anull%2C%22remark%22%3A%22%5Cu8f6c%5Cu8d26%5Cu5907%5Cu6ce8%22%2C%22order_id%22%3A%22201805310412949477%22%2C%22pay_time%22%3A%2220180616011809%22%7D%5D&order_no=201805311629111310&out_trade_no=f807e3ca99b7a735fed73e567e231095&transaction_id=2018053116291200000009&attach=%7B%22order_no%22%3A%22201805311629111310%22%2C%22p1%22%3A%22p1%22%2C%22p2%22%3A%22p2%22%2C%22transfer_time%22%3A1527755352%7D&version=1&sign=ce26bdbec9da6ad9cce6cc6ca459f911
|
||||
4
codes/agent/game-docker/api/sample/transfer/return.php
Normal file
4
codes/agent/game-docker/api/sample/transfer/return.php
Normal file
@@ -0,0 +1,4 @@
|
||||
<?php
|
||||
/// 支付的回调通知页面
|
||||
|
||||
file_put_contents(__DIR__ . '/return.log', json_encode($_REQUEST));
|
||||
Reference in New Issue
Block a user