220 lines
7.0 KiB
PHP
220 lines
7.0 KiB
PHP
<!DOCTYPE html>
|
||
<html lang="en">
|
||
<head>
|
||
<meta charset="UTF-8">
|
||
<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">
|
||
<!-- <link href="css/bootstrap.min.css" rel="stylesheet">-->
|
||
|
||
<script src="js/jquery-2.1.4.min.js"></script>
|
||
<script src="js/common.js"></script>
|
||
</head>
|
||
<body class="body_bg" id="mainbody">
|
||
|
||
<header class="yl_logo">
|
||
<img src="img/yl.png" class="img-responsive">
|
||
</header>
|
||
|
||
<script type="text/javascript">
|
||
function id(x) {
|
||
if (typeof x == "string")
|
||
return document.getElementById(x);
|
||
else
|
||
return x;
|
||
}
|
||
</script>
|
||
|
||
|
||
|
||
<?php
|
||
/**
|
||
* Created by PhpStorm.
|
||
* User: bahamut
|
||
* Date: 2018/3/20
|
||
* Time: 10:40
|
||
*/
|
||
|
||
/*
|
||
发红包封装页面
|
||
|
||
地址:
|
||
https://api.tscce.cn/source/pay/redpack.php
|
||
|
||
参数:
|
||
app_id: appid【必须】
|
||
dev_key: 开发者key【必须】
|
||
market_key: 门店key【必须】
|
||
fee: 金额(单位分)【必须】
|
||
wishing: 祝福语【必须】
|
||
act_name: 活动名称【必须】
|
||
remark: 备注【必须】
|
||
sign_key: 门店对应的签名key【必须】
|
||
return_url: 成功后的跳转页面【可选】,如果不为空,则在接口调用成功后跳转到指定的页面
|
||
error_url: 失败后的跳转页面【可选】,如果不为空,则在接口调用失败后跳转到指定的页面,并把错误信息以标准http参数形式传递给页面(code:错误值;msg:错误信息)
|
||
|
||
|
||
例:
|
||
https://api.tscce.cn/source/pay/redpack.php?app_id=14936872341446&dev_key=14915485974028&market_key=0000&fee=100&wishing=test&act_name=test&remark=test&sign_key=0000&return_url=https%3A%2F%2Fwww.baidu.com&error_url=https%3A%2F%2Fwww.baidu.com
|
||
*/
|
||
|
||
|
||
require_once __DIR__ . '/common.php';
|
||
|
||
define('DEFAULT_MARKET_KEY', 'test'); /// 默认的门店
|
||
define('DEFAULT_SIGN_KEY', 'test'); /// 默认的签名key
|
||
|
||
|
||
/**
|
||
* @note 提取请求参数
|
||
* @param array $Parameters 参数列表
|
||
* @param string $Name 参数名
|
||
* @param string $Default 当没有取到时,使用的默认值
|
||
* @return string
|
||
*/
|
||
function GetRequestParameter($Parameters, $Name, $Default = '') {
|
||
if (isset($Parameters[$Name]) && !empty($Parameters[$Name]))
|
||
return strval($Parameters[$Name]);
|
||
else
|
||
return isset($_REQUEST[$Name]) ? $_REQUEST[$Name] : $Default;
|
||
}
|
||
|
||
function is_weixin() {
|
||
if ( strpos($_SERVER['HTTP_USER_AGENT'], 'MicroMessenger') !== false ) {
|
||
return true;
|
||
}
|
||
return false;
|
||
}
|
||
|
||
|
||
|
||
/// 所有参数
|
||
$attach = (array)json_decode(rawurldecode(GetRequestParameter(null, 'attach')));
|
||
//if (!empty($attach)) var_dump($attach);
|
||
|
||
/// sid
|
||
$sid = GetRequestParameter($attach, 'sid');
|
||
/// scode
|
||
$scode = GetRequestParameter($attach, 'scode');
|
||
/// app_id
|
||
$app_id = GetRequestParameter($attach, 'app_id');
|
||
/// 开发者key
|
||
$dev_key = GetRequestParameter($attach, 'dev_key');
|
||
/// 门店key
|
||
$market_key = GetRequestParameter($attach, 'market_key', DEFAULT_MARKET_KEY);
|
||
/// 订单号
|
||
$order_id = GetRequestParameter($attach, 'order_id', md5(date('YmdHis') . rand(1000, 9999)));
|
||
/// 支付金额(分)
|
||
$fee = GetRequestParameter($attach, 'fee');
|
||
/// 红包祝福语
|
||
$wishing = GetRequestParameter($attach, 'wishing');
|
||
/// 活动名称
|
||
$act_name = GetRequestParameter($attach, 'act_name');
|
||
/// 备注
|
||
$remark = GetRequestParameter($attach, 'remark');
|
||
/// 是否静默授权
|
||
$silence = intval(GetRequestParameter($attach, 'silence', '0'));
|
||
/// 回调地址(同步)
|
||
$return_url = GetRequestParameter($attach, 'return_url', isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : GetLocaleUrl());
|
||
/// 错误页面地址
|
||
$error_url = GetRequestParameter($attach, 'error_url');
|
||
/// 签名用的key(目前支付不做校验,退款才会校验签名。)
|
||
/// 具体的签名算法见详细代码。
|
||
$sign_key = GetRequestParameter($attach, 'sign_key', DEFAULT_SIGN_KEY);
|
||
|
||
|
||
if (empty($app_id)) {
|
||
echo '没有指定app_id参数!';
|
||
} elseif (empty($dev_key)) {
|
||
echo '没有指定dev_key参数!';
|
||
} elseif (empty($market_key)) {
|
||
echo '没有指定market_key参数!';
|
||
} elseif (empty($sid) || empty($scode)) { /// 判断是否有sid和scode, 什么数据都没有则先跳转到登录页面授权
|
||
$attach = json_encode(GetAttachParameters(array('attach', )));
|
||
$redirect_uri = rawurlencode(GetLocaleUrl());
|
||
$url = "https://api.tscce.cn/source/login/login.php?app_id={$app_id}&dev_key={$dev_key}&market_key={$market_key}&silence={$silence}&redirect_uri={$redirect_uri}&attach={$attach}";
|
||
header("Location: {$url}");
|
||
exit;
|
||
} else {
|
||
$send_type = is_weixin() ? 1 : 2; /// 支付类型(1: 微信支付; 2: 支付宝支付)
|
||
$data = array(
|
||
'appid' => $app_id,
|
||
'devkey' => $dev_key,
|
||
'sid' => $sid,
|
||
'scode' => $scode,
|
||
'orderid' => $order_id,
|
||
'fee' => $fee,
|
||
'wishing' => $wishing,
|
||
'act_name' => $act_name,
|
||
'remark' => $remark,
|
||
'send_type' => $send_type,
|
||
'version' => 1,
|
||
);
|
||
$data['sign'] = SignParameter($data, $sign_key); /// 生成签名
|
||
|
||
$result = new ResultObject(SendPost('https://api.tscce.cn/api/newpay/sendredpack', $data));
|
||
if (0 == $result->error) {
|
||
if (!empty($return_url)) {
|
||
$attach = GetAttachParameters(array('sid', 'scode', 'app_id', 'dev_key', 'market_key', 'order_id', 'fee', 'wishing', 'act_name', 'remark', 'silence', 'return_url', 'error_url', 'sign_key', 'attach'));
|
||
if (!strstr($return_url, "?"))
|
||
$return_url .= '?';
|
||
else
|
||
$return_url .= '&';
|
||
foreach ($attach as $k => $v) {
|
||
$return_url .= "{$k}={$v}&";
|
||
}
|
||
|
||
$return_url .= "code=0";
|
||
header("Location: {$return_url}");
|
||
exit;
|
||
} else {
|
||
$html = "<script>alert('红包发送成功:\\r\\n{$result->msg}');</script>";
|
||
}
|
||
} else {
|
||
if (!empty($error_url)) {
|
||
$attach = GetAttachParameters(array('sid', 'scode', 'app_id', 'dev_key', 'market_key', 'order_id', 'fee', 'wishing', 'act_name', 'remark', 'silence', 'return_url', 'error_url', 'sign_key', 'attach'));
|
||
if (!strstr($error_url, "?"))
|
||
$error_url .= '?';
|
||
else
|
||
$error_url .= '&';
|
||
foreach ($attach as $k => $v) {
|
||
$error_url .= "{$k}={$v}&";
|
||
}
|
||
|
||
$error_url .= "code={$result->error_code}&msg={$result->msg}";
|
||
header("Location: {$error_url}");
|
||
exit;
|
||
} else {
|
||
$html = "<script>alert('红包发送出错:\\r\\n{$result->msg}({$result->error_code})');</script>";
|
||
}
|
||
}
|
||
|
||
/*
|
||
$html = <<<EOF
|
||
<form style="display:none;" id="frm" name="frm" method="post" action="https://api.tscce.cn/api/newpay/sendredpack/">
|
||
<input name="appid" type="text" value="{$data['appid']}" />
|
||
<input name="devkey" type="text" value="{$data['devkey']}" />
|
||
<input name="sid" type="text" value="{$data['sid']}" />
|
||
<input name="scode" type="text" value="{$data['scode']}" />
|
||
<input name="orderid" type="text" value="{$data['orderid']}" />
|
||
<input name="fee" type="text" value="{$data['fee']}" />
|
||
<input name="wishing" type="text" value="{$data['wishing']}" />
|
||
<input name="act_name" type="text" value="{$data['act_name']}" />
|
||
<input name="remark" type="text" value="{$data['remark']}" />
|
||
<input name="send_type" type="text" value="{$data['send_type']}"/>
|
||
<input name="version" type="text" value="{$data['version']}"/>
|
||
<input name="sign" type="text" value="{$data['sign']}"/>
|
||
</form>
|
||
|
||
<script>
|
||
frm.submit();
|
||
</script>
|
||
EOF;
|
||
*/
|
||
echo $html;
|
||
}
|
||
?>
|
||
|
||
|
||
</body>
|
||
</html>
|