# API请求方式 #
# 请求地址 #
http://pay.4dn.net/code.php
# 请求参数 #
请求名称 | 是否必填 | 请求说明 |
uid | 是 | 商户ID |
pay_id | 是 | 需要充值的ID 或订单号 或用户名 |
title | 是 | 订单标题 |
price | 是 | 金额 |
type | 是 | 支付类型 1支付宝、 2QQ、 3微信 |
param | 否 | 自定义参数 |
tag | 否 | 关键词 |
return | 否 | 支付完成返回连接 |
notify_url | 否 | 异步回调 |
return_url | 否 | 同步回调 |
sign | 是 | 拼接url参数加上商户Key然后md5加密 |
PHP 实例代码:
<?php
function buiForm($para_temp, $method = 'GET', $button_name = '正在跳转'){ //$method = 'GET' GET 跟 POST 两种模式随便你选
$sHtml = "<form id='alipaysubmit' name='alipaysubmit' action='http://pay.4dn.net/code.php' method='" . $method . "'>";
while (list($key, $val) = each($para_temp)) {
$sHtml .= "<input type='hidden' name='" . $key . "' value='" . $val . "'/>";
}
$sHtml = $sHtml . "<input type='submit' value='" . $button_name . "'></form>";
$sHtml = $sHtml . "<script>document.forms['alipaysubmit'].submit();</script>";
return $sHtml;
}
$data = array(
"uid" => "1001", //商 户 I D(必填) 登录 http://pay.4dn.net/ 点击左侧 开发配置 获取
"pay_id" => uniqid(), //订单号 (必填)
"title" => "快捷支付", //商品名称 (必填)
"price" => '1', //支付金额 (必填)
"type" => '3', //支付类型 1支付宝、2QQ支付、3微信支付 (必填)
"param" => '自定义参数', //自定义参数
"tag" => '关键词', //关键词
"return" => 'http://4dn.net/', //支付完成返回连接
"notify_url" => 'http://pay.4dn.net/notify_url.php', //异步回调
"return_url" => 'http://pay.4dn.net/return_url.php' //同步回调
);
$mch_key = 'TV3ELN3t12u7M625AQIsET9'; //这是您的通讯密钥(必填) 登录 http://pay.4dn.net/ 点击左侧 开发配置 获取
$result = md5_sign($data, $mch_key); //生成加密
$parameter = $data;
$parameter['sign'] = $result;
//创建订单所需的参数
$html_text = buiForm($parameter);
echo $html_text;
function md5_sign($arr,$skey) {
$arr_filter = array();
foreach($arr as $key=>$val){
if($key == "sign" || $val == "") continue;
$arr_filter[$key] = $arr[$key];
}
//对数组排序
ksort($arr_filter);
reset($arr_filter);
$arg = "";
foreach($arr_filter as $key=>$val){
$arg.=$key."=".urlencode($val)."&";
}
$arg = substr($arg,0,count($arg)-2);
//如果存在转义字符,那么去掉转义
if(get_magic_quotes_gpc()){$arg = stripslashes($arg);}
//MD5加密
$sign = strtoupper(md5($arg.$skey));
return $sign;
}
?>
GET生成案例:
http://pay.4dn.net/code.php?uid=101&pay_id=60f15676a946f&title=快捷支付&price=1&type=2¶m=自定义参数&tag=关键词&return=http://4dn.net/¬ify_url=http://pay.4dn.net/notify_url.php&return_url=http://pay.4dn.net/return_url.php&sign=40A57C6543C10F7E18989A1D1BACA92A
# 异步通知 #
返回名称 | 返回说明 |
uid | 商户号 |
title | 商品名称 |
pay_id | 订单号 |
money | 实际付款金额 |
price | 订单的原价 |
type | 支付类型 1支付宝、 2QQ、 3微信 |
pay_no | 流水单号 |
param | 自定义参数 |
pay_time | 付款时间 |
pay_tag | 支付备注 |
status | 业务处理状态 这里2为处理完成 |
creat_time | 创建数据的时间 |
up_time | 最后更新时间 |
sign | 签名验证 |
支付验签 PHP 实例代码
<?php
$str = file_get_contents('php://input');
parse_str($str, $result); //第一个参数为字符串,第二个参数为结果
$re = reate($result,'TV3ELN3t12u7M625AQIsET9'); //通信密钥 登录 http://pay.4dn.net/ 点击左侧 开发配置 获取
//商户号 $result["uid"]
//商品名称 $result["title"]
//订单号 $result["pay_id"]
//实际付款金额 $result["money"]
//订单的原价 $result["price"]
//支付方式 $result["type"]
//流水单号 $result["pay_no"]
//自定义参数 $result["param"]
//付款时间 $result["pay_time"]
//支付备注 $result["pay_tag"]
//业务处理状态 这里2为处理完成 $result["status"]
//创建数据的时间 $result["creat_time"]
//最后更新时间 $result["up_time"]
//签名验证 $result["sign"]
if($result["sign"] == $re || $result["status"] == '2'){
////////////////这里写业务逻辑/////////////////
exit('success'); //返回成功 不要删除哦
} else {
exit('fail'); //返回失败 继续补单
}
function reate($params, $codepay_key, $host = "") {
ksort($params); //重新排序$data数组
reset($params); //内部指针指向数组中的第一个元素
$sign = '';
foreach ($params AS $key => $val) {
if ($val == '') continue;
if ($key != 'sign') {
if ($sign != '') {
$sign.= "&";
}
$sign.= "$key=$val"; //拼接为url参数形式
}
}
$key = md5($sign . $codepay_key); //开始加密
return $key;
}
?>