百度网盘: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);
}
}
}
基本上了
手机扫一扫
移动阅读更方便
你可能感兴趣的文章