## 先下载我们的SDK插件放到根目录tp框架放到public目录下,[下载SDK](插件目录.md)
[TOC]
```
下载后需要修改fastpay文件夹里面Fast_Cofig.php里面替换成你的秘钥!如果需要汇款接口!请联系客服获取汇款接口请求地址!然后替换到Fast_Cofig.php里面
```
## 怎么从数据库加载我们的appkey跟秘钥等
```
$sysconfig = M('sys_config')->find();//数据库查询
define("FAST_APPKEY", $sysconfig['你的appkey']);//你的appkey
define("SECRET_KEY", $sysconfig['你的秘钥']);//你的秘钥
//定义后在加载fastpay支付插件
if (!function_exists('get_openid')) {
require $_SERVER['DOCUMENT_ROOT'].'/fastpay/Fast_Cofig.php';
}
```
> //先定义后加载我们的SDK,这个时候我们SDK里面的appkey跟秘钥就会失效!填不填写都无所谓,以上只是示例!具体需要根据自己的逻辑写
## 发起支付(默认参数是http,可选择https) 调用以下接口!请确定已经上传收款码跟店员码(重要)
```
//加载fastpay支付插件
if (!function_exists('get_openid')) {
require $_SERVER['DOCUMENT_ROOT'].'/fastpay/Fast_Cofig.php';
}
$paydata=array();
$paydata['pay_way']="wechat";//wechat为微信支付,alipay为支付宝
$paydata['uid']="";//付款用户uid,【如果没有可以填写ip,(无需注册的用户填写ip即可!!非常重要,不然会造成漏单)
$paydata['pay_title']="微信支付";//支付标题,可无
$paydata['order_no']="";//订单号,必填
$paydata['total_fee']="2.00";//金额必填,带2位小数点
$paydata['param']="";//其他参数,回调里面使用$_POST['me_param'];获取值
$paydata['me_back_url']="http://".$_SERVER['HTTP_HOST'];//支付成功后跳转
$paydata['notify_url']="http://www.baidu.com";//支付成功后异步回调
$geturl=fastpay_order($paydata,"http");//获取支付链接,可以传入https
exit("<meta http-equiv='Refresh' content='0;URL={$geturl}'>");
```
> 关于回调地址优先顺序:下单时候填写的优先->Fast_Cofig.php->会员中心里面的回调
## 异步回调
```
//加载fastpay支付插件
if (!function_exists('get_openid')) {
require $_SERVER['DOCUMENT_ROOT'].'/fastpay/Fast_Cofig.php';
}
$sign=$_POST['sign_notify'];//获取签名2.07版,2.07以下请使用$sign=$_POST['sign'];
$check_sign=notify_sign($_POST);
if($sign!=$check_sign){
exit("签名失效");
//签名计算请查看怎么计算签名,或者下载我们的SDK查看
}
$uid = $_POST['uid'];//支付用户
$total_fee = $_POST['total_fee'];//实际支付金额(可能会带增加0.01等),如果要验证金额请使用下面的me_pri
$pay_title = $_POST['pay_title'];//标题
$sign = $_POST['sign'];//签名
$order_no = $_POST['order_no'];//订单号
$me_pri = $_POST['me_pri'];//平台订单的金额,
$me_param = $_POST['me_param'];//其他参数
$pay_way = $_POST['pay_way'];//支付方式wechat为微信,alipay为支付宝
//更新数据库
echo "SUCCESS";
```
## 获取微信用户信息(用我们接口就不需要公众号了,收费项目,请联系客服测试)
```
//fastpay获取用户信息
//此接口需要联系客服开通
//加载fastpay支付插件
if (!function_exists('get_openid')) {
require $_SERVER['DOCUMENT_ROOT'].'/fastpay/Fast_Cofig.php';
}
$userinfo=get_openid_info($_GET);//参数为必须为get数组
if(!is_array($userinfo)){
$userinfo=json_decode($userinfo,true);
}
$openid =$userinfo['openid'];//用户的openid
$nickname =$userinfo['nickname'];//用户昵称
$headimgurl = $userinfo['headimgurl'];//用户头像
$sex = $userinfo['sex'];//性别
$province = $userinfo['province'];//省份
$city = $userinfo['city'];//城市
$country = $userinfo['country'];//国家,如中国为CN
$privilege = $userinfo['privilege'];//用户特权信息,json 数组,如微信沃卡用户为
```
```
## 备注详解
$_GET 为数组参数分别为$_GET['back_url']跟$_GET['fast_weixin_token']
$_GET['back_url']为需要返回的跳转的URL
$_GET['fast_weixin_token']根据返回的fast_weixin_token参数curl获取用户信息
第一步 :http://xxx.com/code_user.php?appkey=你的appkey&sign=你的签名&back_url=返回地址
第二部:我们会跳转到你的back_url并且在后面添加?fast_weixin_token=xxxxxxx
第三部:根据我们返回的fast_weixin_token,你curl提交post到http://xxx.com/code_user.php即可获取用户信息
xxx.com为示例具体域名请跟客户索取
```
## 下单签名计算
```
$str_sign="appkey=你的appkey&order_no=你的订单号&secretkey=你的秘钥&total_fee=下单金额&uid=用户id&";
$sign=md5($str_sign);
return $sign;
```
备注:金额带两位小数点,比如:2.00
## 回调验证签名(与下单签名不一样下单的是total_fee回调参与签名的是me_pri)
```
$str_sign="appkey=你的appkey&order_no=你的订单号&secretkey=你的秘钥&me_pri=我们返回的me_pri&uid=用户id&";
$sign=md5($str_sign);
if($sign!=$_POST['sign_notify']){
exit("签名失效");
//签名计算请查看怎么计算签名,或者下载我们的SDK查看
}
//以上参与签名的参数我们都会发送到你的回调地址,你直接POST接收,计算签名就行(除过秘钥)
```
## 汇款计算签名
```
$str_sign="appkey=你的appkey&openid=第一获取的openid&amount=金额&billno=订单号&secretkey=你的秘钥&";
$sign=md5($str_sign);
```