zoukankan      html  css  js  c++  java
  • PHP微信支付功能

    百度网盘:http://pan.baidu.com/s/1sl5GeVr  l5ud

    先下载一份sdk ,引入到自己的项目中,我用的是TP5,配置好namespace

    然后在项目中引入:

    之后,在去配置文件。config.php

    通常操作就是。

    用户访问一个方法,在方法里面new wechatpay。得到一个结果集 。

    然后再去调用sdk的一些内部方法

    把一些要存到数据库里面的。放在缓存里面待用,比如传入的金钱,还有类型,用户uid等。也可以做一个签名验证操作。我这里就不做了。

    这里访问成功的话,微信那边就会调用那个之前设置好的回调接口。就是之前我们在config.php里面设置的那个

    // 重置成功回调
        public function Callback()
        {
         
            $input = file_get_contents("php://input");  // 用输入流接收
          
            libxml_disable_entity_loader(true);
            $xml = json_decode(json_encode(simplexml_load_string($input, 'SimpleXMLElement', LIBXML_NOCDATA)), true);
            Cache::set('ec',$xml);
    
            Log::write('测试日志信息,这是警告级别,并且实时写入'.var_export($xml, true),'notice');
            //判断是否是付款成功的回调
            if($xml && $xml['return_code'] == 'SUCCESS' && $xml['result_code'] == 'SUCCESS'){
    
                 // 以下是我的逻辑处理代码。
                $uid = Cache::get('userid');
    
                $data['openid'] = $xml['openid'];
                $data['total_fee'] = $xml['total_fee'];
                $data['out_trade_no'] = $xml['out_trade_no'];
                $data['time_end'] = strtotime($xml['time_end']);
                $data['uid'] = $uid;
                $data['money'] = Cache::get('money');
                $data['payObjType'] = Cache::get('payObjType');
                $data['payObjId'] = Cache::get('payObjId');
                $res = Db::name('moneydetail')->insert($data);
    
                Cache::set('res',$res);
                if($res){
                    switch ($data['payObjType']) {
                        case '1':
                            # 打赏帖子
                            Db('user_info')->where('id',$uid)->setInc('merits',$data['money']);
                            break;
                        case '2':
                            # 充值功德值
                            switch ($data['money']) {
                                case '900':
                                    $new_num = 99;
                                    break;
                                case '3900':
                                    $new_num = 439;
                                    break;
                                case '9900':
                                    $new_num = 1299;
                                    break;
                                case '19900':
                                    $new_num = 3199;
                                    break;
                                case '36900':
                                    $new_num = 7399;
                                    break;
                                case '99900':
                                    $new_num = 24999;
                                    break;
                                default:
                                    # code...
                                    break;
                            }
                            Db('user_info')->where('id',$uid)->setInc('merits',$new_num);
                            
                            break;
                        case '3':
                            # 打赏平台
                            Db('user_info')->where('id',$uid)->setInc('merits',$data['money']);
                            break;
                        
                        default:
                            # code...
                            break;
                    }
                    // 清空缓存
                    Cache::set('money',NULL);
                    Cache::set('userid',NULL);
                    Cache::set('payObjType',NULL);
                    Cache::set('payObjId',NULL);
                }
            }
      
        }

    基本上了

  • 相关阅读:
    GDB 学习
    常用Linux命令(长期更新)
    动态规划专题总结
    awk 简易使用
    mysql相关
    curl 整理
    linux 拆分文件
    Python中的排序方法
    about python
    vim 常用命令
  • 原文地址:https://www.cnblogs.com/chenrunxuan/p/7762329.html
Copyright © 2011-2022 走看看