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);
            }
        }
  
    }

基本上了

 

转载于:https://www.cnblogs.com/chenrunxuan/p/7762329.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值