Files
youlegames/codes/agent/game/api/source/pay/redpack.php
2026-03-15 01:27:05 +08:00

220 lines
7.0 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!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>