zoukankan      html  css  js  c++  java
  • 第四方 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 }
  • 相关阅读:
    Eclipse (indigo) 中安装jdk包并执行Maven
    UVA
    Android 仿QQ界面的实现
    Ajax是什么
    jieba.NET与Lucene.Net的集成
    jieba中文分词的.NET版本:jieba.NET
    SharePoint 2013技巧分享系列
    SharePoint 2013常用开发工具分享
    SharePoint 2013技巧分享系列
    SharePoint 2013技巧分享系列
  • 原文地址:https://www.cnblogs.com/exo5/p/13572641.html
Copyright © 2011-2022 走看看