Blogger Information
Blog 33
fans 0
comment 0
visits 26114
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
thinkphp整合系列之微信扫码支付
非常缪
Original
976 people have browsed it

一:导入sdk
/ThinkPHP/Library/Vendor/Weixinpay
鹅厂的sdk那酸爽谁用谁知道;就不吐槽了;项目中的sdk是我根据官方文档重构精简打造而成的;
二:配置项
/Application/Common/Conf/config.php'WEIXINPAY_CONFIG'       => array(
   'APPID'              => '', // 微信支付APPID
   'MCHID'              => '', // 微信支付MCHID 商户收款账号
   'KEY'                => '', // 微信支付KEY
   'APPSECRET'          => '', // 公众帐号secert (公众号支付专用)
   'NOTIFY_URL'         => 'https://bayao.com/Api/Weixinpay/notify', // 接收支付状态的连接
   ),
PHPCopy

开通微信支付后;会收到一封包含账号密码的邮件;登录微信支付凑齐上面这些参数;
三:支付函数
/Application/Common/Common/function.php

/**
* 微信扫码支付
* @param  array $order 订单 必须包含支付所需要的参数 body(产品描述)、total_fee(订单金额)、out_trade_no(订单号)、product_id(产品id)
*/function weixinpay($order){
   $order['trade_type']='NATIVE';
   Vendor('Weixinpay.Weixinpay');
   $weixinpay=new \Weixinpay();
   $weixinpay->pay($order);}
PHPCopy

调用函数会生成一个二维码;用微信扫码即可支付;

// 虚拟的订单 请根据实际业务更改$time=time();$order=array(
   'body'=>'test',
   'total_fee'=>1,
   'out_trade_no'=>strval($time),
   'product_id'=>1
   );weixinpay($order);
PHPCopy

四:异步接收通知
/Application/Api/Controller/WeixinpayController.class.php

/**
* notify_url接收页面
*/public function notify(){
   // 导入微信支付sdk
   Vendor('Weixinpay.Weixinpay');
   $wxpay=new \Weixinpay();
   $result=$wxpay->notify();
   if ($result) {
       // 验证成功 修改数据库的订单状态等 $result['out_trade_no']为订单id

   }}
PHPCopy

和支付宝不同的是;微信支付并没有支付成功后跳转回来的过程;所以都是异步接收通知的;
//*************************收到反馈后补充的分割线*********************************
如果是整合到自己已有的项目中;则需要添加生成二维码的函数;
具体的可以参考 thinkphp整合系列之phpqrcode生成二维码

//*************************关于签名错误的拍错*********************************
如果出现签名错误;
可以使用官方的 微信公众平台支付接口调试工具
跟自己生产的签名对比;
然后对比配置;查找不一致的地方;

//*****************关于不知道怎么查看异步发过来的数据的补充*****************
2016.10.28:
好多童鞋在问支付后;不知道怎么查看接收到的支付状态通知;
这里做个补充;首先;我们的服务器必须是外网可以正常访问到的;
必须注意不能有 登录或者权限之类的拦截;
另外补充一个简单的查看收到的内容的方法用于测试;
四:异步接收通知
/Application/Api/Controller/WeixinpayController.class.php

/**
* notify_url接收页面
*/public function notify(){
   // ↓↓↓下面的file_put_contents是用来简单查看异步发过来的数据 测试完可以删除;↓↓↓
   // 获取xml
   $xml=file_get_contents('php://input', 'r');
   //转成php数组 禁止引用外部xml实体
   libxml_disable_entity_loader(true);
   $data= json_encode(simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA));
   file_put_contents('./notify.text', $data);
   // ↑↑↑上面的file_put_contents是用来简单查看异步发过来的数据 测试完可以删除;↑↑↑
   // 导入微信支付sdk
   Vendor('Weixinpay.Weixinpay');
   $wxpay=new \Weixinpay();
   $result=$wxpay->notify();
   if ($result) {
       // 验证成功 修改数据库的订单状态等 $result['out_trade_no']为订单id


Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!