先说下其中的坑,微信的接口文档和demo,那真叫一个坑,要么文字指向性错误,那么demo代码没法运行,报的错,甚至没有文档可查
先说明一些问题,街上的一些扫码微信的二维码其实一般都是注册的企业微信号,用的是微信转账,企业微信提现需不需要手续费这个目前不知,
第二种就是你买一些东西,商家就会生成一个二维码给你扫,扫出来就是可以直接支付的,有金额的二维码,这个才是微信扫码支付,模式二
其实就是下一个订单然后支付,模式一的固定二维码支付不知道有人成功过吗?我一直运行不成功,返回一直商家数据结构错误
demo代码下载地址: http://download.csdn.net/detail/zh7314/9593664
支付授权目录 http://xxx.com/pay/
测试授权目录 http://xxx.com/pay_test/example/
请记住一定要授权你的页面的上级目录,多一级都不行,我不知道为什么
首先把 pay_test\lib\WxPay.Config.php
* APPID:绑定支付的APPID(必须配置,开户邮件中可查看) * * MCHID:商户号(必须配置,开户邮件中可查看) * * KEY:商户支付密钥,参考开户邮件设置(必须配置,登录商户平台自行设置) * 设置地址:https://pay.weixin.qq.com/index.php/account/api_cert * * APPSECRET:公众帐号secert(仅JSAPI支付的时候需要配置, 登录公众平台,进入开发者中心可设置), * 获取地址:https://mp.weixin.qq.com/advanced/advanced?action=dev&t=advanced/dev&token=2005451881&lang=zh_CN 这个你去设置的32的那个 * @var string */ const APPID = ''; const MCHID = ''; const KEY = ''; const APPSECRET = '';
提交的页面就是 submit.php 接受页面是 getqrcode.php 这个页面就是生产二维码和主动请求订单是否支付成功的
支付回调URL http://xxx.com/pay_test/return.php 这个也是个坑,至今没有接受过任何数据,捕捉了页面接受的所有东西,写入日志就是什么都没有,好奇怪
如果有知道任何接受的兄弟,请联系楼下,发下demo代码看下
submit.php代码
融智金融-微信支付还款 融智金融
温馨提示!
金额填写: 100元就写100即可 备注格式: 营业厅-操作人员-金额
getqrcode.php
setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); $sql = 'INSERT INTO wx_log (log_id,out_trade_no,prepay_id,money,notify_money,time,note,result_code) VALUES (null,:SetOut_trade_no,0,:money,0,:time,:note,0)'; $stmt = $db->prepare($sql); $stmt->bindParam(':SetOut_trade_no', $SetOut_trade_no); $stmt->bindParam(':money',$mon); $stmt->bindParam(':time',$time); $stmt->bindParam(':note', $note); $stmt->execute(); // }catch(PDOException $exception){// echo 'PDO Exception Caught.';// echo 'Error with the database:';// echo 'SQL Query: '.$query;//// echo '';// echo "Error: ".$exception->getMessage()."";// echo "Code: ".$exception->getCode()."";// echo "File: ".$exception->getFile()."";// echo "Line: ".$exception->getLine()."";// echo "Trace: ".$exception->getTraceAsString()."";// echo '';// } //die;$notify = new NativePay();$input = new WxPayUnifiedOrder();$input->SetBody($SetBody);$input->SetAttach($SetAttach);$input->SetOut_trade_no($SetOut_trade_no);$input->SetTotal_fee($money);$input->SetTime_start(date("YmdHis"));$input->SetTime_expire(date("YmdHis", time() + 600));$input->SetGoods_tag($SetGoods_tag);$input->SetNotify_url("http://pay.xinyzx.com/pay_test/return.php");$input->SetTrade_type("NATIVE");$input->SetProduct_id("1");$result = $notify->GetPayUrl($input);$url = $result["code_url"];//include '../phpqrcode.php';//QRcode::png($url);?>融智金融-微信支付还款
notify_orders.php
ini_set('date.timezone','Asia/Shanghai');error_reporting(E_ERROR);require_once "../lib/WxPay.Api.php";//$_POST["out_trade_no"] = '201607291913581075';//处理客户支付,是否支付成功if(isset($_POST["out_trade_no"]) && $_POST["out_trade_no"] != ""){ $out_trade_no = $_POST["out_trade_no"]; $input = new WxPayOrderQuery(); $input->SetOut_trade_no($out_trade_no);// P(WxPayApi::orderQuery($input));// exit(); echo json_encode(WxPayApi::orderQuery($input)); exit();}
核心的部分就是这些,还有一个后台对账的其实很简单了,详细的请参看代码