微信支付JSAPI开发——官方Demo的错误、自定义参数传递
来源:互联网 发布:java和net就业前景 编辑:程序博客网 时间:2024/06/06 09:39
可能有些地方说的不是很好,不理解的可以私聊我或者在评论区发表,我基本每天都会抽出时间逛逛CSDN的。求不喷就行T_T。
之前接了一个项目,开发微信端的一个商城。在一开始开发过程中,并没有遇到什么问题。
随着开发进程的深入,到了支付这步时,客户需要接入微信支付。
以下是我遇到过的问题以及我的解决方法。
一、使用官方的Demo以及出现的错误:
因为是第一次做微信支付,就去官方开发文档查了下。
- 第一步确认类型是JSAPI的,由于目前是微信支付V3版本,并没有paysignKey这个参数(这时V2里面官方提供的一个参数)。
- 然后根据官方给的文档,我找客户要了所需要的几个参数(在申请微信支付成功后微信给你发送的邮件里)【APPID、MCHID、KEY、APPSECRET】这里介绍下这四个参数:APPID和APPSECRET这两个可以在登录微信公众平台后在基本配置里面看见。重点是MCHID(受理商ID)和KEY(商户支付密钥),这两个在那个邮件里。
- 下载官方给的Demo,不过官方给的Demo里有几个错(开发过程中遇到过,百度下发现好多喷微信的T_T),其中错误是在WxPayPubHelper.php文件里,里面curl部分那个设置的超时错误了,正确应该是【curl_setopt($ch, CURLOPT_TIMEOUT, $second);】。文件里有多处用到,最好每个都看下T_T。
- 下载好后,把参数写入配置文件里【WxPay.pub.config.php】。
- 那个证书其实是不需要的(对于JSAPI)。
可以移步下面的官方链接看看它的参数等(这里面说的很详细):
https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_1
二、PHP自定义传递参数:
当我调通微信支付时,看见支付那个页面时候很兴奋,但是兴奋之后我发现有问题了,始终是一分钱(其实对于用户来说很爽O(∩_∩)O,但是客户会杀了我的T_T)。所以我就得改啊。
可是我发现GET过来的数据在获取openid那一步过后消失了(打印很多次发现的T_T)。WTF!竟然会出现这种情况,真是第一次遇见。
其实这种情况很好理解,因为获取openid那一步页面跳转了,之前GET的数据也就消失了。其实不止GET的,POST、REQUEST等到的数据都会消失。一个大写的NULL!
发现这个问题后,试了很多办法,都行不通。这个时候已经快疯了T_T。
多次尝试无果后,我再次回头看看程序,发现那个重定向的URL里面有个STATE,官方给的解释是【重定向后会带上state参数,开发者可以填写a-zA-Z0-9的参数值,最多128字节】,我就想是不是可以把GET到的数据整理后替换这个STATE,然后不就在这个URL上了嘛,可以再次GET到,所以我就试了下,打印出来果然可以(可以想象当时的兴奋),不过又兴奋之后又发现问题T_T,可以把参数分开???
因为之前是把所需参数放在一个数组后转换成json格式的字符串的,解析后发现是NULL,这个时候我去把获取的值不解析直接打印出来看看,发现有 \ 这个鬼。怪不得解析后没有东西了,这个时候的值根本就不是JSON格式的字符串,所以我就再次把 \ 去掉了,再次调试后果然可以了。
下面是代码:
if (!isset($_GET['code'])){//触发微信返回code码$url = $jsApi->createOauthUrlForCode(WxPayConf_pub::JS_API_CALL_URL);$state = json_encode(array( "out_trade_no" => "$out_trade_no", "total_fee" => "$price" )); $url = str_replace("STATE", $state, $url);Header("Location: $url"); } else { //获取code码,以获取openid $code = $_GET['code']; $jsApi->setCode($code);$openid = $jsApi->getOpenId();$state = $_GET['state'];$state = str_replace("\\", "", $state);$param = json_decode($state, true);$out_trade_no = $param['out_trade_no'];$price = $param['total_fee'];}
到此为止,微信开发遇到的坑都解决了,后续的事情就靠各家的要求去处理了T_T。
- 微信支付JSAPI开发——官方Demo的错误、自定义参数传递
- 微信支付爬坑记——微信支付开发出现redirect_uri参数错误的解决方法
- 微信支付jsapi缺少参数 total_fee
- 微信jsapi支付,缺少参数。
- 微信jsapi支付开发遇到的坑
- 微信支付-JSAPI模式开发
- 微信JSAPI支付
- 微信 jsapi 支付
- 微信支付Jsapi支付
- 微信支付JSAPI支付
- 微信支付开发C# SDK JSAPI支付开发流程
- 解决微信官方提供的JSAPI php demo的问题
- 微信支付开发出现redirect_uri参数错误的解决方法
- ASP.NET 下的微信支付开发配置实践(官方demo)
- 微信支付调用JSAPI缺少参数:timeStamp
- 微信支付调用JSAPI缺少参数:timeStamp
- Iphone手机,微信调用支付JSAPI缺少参数 timeStamp
- 微信支付调用JSAPI缺少参数:timeStamp
- Spring AOP动态代理原理与实现方式
- Oracle-20-is null使用&order by子句
- Camera AIDL - BpCamera,AIDL
- 领导者-追随者模型介绍
- Ubuntu12.04 root登陆方法【保证有效】
- 微信支付JSAPI开发——官方Demo的错误、自定义参数传递
- Lua和C++交互详细总结
- HDU 1114
- 算法(读书笔记):4.图
- 链式A+B
- Turtlebot学习指导第二篇_安装Turtlebot软件包,配置主从机网络
- 数字图像处理实验MATLAB版+实验报告亲笔
- Android之Zygote启动详解
- HttpClient的简单使用--HttpGET和HttpPost