[置顶] 微信公众平台开发[4] —— ThinkPHP框架下微信公众号支付

    声明:原文主要摘自 白俊遥博客 ,部分内容针对个人事例已作修改,主要用于自己的参考,欢迎指正。

    注意:微信公众号支付,强烈建议使用外网可访问的链接测试,否则即便代码正确也无法调出支付界面,可使用草料二维码生成可扫描图片,也可直接在微信中输入网址。


一.微信公众平台信息配置

1).进入微信公众平台

由左侧的“微信支付”进入配置界面,添加或修改正确的支付授权目录,注意该目录的要求,多建议精确到上一级目录,并加斜线 /

2).授权域名

  【注意】域名的确定都是工信部备案过的,初次开发的很容易漏掉“www”,而截图中不加“www”是因为我们备案的原因,记得只去掉“http://”。


   

二.ThinkPHP框架,相应代码配置

    1).weixinpay.php文件处理

导入weixinpay.php文件到“/ThinkPHP/Library/Vendor/Weixinpay/”目录下

    

    2).getParameters修改

  上述文件,需要修改其中的getParameters()方法,其中标记的位置,是根据实际的业务情况而从数据库获取的。具体代码后面会有提供。


    3).配置

  在项目的配置文件中,添加类此如下的代码,,其中的值需要自己根据实际公众号的信息进行配置,注意:很多人会搞错MCHID而造成不必要的时间浪费,具体开发参照官方文档。

/Application/Common/Conf/config.php

'WEIXINPAY_CONFIG' => array( 'APPID' => 'wxdaxxxxxxxxx53', // 微信支付APPID 'MCHID' => '1xxxxxxx2', // 微信支付MCHID 商户收款账号 'KEY' => '1qaxxxxxxxxxxxxxxxxxxxgf5', // 微信支付KEY 'APPSECRET' => '79xxxxxxxxxxxxxxxxxxxxxxxxx5544', // 公众帐号secert (公众号支付专用) 'NOTIFY_URL' => 'http://pay.fetow.com/Home/Order/notify', // 接收支付状态的连接 ),

    4).支付函数的编辑

  即进行点击支付后的界面,其自动调用微信的默认支付框架。

  [注意:进行支付逻辑的处理,一定要记住,要求使用GET方式请求此页面,即使用get方式将总金额、订单号提交过来进行处理,$data可以接收]

    

    5).上述函数,需要html的配合:/M/View/Cart/pay.html

    

    6).回调函数的编辑

    注意该路径必须要与配置文件中的回调路径一致,此回调函数,是根据微信是否真正完成支付后的数据更新,一般此处进行订单状态的修改,比如,我在此处异步执行的是将订单号的支付状态参数由0置为1.[个人测试发现,此处session和cookie的设置都失效,仅做参考]


   注意:先前发现,因为微信服务的设计,会多次回调notify()以判断是否真正的支付成功,而简单的update操作是无法检测的,为了同自己的平台相关联,同理需要进行状态的判断,否则不可避免的会多次执行notify()中的逻辑处理

    7).如果是整合到自己的项目中

    则需要在自己的公共函数中增加 curl_get_contents
/**  * 使用curl获取远程数据  * @param string $url url连接  * @return string 获取到的数据  */ function curl_get_contents($url){  $ch=curl_init();  curl_setopt($ch, CURLOPT_URL, $url); //设置访问的url地址 // curl_setopt($ch,CURLOPT_HEADER,1); //是否显示头部信息  curl_setopt($ch, CURLOPT_TIMEOUT, 5); //设置超时  curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); //用户访问代理 User-Agent  curl_setopt($ch, CURLOPT_REFERER,$_SERVER['HTTP_HOST']); //设置 referer  curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1); //跟踪301  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //返回结果  $r=curl_exec($ch);  curl_close($ch);  return $r; }

    8).附录:

(1).源代码下载 >>>

  提醒:所提供的源代码,剥离出了微信支付的核心,注意html页面中对jquery.js的正确引用,pay.html基本是从微信公众号官网直接下载的demo页,同时使用代码前请配置微信支付url,且外网测试。

(2).补充:此文所遇到的各种坑!建议参考、批评



























你可能感兴趣的:([置顶] 微信公众平台开发[4] —— ThinkPHP框架下微信公众号支付)