1. 程式人生 > 實用技巧 >第四方 fast快捷支付封裝

第四方 fast快捷支付封裝

 1 class Fastpay {
 2     protected $conf = [
 3         'appkey'=>'',//appkey
 4         'key'=>'',//祕鑰
 5     ];
 6     protected $http_type='http';
 7 
 8     public function __construct($payInfo=[]){
 9         if($payInfo)
10         {
11            foreach ($payInfo as $field => $val) {
12
$this->config[$field]=$val['val']; 13 } 14 } 15 } 16 public function index($data) 17 { 18 $data = array( 19 'appkey'=>$this->config['appkey'],//你的appkey 20 'uid'=>$data['attach'],//你的使用者id 21 'total_fee'=>$data
['total'],//你的金額 22 'order_no'=>$data['pay_sn'],//你的訂單號 23 'pay_title'=>$data['subject'],//你的訂單號 24 'me_param'=>$data['attach'],//其他引數,可返回回撥裡面 25 'notify_url'=>$data['notify_url'],//非同步回撥地址 26 'me_back_url'=>$data['return_url'],//支付成功後返回
27 'me_eshop_openid'=>'',//付款使用者openid 28 'me_party'=>'',//根據其他支付外掛,非同步回撥返回同樣引數,比如填寫codepay,碼支付,我們非同步回撥的時候就按碼支付的回撥引數返回 29 'sign'=>''//簽名 30 ); 31 $checkRes=$this->checkData($data); 32 if($checkRes['code']==0) 33 { 34 return $checkRes; 35 } 36 $data=$checkRes['data']; 37 $url_quer=http_build_query($data); 38 $url=($this->http_type=='https') ? "/fastpay/fpay/pays.php?{$url_quer}" : "/fastpay/fpay/pay.php?{$url_quer}" ; 39 return ['code'=>1,'msg'=>'success','data'=>['payurl'=>$url]]; 40 } 41 42 // 檢測資料 43 public function checkData($data) 44 { 45 extract($data); 46 if (empty($appkey)) { 47 return ['code'=>0,'msg'=>'appkey沒有填寫']; 48 } 49 if (empty($total_fee)) { 50 return ['code'=>0,'msg'=>'金額不能為空']; 51 } 52 if (empty($uid)) { 53 return ['code'=>0,'msg'=>'付款使用者id不能為空']; 54 } 55 if (empty($order_no)) { 56 return ['code'=>0,'msg'=>'請輸入支付編號']; 57 } 58 if (!empty($me_back_url)) { 59 $data['me_back_url']=urlencode($me_back_url); 60 } 61 if (!empty($notify_url)) { 62 $data['notify_url']=urlencode($notify_url); 63 } 64 65 // 直接將金額精確到兩位數 66 $data['total_fee']=bcadd($total_fee, 0, 2); 67 if (empty($sign)) { 68 $data['sign']=$this->pay_sign($data); 69 } 70 71 return ['code'=>1,'msg'=>'success','data'=>$data]; 72 } 73 74 //支付下單計算簽名 75 public function pay_sign($paydata) 76 { 77 $str_sign="appkey={$paydata['appkey']}&order_no={$paydata['order_no']}&secretkey=".$this->config['key']."&total_fee={$paydata['total_fee']}&uid={$paydata['uid']}&"; 78 $sign=md5($str_sign); 79 return $sign; 80 } 81 82 function notify_sign($paydata) 83 { 84 $str_sign="appkey={$paydata['appkey']}&order_no={$paydata['order_no']}&secretkey=".SECRET_KEY."&me_pri={$paydata['me_pri']}&uid={$paydata['uid']}&"; 85 $sign=md5($str_sign); 86 return $sign; 87 } 88 89 }