百度网盘: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); } } }
基本上了