哎,接口的方便是方便,但是太多接口就感觉滥用了~~
没办法,这个项目把前端涉及到的一些隐私数据全部放到CI框架写的接口里面了。。
折腾了一天,终于搞定
JSapi 微信网页支付
其实调用微信网页支付非常简单,在需要调出微信支付的按钮的页面,加上demo中的2个JS
方法,最重要的就是后台或者是接口传过去的JSON格式的参数,{$weixin}
这个参数打印审查元素一下,就是appid:xxx 订单号之类的东西。
顺带记录一下,审查元素是可以用微信提供的开发工具,然后在同一个WiFi下,用手机调试,这样不但能解决布局的问题,还可以看到源码~~~
CI框架这边是这样的
框架目录~~
框架部分目录是这样,把demo全部复制到libraries下,命名为weixin
, 然后在example文件里面写一个Weixin.php
类(CI框架不需要.class.php)里面有两个方法!
一个用来调起微信的JSON,一个用来做异步处理
这只是提供的方法,contr里面去调用而已~~
为了方便,代码直接贴出来。。
public function weixinnodify(){
// 异步方法,没错 这个方法只是验证支付是否成功,也是demo中复制过来的~~
require_once
dirname(__FILE__).'/'.'notify.php';
$notify
= new
PayNotifyCallBack();
$rs
=
$notify->Handle(false);
return
$rs;
}
这博客的文字布局不好改啊。。
还是贴图吧..
下面这个方法是用来输出JSON,给前端调用的。。
其实关键还是看contr,对吧
我怎么不知不觉就跟自己对起话来了......
奉上一个xml转Array的方法
public function
xmlToArray($xml){$data
=
simplexml_load_string($xml);$array
=
array();foreach($data->children()
as $childItem)
{$array =
array_merge($array,array($childItem->getName()=>(string)$childItem));
}return
$array;}
下次直接复制,再格式化一下,漂亮点,编辑器不给力就是了。。
contr里面初始化一下自己前面写的Weixin.php这个类
因为目录藏得比较深,说白了就是自己懒~~
不怎么想改他的代码。
在contr里面输出JSON格式,吊起支付这段代码~~
randId 前端过来的用户ID,金额,此处的绝妙就在那边把openid传过来了~~
,其他的都依照demo来就行,哈哈...
contr异步的贴上~~
第一处红框,是调用Weixin.php的验证,那边返回success...
那边为什么会返回success,是因为自己改了点东西,原本demo是不会返回这样的。。
是这个异步文件,自己改了一下输出而已,没什么东西~~
第二处红框(前一张图哈)
$fileContent =
file_get_contents("php://input");
这一段魔术般的代码,其实是获取输入流,里面就是xml格式的回调参数而已,大概写在日志就是这样的东西
第三处框框,就是把这个xml去转成array,尽情的耍自己的业务流程吧~~
如果对你有帮助可以求赏
需要源码的联系我QQ482353779,包技术发截图备注!