function argSort($para) {
ksort( $para );
reset( $para );
return $para ;
}
function createLinkstring($para) {
$arg = "";
foreach ($para as $key => $val) {
$arg.=$key."=".$val."&";
}
//去掉最后一个&字符
$arg = substr($arg,0,strlen($arg)-1);
//如果存在转义字符,那么去掉转义
if(get_magic_quotes_gpc()){$arg = stripslashes($arg);}
return $arg;
}
/*去掉字符空值*/
function paraFilter($para){
$para_filter = array();
foreach ($para as $key => $val){
if($key == "sign")continue;
else
$para_filter[$key] = $para[$key];
}
return $para_filter;
}
function md5Verify($prestr,$sign=null,$key) {
$para=paraFilter($prestr);
$parm=argSort($para);
$prestr=createLinkstring($parm);
$prestr = $prestr.$key;
$mysgin = md5($prestr);
if($sign==null){
return $mysgin;
}else{
if($mysgin == $sign) {
return true;
}else{
return false;
}
}
}
function vpost($url, $data = array()) {// 模拟提交数据函数
$curl = curl_init();
// 启动一个CURL会话
curl_setopt($curl, CURLOPT_URL, $url);
// 要访问的地址
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
// 对认证证书来源的检查
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
// 从证书中检查SSL加密算法是否存在
if(isset($_SERVER['HTTP_USER_AGENT'])){
curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
}
// 模拟用户使用的浏览器
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
// 使用自动跳转
curl_setopt($curl, CURLOPT_AUTOREFERER, 1);
// 自动设置Referer
curl_setopt($curl, CURLOPT_POST, 1);
// 发送一个常规的Post请求
@curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
// Post提交的数据包
curl_setopt($curl, CURLOPT_TIMEOUT, 10);
// 设置超时限制防止死循环
curl_setopt($curl, CURLOPT_HEADER, 0);
// 显示返回的Header区域内容
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
// 获取的信息以文件流的形式返回
$tmpInfo = curl_exec($curl);
// 执行操作
if (curl_errno($curl)) {
return false;
//捕抓异常
}else{
curl_close($curl);
// 关闭CURL会话
return $tmpInfo;
}
// 返回数据
}
function blsend($para, $method, $button_name,$url) {
$sHtml = "<form id='blpaysubmit' name='blpaysubmit' action='".$url."' method='".$method."'>";
foreach ($para as $key => $val) {
$sHtml.= "<input type='hidden' name='".$key."' value='".$val."'/>";
}
$sHtml = $sHtml."<input type='submit' style='border:none;width:200px;height:35px;line-height:35px;background:none;font-size:18px;' value='".$button_name."'></form>";
$sHtml = $sHtml."<script>document.forms['blpaysubmit'].submit();</script>";
return $sHtml;
}
微信公众号登陆:
POST方式 :http://域名/wxindex.html | |||
参数名称 | 变量名 | 类型长度 | 说明 |
域名ID | id | int(5) | 平台开通网站的ID |
推广ID | qrcode | varchar(20) | 一般用于平台推广者id,本站原样返回 |
为了减少本站域名被封必须POST提交;
到平台商户中心-》域名中心 添加域名
填写 网站名称
填写 域名链接:此地址必须带http:// 是返回给网站登陆信息的地址
添加完域名回到域名中心 会看到添加的域名信息 ,访问地址是系统自动生成 在微信访问 访问地址 就会携带微信openid 昵称 name 头像 head 到你添加的域名地址 。
利用本站提供SIGN生成方式生成加密串
$map['id']=域名id;
$map['qrcode']=$qrcode;
$sign=md5Verify($map,"",$skey);
$map['sign']=$sign;
$html=blsend($map,"post","",$url);
echo $html;//生成自动提交表单
微信零钱提现到账:
1.请求方式:
POST 返回json格式 |
2.提交网址:
3.参数说明:
参数名称 | 变量名 | 类型长度 | 说明 |
商户编号 | uid | int(5) | 平台的商户ID |
商户订单号 | order | varchar(20) | 商户订单号,唯一 |
订单金额 | money | decimal(18,2) | 支付金额 |
提现用户id | name | Int(10) | 提现风控使用 |
openid | openid | varchar(50) | 微信获取的openid,使用本站公众号接口登陆的无需另外获取,直接使用会员登陆openid,其他登陆方式openid获取方式查看第4节 |
md5签名串 | sign | varchar(32) | 参照第5节签名 |
4.获取openid
POST ,GET方式 :http://域名/wxindex.html |
参数名称 | 变量名 | 类型长度 | 说明 |
商户编号 | id | int(5) | 平台的商户ID |
回调地址 | url | varchar(20) | 获取到openid返回给商户的地址,可带参数 |
例如:http://skb.dzvlw.xin/wxindex.html?id=6&url=http://skb.dzvlw.xin/123.php?id=1025
5.生成SIGN
txid={txid}&uid={uid}&money={money}&order={order}&key={key}
一:此文档只适用于技术人员阅读
1:为方便使用商户集成所需接口支付,特编写此文档以作参考!
2:请认真阅读每一步流程所需参数及验证方法!
二:简单支付流程演示
提交支付订单:
1.请求方式:
POST |
2.提交网址:
http://skb.dzvlw.xin/payapi.html |
3.参数说明:
参数名称 | 变量名 | 类型长度 | 是否可空 | 说明 |
商户编号 | partner | int(8) | no | 商户后台获取 |
商户订单号 | order | varchar(20) | no | 商户自定义组成 |
订单金额 | price | decimal(18,2) | no | 精确到小数点后两位,例如10.24 |
通道类型 | class | varchar(10) | no |
|
充值用户ID | name | Int(10) | yes | 再后期提现控制能用到,不参与加密 |
异步通知URL | notify | varchar(50) | no | 可以带参数 |
自定义参数 | custom | Varchar(50) | yes | 自定义参数原样返回 |
同步跳转URL | return | varchar(50) | no | 可以带参数 |
md5签名串 | sign | varchar(32) | no | 参照订单MD5签名 |
4.订单MD5签名方法:
使用 krsort() 函数对数组按照键名进行降序排序用&号连接接个数据再加上KEY,进行MD5得到sign 如:MD5(class=alipay&hallway=visa¬ifyify=http://localhost/demo/php/notify.php&order=1536401793 &partner=1003&price=1.00&return=http://localhost/demo/php/return.php{key})
备注:平台返回数据也采用此方式生成SIGN |
异步通知回调:
1.通知方式:
POST |
2.收到通知回复:
收到通知后请回复 success |
3.参数说明:
参数名称 | 变量名 | 类型长度 | 说明 |
状态 | status | varchar(10) | 1:成功,其他失败 |
商户编号 | partner | int(8) | 订单对应的商户ID |
商户订单号 | order | varchar(20) | 商户网站上的订单号 |
订单金额 | price | decimal(18,2) | 支付金额 |
实际支付金额 | money | decimal(18,2) | 实际支付金额 |
平台订单号 | platform | varchar(50) | 平台订单号 |
md5签名串 | sign | varchar(32) | 参照通知MD5签名 |
4.通知MD5签名方法:
参照提交数据生成MD5方式
同步通知跳转: 1.通知方式:
2.其他说明:
3.参数说明:
|