一、开发准备工作
1.登录微信公众平台,完成微信服务号认证(这样才能有微信支付的权限);
2.申请“微信支付”;
3.申请云服务器和域名;
二、微信公众号支付正式开发
1.在微信支付-->使用教程-->公众号支付,即可查看微信公众号支付开发文档,下载PHP的SDK和DEMO文档,解压后目录如下;
2.按照doc文件夹下的说明文档;
a、替换cert中API证书文件(在商户平台-->账户中心-->API 安全中下载)
b、修改lib/WxPay.Config.php中的配置信息(APPID、MCHID好说,KEY和APPSECRET需要设置)
KEY: 在商户平台-->账户中心-->API 安全中,设置API秘钥(这里设置为32位随机字符串,自己定义,注意保存);
APPSECRET:在微信公众平台-->开发-->基本配置,重置开发者密码(AppSecret),顺便添加IP白名单;
3.把解药的SDK拷贝到自己想放的目录,我的是放app/Http/WxAPI文件夹下,在控制器的方法中就可以调用demo中下单的方法,通过return view('wxpay.payment',['jsApiParameters'=>$jsApiParameters,'total_fee'=>$total_fee]); 返回参数到前台页面,前台调用jsapi实现支付;
开发过程中踩过的坑:
a、找不到类,无法实例化;(检查是否声明namespace、require文件路径)
b、在//①、获取用户openid时,代码执行到$openId = $tools->GetOpenid();服务器回调返回code时(这里微信服务器 返回code时是直接在url地址后面加上code的值,因此注意是get方式传值),控制器中该跳转方法会执行两次,并且返回的code值不一样;
解决办法如下,在拼接地址后面加&connect_redirect=1;(网上搜的,为什么这么加没找到~0~);
c、提示url未注册时,检查微信商户平台-->产品中心-->开发配置-->公众号支付中,支付授权目录是否添加;
d、在notify_url回调地址中总是收不到微信服务器返回的
第一步:检查路由是否为post方式传值,因为服务器返回的数据流是通过post传给商户平台的;
第二步:如果还是无法收到,可以通过在线测试工具,模拟服务器返回
三、官方文档阅读意见
1.微信公众平台-->开发-->开发者工具选项下的“开发者文档”中可以重点了解如下目录和微信JS-SDK说明文档中“微信支付- 发起 一个微信请求”部分,内容不多,可以借鉴;
2.微信公众平台-->微信支付-->使用教程-->公众号支付,可以重点了解如下部分;
以上为微信公众号开发心得,有很多不足,仅供参考。
四、网上视屏笔记
微信开发需要具备的条件:
1.服务号(企业);2.通过微信认证(300元/年);3. 开通微信支付功能;4.通过备案的IP地址(仅限80端口)
步骤:
1.验证JSSDK(第一次签名)
a、获取access_token;b、获取jsapi_ticket;c、签名(sha1);d、返回参数;
2.获取预处理prepare_id(第二次签名)
2.1.获取openid
a、获取code;b、通过code获取openid;
2.2.notify_url
2.3.签名(md5)
2.4.获取prepare_id
3.返回微信支付参数(第三次签名)
a、获取prepare_id;b、签名(md5);c、返回参数;