## 先下載我們的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);
```