微信支付是微信开发中坑最多的一个功能,本文旨在帮助有开发基础的人快速接入微信支付,若是要详细了解微信支付,请看微信支付的开发文档。php
再说把开发文档搬到这里来就不必了。想要快速跑通微信支付的能够继续查看。前端
微信支付分公众号支付(在微信里的网页用微信支付)、PC版扫码支付(扫码有两种模式)、APP微信支付,当初作这三种支付,尚未不少人作,api
没有资料,虽然官方提供了demo,可是出现各类问题跑不通,对着文档作, 遇到各类你想不到的坑,简直要哭,说多了都是泪....微信
这里介绍一下公众号支付的流程:微信开发
一、获取openid:最多见的用网页受权获取支付人的openidapp
//使用jsapi接口 $jsApi = new JsApi_pub(); //=========步骤1:网页受权获取用户openid============ //经过code得到openid if (!isset($_GET['code'])) { //触发微信返回code码 $url = $jsApi->createOauthUrlForCode(WxPayConf_pub::JS_API_CALL_URL); Header("Location: $url"); }else { //获取code码,以获取openid $code = $_GET['code']; $jsApi->setCode($code); $openid = $jsApi->getOpenId(); }
二、统一下单获取预支付id:prepay_id微信支付
//=========步骤2:使用统一支付接口,获取prepay_id============ //使用统一支付接口 $unifiedOrder = new UnifiedOrder_pub(); //设置统一支付接口参数 //设置必填参数 //appid已填,商户无需重复填写 //mch_id已填,商户无需重复填写 //noncestr已填,商户无需重复填写 //spbill_create_ip已填,商户无需重复填写 //sign已填,商户无需重复填写 $unifiedOrder->setParameter("openid","$openid");//商品描述 $unifiedOrder->setParameter("body","哈哈");//商品描述 //自定义订单号,此处仅做举例 $timeStamp = time(); $out_trade_no = WxPayConf_pub::APPID."$timeStamp"; $unifiedOrder->setParameter("out_trade_no","$out_trade_no");//商户订单号 $unifiedOrder->setParameter("total_fee",1);//总金额 $unifiedOrder->setParameter("notify_url",WxPayConf_pub::NOTIFY_URL);//通知地址 $unifiedOrder->setParameter("trade_type","JSAPI");//交易类型 //非必填参数,商户可根据实际状况选填 //$unifiedOrder->setParameter("sub_mch_id","XXXX");//子商户号 //$unifiedOrder->setParameter("device_info","XXXX");//设备号 //$unifiedOrder->setParameter("attach","XXXX");//附加数据 //$unifiedOrder->setParameter("time_start","XXXX");//交易起始时间 //$unifiedOrder->setParameter("time_expire","XXXX");//交易结束时间 //$unifiedOrder->setParameter("goods_tag","XXXX");//商品标记 //$unifiedOrder->setParameter("openid","XXXX");//用户标识 //$unifiedOrder->setParameter("product_id","XXXX");//商品ID $prepay_id = $unifiedOrder->getPrepayId();
三、封装支付参数,发起微信支付url
//=========步骤3:使用jsapi调起支付============ $jsApi->setPrepayId($prepay_id); $jsApiParameters = $jsApi->getParameters(); echo $jsApiParameters;
获得上述的支付参数$jsApiParameters,前端就能够发起微信支付了!spa
公众号支付最多见的错误有:3d
一、签名错误
二、支付参数缺乏appid
三、当前url未注册
四、.......其余各类错误
扫码支付有两种模式
扫码模式一:静态二维码方式,即固定金额的扫码支付方式,适用于提早生成二维码,金额固定,扫码支付
扫码模式二:动态二维码方式,即根据订单金额动态生成二维码,PC版扫码支付即接入这种方式。
今天就写到这里吧,有点忘记了。
续上...
仍是直接整理出完整的demo吧,亲测运行,能发起整个支付流程。
须要完整代码加使用教程的能够联系 851 488 243,备注:微信支付
公众号支付
扫码支付模式一
扫码模式二
使用教程