源码为什么老是停在正在加载微信支付源码

基于H5的微信支付开发详解
这次总结一下用户在微信内打开网页时,可以调用微信支 付完成下单功能的模块开发,也就是在微信内的H5页面通过jsApi接口实现支付功能。当然了,微信官网上的微信支付开发文档也讲解的很详细,并且有实现 代码可供参考,有的朋友直接看文档就可以自己实现此支付接口的开发了。
为何我还写一篇微信支付接口的博文呢?第一,我们 必须知道,所谓的工作经验很多都是靠总结出来的,你只有总结了更多知识,积累了更多经验,你才能在该行业中脱颖而出,我个人觉得如今的招聘,很多都需要工 作经验(1年、3年、5年....),其实,工作时间的长久不能衡量一个人技术水平的高低,有的人一年的工作经验能拿3年工作经验的程序猿的工资,有的3 年工作经验的却有可能比别人只有一年工作经验的还低,所以说,总结才能让自己的知识体系,经验深度更牛逼更稳固(虽然写一篇博文挺花费时间的);第二,写 博文分享给大家还是挺有成就感的,首先是能让新手从我分享的博文中能学到东西,并且能快速将博文所讲解的技术运用到实际中来,所以我写的博文基本上能让新 人快速读懂并且容易理解,另外,技术大神的话,看到博文有讲解的不对之处,还可以指出,并且可以交流,何乐而不为呢,我们需要的就是分享和交流。
扯远了,直接进入该主题的详解。
现在的微信支付方式有N种,看下图,有刷卡支付、 公众号支付、扫码支付和APP支付,另外还有支付工具的开发,本博文选择的是公众号支付借口而开发进行讲解,其他几种支付接口开发基本上思路都是一样的, 只要你能看懂我这博文所讲解的基本思路,你基本上也能独自开发其他几个支付接口。
二、思路详解
我们可以拿微信支付接口文档里的业务流程时序图看 看,如下图,基本思路是这样子:首先在后台生成一个链接,展示给用户让用户点击(例如页面上有微信支付的按钮),用户点击按钮后,网站后台会根据订单的相 关信息生成一个支付订单,此时会调用统一下单接口,对微信支付系统发起请求,而微信支付系统受到请求后,会根据请求过来的数据,生成一个 预支付交易会话标识(prepay_id,就是通过这个来识别该订单的),我们的网站收到微信支付系统的响应后,会得到prepay_id,然后通过自己 构造微信支付所需要的参数,接着将支付所需参数返回给客户端,用户此时可能会有一个订单信息页,会有一个按钮,点击支付,此时会调用JSAPI接口对微信 支付系统发起 请求支付,微信支付系统检查了请求的相关合法性之后,就会提示输入密码,用户此时输入密码确认,微信支付系统会对其进行验证,通过的话会返回支付结果,然 后微信跳转会H5页面,这其中有一步是异步通知网站支付结果,我们网站需要对此进行处理(比如说异步支付结果通过后,需要更新数据表或者订单信息,例如标 志用户已支付该订单了,同时也需要更新订单日志,防止用户重复提交订单)。
三、代码讲解
本次开发环境用的是php5.6 + MySQL + Redis + Linux + Apache,所选用的框架的CI框架(这些环境不一定需要和我的一致,框架也可以自己选择,反正自己稍微修改下代码就能移植过去了)。
微信支付接口的开发代码我已经提前写好了,在这里我对其进行分析讲解,方便大家能轻松理解,当然,假如你有一定的基础,直接看代码就能理清所有流程了,并且我的代码基本上都写上了注释(对于新手来说,这一点比微信文档所提供的代码好一点)。
1、构造一个链接展示给用户
这里我们提前需要知道一个点,那就是请求统一下单接口需要微信用户的openid(详情可看这https://pay./wiki/doc/api/jsapi.php?chapter=9_1),而获取openid需要先获取code(详情可看这),所以我们需要构造一个获取code的URL:
Wxpay.php文件:&
defined('BASEPATH')&OR&exit('No&direct&script&access&allowed');&
class&Wxpay&extends&MY_Controller&{&
&&&&public&function&__construct()&{&
&&&&&&&&parent::__construct();&
&&&&&&&&$this-&load-&model('wxpay_model');&
&&&&public&function&index()&{&
&&&&&&&&$this-&smarty['wxPayUrl']&=&$this-&wxpay_model-&retWxPayUrl();&
&&&&&&&&$this-&displayView('wxpay/index.tpl');&
在这先看看model里所写的几个类:model里有几个类:微信支付类、统一下单接口类、响应型接口基类、请求型接口基类、所有接口基类、配置类。为何要分那么多类而不在一个类里实现所有的方法的,因为,这样看起来代码逻辑清晰,哪个类该干嘛就干嘛。
这里我直接附上model的代码了,里面基本上每一个类每一个方法甚至每一行代码都会有解释的了,这里我就不对其展开一句句分析了:
defined('BASEPATH')&OR&exit('No&direct&script&access&allowed');&
class&Wxpay_model&extends&CI_Model&{&
&&&&public&function&__construct()&{&
&&&&&&&&parent::__construct();&
&&&&public&function&retWxPayUrl()&{&
&&&&&&&&$jsApi&=&new&JsApi_handle();&
&&&&&&&&return&$jsApi-&createOauthUrlForCode();&
&&&&public&function&wxPayJsApi($data)&{&
&&&&&&&&$jsApi&=&new&JsApi_handle();&
&&&&&&&&$payData&=&$this-&returnData($data);&
&&&&&&&&$code&=&$_GET['code'];&
&&&&&&&&$jsApi-&setCode($code);&
&&&&&&&&$openid&=&$jsApi-&getOpenId();&
&&&&&&&&$unifiedOrderResult&=&null;&
&&&&&&&&if&($openid&!=&null)&{&
&&&&&&&&&&&&&
&&&&&&&&&&&&$unifiedOrderResult&=&$this-&getResult($payData,&'JSAPI',&$openid);&
&&&&&&&&&&&&&
&&&&&&&&&&&&$returnMessage&=&$this-&returnMessage($unifiedOrder,&'prepay_id');&
&&&&&&&&&&&&if&($returnMessage['resultCode'])&{&
&&&&&&&&&&&&&&&&$jsApi-&setPrepayId($retuenMessage['resultField']);&
&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&$returnMessage['resultData']&=&$jsApi-&getParams();&
&&&&&&&&&&&&}&&
&&&&&&&&&&&&return&$returnM&
&&&&&&&&}&
&&&&public&function&returnData($data)&{&
&&&&&&&&$payData['sn']&=&$data['sn'];&
&&&&&&&&$payData['body']&=&$data['goods_name'];&
&&&&&&&&$payData['out_trade_no']&=&$data['order_no'];&
&&&&&&&&$payData['total_fee']&=&$data['fee'];&
&&&&&&&&$payData['attach']&=&$data['attach'];&
&&&&&&&&return&$payD&
&&&&public&function&getResult($payData,&$trade_type,&$openid&=&null)&{&
&&&&&&&&$unifiedOrder&=&new&UnifiedOrder_handle();&
&&&&&&&&if&($opneid&!=&null)&{&
&&&&&&&&&&&&$unifiedOrder-&setParam('openid',&$openid);&
&&&&&&&&}&
&&&&&&&&$unifiedOrder-&setParam('body',&$payData['body']);&&&
&&&&&&&&$unifiedOrder-&setParam('out_trade_no',&$payData['out_trade_no']);&&
&&&&&&&&$unifiedOrder-&setParam('total_fee',&$payData['total_fee']);&&&&&
&&&&&&&&$unifiedOrder-&setParam('attach',&$payData['attach']);&&&
&&&&&&&&$unifiedOrder-&setParam('notify_url',&base_url('/Wxpay/pay_callback'));&
&&&&&&&&$unifiedOrder-&setParam('trade_type',&$trade_type);&&
&&&&&&&&return&$unifiedOrder-&getResult();&
&&&&public&function&returnMessage($unifiedOrderResult,$field){&
&&&&&&&&$arrMessage=array("resultCode"=&0,"resultType"=&"获取错误","resultMsg"=&"该字段为空");&
&&&&&&&&if($unifiedOrderResult==null){&
&&&&&&&&&&&&$arrMessage["resultType"]="未获取权限";&
&&&&&&&&&&&&$arrMessage["resultMsg"]="请重新打开页面";&
&&&&&&&&}elseif&($unifiedOrderResult["return_code"]&==&"FAIL")&
&&&&&&&&{&
&&&&&&&&&&&&$arrMessage["resultType"]="网络错误";&
&&&&&&&&&&&&$arrMessage["resultMsg"]=$unifiedOrderResult['return_msg'];&
&&&&&&&&}&
&&&&&&&&elseif($unifiedOrderResult["result_code"]&==&"FAIL")&
&&&&&&&&{&
&&&&&&&&&&&&$arrMessage["resultType"]="订单错误";&
&&&&&&&&&&&&$arrMessage["resultMsg"]=$unifiedOrderResult['err_code_des'];&
&&&&&&&&}&
&&&&&&&&elseif($unifiedOrderResult[$field]&!=&NULL)&
&&&&&&&&{&
&&&&&&&&&&&&$arrMessage["resultCode"]=1;&
&&&&&&&&&&&&$arrMessage["resultType"]="生成订单";&
&&&&&&&&&&&&$arrMessage["resultMsg"]="OK";&
&&&&&&&&&&&&$arrMessage["resultField"]&=&$unifiedOrderResult[$field];&
&&&&&&&&}&
&&&&&&&&return&$arrM&
&&&&public&function&wxPayNotify($xml)&{&
&&&&&&&&$notify&=&new&Wxpay_server();&
&&&&&&&&$notify-&saveData($xml);&
&&&&&&&&if&($notify-&checkSign()&==&false)&{&
&&&&&&&&&&&&$notify-&setReturnParameter("return_code","FAIL");&
&&&&&&&&&&&&$notify-&setReturnParameter("return_msg","签名失败");&
&&&&&&&&}&else&{&
&&&&&&&&&&&&$notify-&checkSign=TRUE;&
&&&&&&&&&&&&$notify-&setReturnParameter("return_code","SUCCESS");&
&&&&&&&&}&
&&&&&&&&return&$&
class&JsApi_handle&extends&JsApi_common&{&
&&&&public&$&
&&&&public&$&
&&&&public&$&
&&&&public&$prepay_&
&&&&public&$curl_&
&&&&function&__construct()&
&&&&&&&&$this-&curl_timeout&=&WxPayConf::CURL_TIMEOUT;&
&&&&public&function&createOauthUrlForCode()&{&
&&&&&&&&$redirectUrl&=&"/wxpay/confirm/".$orderId."?showwxpaytitle=1";&
&&&&&&&&$urlParams['appid']&=&WxPayConf::APPID;&
&&&&&&&&$urlParams['redirect_uri']&=&$redirectU&
&&&&&&&&$urlParams['response_type']&=&'code';&
&&&&&&&&$urlParams['scope']&=&'snsapi_base';&
&&&&&&&&$urlParams['state']&=&"STATE"."#wechat_redirect";&
&&&&&&&&$queryString&=&$this-&ToUrlParams($urlParams,&false);&
&&&&&&&&return&"https://open./connect/oauth2/authorize?".$queryS&
&&&&public&function&setCode($code)&{&
&&&&&&&&$this-&code&=&$&
&&&&public&function&setPrepayId($prepayId)&
&&&&&&&&$this-&prepay_id&=&$prepayId;&
&&&&public&function&getParams()&
&&&&&&&&$jsApiObj["appId"]&=&WxPayConf::APPID;&
&&&&&&&&$timeStamp&=&time();&
&&&&&&&&$jsApiObj["timeStamp"]&=&"$timeStamp";&
&&&&&&&&$jsApiObj["nonceStr"]&=&$this-&createNoncestr();&
&&&&&&&&$jsApiObj["package"]&=&"prepay_id=$this-&prepay_id";&
&&&&&&&&$jsApiObj["signType"]&=&"MD5";&
&&&&&&&&$jsApiObj["paySign"]&=&$this-&getSign($jsApiObj);&
&&&&&&&&$this-&parameters&=&json_encode($jsApiObj);&
&&&&&&&&return&$this-&&
&&&&public&function&getOpenId()&{&
&&&&&&&&$url&=&$this-&createOauthUrlForOpenid();&
&&&&&&&&$ch&=&curl_init();&
&&&&&&&&curl_setopt($ch,&CURL_TIMEOUT,&$this-&curl_timeout);&
&&&&&&&&curl_setopt($ch,&CURL_URL,&$url);&
&&&&&&&&curl_setopt($ch,&CURL_SSL_VERIFYPEER,&FALSE);&
&&&&&&&&curl_setopt($ch,&CURL_SSL_VERIFYHOST,&FALSE);&
&&&&&&&&curl_setopt($ch,&CURL_HEADER,&FALSE);&
&&&&&&&&curl_setopt($ch,&CURL_RETURNTRANSFER,&TRUE);&
&&&&&&&&$res&=&curl_exec($ch);&
&&&&&&&&curl_close($ch);&
&&&&&&&&$data&=&json_decode($res);&
&&&&&&&&if&(isset($data['openid']))&{&
&&&&&&&&&&&&$this-&openid&=&$data['openid'];&
&&&&&&&&}&else&{&
&&&&&&&&&&&&return&null;&
&&&&&&&&}&
&&&&&&&&return&$this-&&
&&&&public&function&createOauthUrlForOpenid()&{&
&&&&&&&&$urlParams['appid']&=&WxPayConf::APPID;&
&&&&&&&&$urlParams['secret']&=&WxPayConf::APPSECRET;&
&&&&&&&&$urlParams['code']&=&$this-&&
&&&&&&&&$urlParams['grant_type']&=&"authorization_code";&
&&&&&&&&$queryString&=&$this-&ToUrlParams($urlParams,&false);&
&&&&&&&&return&"https://api./sns/oauth2/access_token?".$queryS&
class&UnifiedOrder_handle&extends&Wxpay_client_handle&{&
&&&&public&function&__construct()&{&
&&&&&&&&$this-&url&=&"https://api.mch./pay/unifiedorder";&
&&&&&&&&$this-&curl_timeout&=&WxPayConf::CURL_TIMEOUT;&
class&Wxpay_server_handle&extends&JsApi_common{&
&&&&public&$&&
&&&&public&$returnP&&&&
&&&&public&function&saveData($xml)&{&
&&&&&&&&$this-&data&=&$this-&xmlToArray($xml);&&
&&&&public&function&checkSign()&{&
&&&&&&&&$tmpData&=&$this-&&
&&&&&&&&unset($temData['sign']);&
&&&&&&&&$sign&=&$this-&getSign($tmpData);&
&&&&&&&&if&($this-&data['sign']&==&$sign)&{&
&&&&&&&&&&&&return&true;&
&&&&&&&&}&
&&&&&&&&return&false;&
&&&&function&setReturnParameter($parameter,&$parameterValue)&
&&&&&&&&$this-&returnParameters[$this-&trimString($parameter)]&=&$this-&trimString($parameterValue);&
&&&&function&returnXml()&
&&&&&&&&$returnXml&=&$this-&createXml();&
&&&&&&&&return&$returnX&
class&Wxpay_client_handle&extends&JsApi_common{&
&&&&public&$&&
&&&&public&$&&
&&&&public&$&&
&&&&public&$&&
&&&&public&$curl_&&
&&&&public&function&setParam($param,&$paramValue)&{&
&&&&&&&&$this-&params[$this-&tirmString($param)]&=&$this-&trimString($paramValue);&
&&&&public&function&getResult()&{&
&&&&&&&&$this-&postxml();&&
&&&&&&&&$this-&result&=&$this-&xmlToArray($this-&response);&
&&&&&&&&return&$this-&&
&&&&public&function&postxml()&{&
&&&&&&&&$xml&=&$this-&createXml();&
&&&&&&&&$this-&response&=&$this-&postXmlCurl($xml,&$this-&curl,&$this-&curl_timeout);&
&&&&&&&&return&$this-&&
&&&&public&function&createXml()&{&
&&&&&&&&$this-&params['appid']&=&WxPayConf::APPID;&&
&&&&&&&&$this-&params['mch_id']&=&WxPayConf::MCHID;&&
&&&&&&&&$this-&params['nonce_str']&=&$this-&createNoncestr();&&&&
&&&&&&&&$this-&params['sign']&=&$this-&getSign($this-&params);&&&
&&&&&&&&return&$this-&arrayToXml($this-&params);&&
class&JsApi_common&{&
&&&&function&__construct()&{&
&&&&public&function&trimString($value)&{&
&&&&&&&&$ret&=&null;&
&&&&&&&&if&(null&!=&$value)&{&
&&&&&&&&&&&&$ret&=&trim($value);&
&&&&&&&&&&&&if&(strlen($ret)&==&0)&{&
&&&&&&&&&&&&&&&&$ret&=&null;&
&&&&&&&&&&&&}&
&&&&&&&&}&&
&&&&&&&&return&$&
&&&&public&function&createNoncestr($length&=&32)&{&
&&&&&&&&$chars&=&"abcdefghijklmnopqrstuvwxyz";&
&&&&&&&&$str&=&'';&
&&&&&&&&for&($i&=&0;&$i&&&$&$i++)&{&
&&&&&&&&&&&&$str&.=&substr($chars,&mt_rand(0,&strlen($chars)&-&1),&1);&
&&&&&&&&}&
&&&&&&&&return&$&
&&&&public&function&ToUrlParams($urlParams,&$needUrlencode)&{&
&&&&&&&&$buff&=&"";&
&&&&&&&&ksort($urlParams);&
&&&&&&&&foreach&($urlParams&as&$k&=&&$v)&{&
&&&&&&&&&&&&if($needUrlencode)&$v&=&urlencode($v);&
&&&&&&&&&&&&$buff&.=&$k&.'='.&$v&.'&';&
&&&&&&&&}&
&&&&&&&&$reqString&=&'';&
&&&&&&&&if&(strlen($buff)&&&0)&{&
&&&&&&&&&&&&$reqString&=&substr($buff,&0,&strlen($buff)&-&1);&
&&&&&&&&}&
&&&&&&&&return&$reqS&
&&&&public&function&getSign($obj)&{&
&&&&&&&&foreach&($obj&as&$k&=&&$v)&{&
&&&&&&&&&&&&$params[$k]&=&$v;&
&&&&&&&&}&
&&&&&&&&ksort($params);&
&&&&&&&&$str&=&$this-&ToUrlParams($params,&false);&&&
&&&&&&&&$str&=&$str."$key=".WxPayConf::KEY;&
&&&&&&&&$str&=&md5($str);&
&&&&&&&&$result&=&strtoupper($str);&
&&&&&&&&return&$&
&&&&public&function&arrayToXml($arr)&{&
&&&&&&&&$xml&=&"&xml&";&
&&&&&&&&foreach&($arr&as&$k&=&&$v)&{&
&&&&&&&&&&&&if&(is_numeric($val))&{&
&&&&&&&&&&&&&&&&$xml&.=&"&".$key."&".$key."&/".$key."&";&
&&&&&&&&&&&&}&else&{&
&&&&&&&&&&&&&&&&$xml&.=&"&".$key."&&![CDATA[".$val."]]&&/".$key."&";&
&&&&&&&&&&&&}&
&&&&&&&&}&
&&&&&&&&$xml&.=&"&/xml&";&
&&&&&&&&return&$&
&&&&public&function&xmlToArray($xml)&{&
&&&&&&&&$arr&=&json_decode(json_encode(simplexml_load_string($xml,&'SinpleXMLElement',&LIBXML_NOCDATA)),&true);&
&&&&&&&&return&$&
&&&&public&function&postXmlCurl($xml,&$url,&$second&=&30)&{&
&&&&&&&&$ch&=&curl_init();&
&&&&&&&&curl_setopt($ch,&CURL_TIMEOUT,&$second);&
&&&&&&&&curl_setopt($ch,&CURL_URL,&$url);&
&&&&&&&&curl_setopt($ch,&CURL_SSL_VERIFYHOST,&FALSE);&
&&&&&&&&curl_setopt($ch,&CURL_SSL_VERIFYPEER,&FALSE);&
&&&&&&&&curl_setopt($ch,&CURL_HEADER,&FALSE);&
&&&&&&&&curl_setopt($ch,&CURL_RETURNTRANSFER,&TRUE);&
&&&&&&&&curl_setopt($ch,&CURL_POST,&TRUE);&
&&&&&&&&curl_setopt($ch,&CURL_POSTFIELDS,&$xml);&
&&&&&&&&$res&=&curl_exec($ch);&
&&&&&&&&if&($res)&{&
&&&&&&&&&&&&curl_close($ch);&
&&&&&&&&&&&&return&$&
&&&&&&&&}&else&{&
&&&&&&&&&&&&$error&=&curl_errno($ch);&
&&&&&&&&&&&&echo&"curl出错,错误码:$error"."&br&";&
&&&&&&&&&&&&echo&"&a&href='http://curl.haxx.se/libcurl/c/libcurl-errors.html'&错误原因查询&/a&&/br&";&
&&&&&&&&&&&&curl_close($ch);&
&&&&&&&&&&&&return&false;&
&&&&&&&&}&
class&WxPayConf&{&
&&&&const&APPID&=&'wx654a22c';&
&&&&const&MCHID&=&'';&
&&&&const&MCHNAME&=&'KellyCen的博客';&
&&&&const&KEY&=&'0000000';&
&&&&const&APPSECRET&=&'000';&
&&&&const&SSLCERT_PATH&=&'/home/WxPayCacert/apiclient_cert.pem';&
&&&&const&SSLKEY_PATH&=&'/home/WxPayCacert/apiclient_key.pem';&
&&&&const&SSLCA_PATH&=&'/home/WxPayCacert/rootca.pem';&
&&&&const&CURL_TIMEOUT&=&30;&
Wxpay_model.php&
获取到code的URL后,将其分配到页面去,让用户去点击,用户进行点击后,就会从微信服务器获取到code,然后回调到redirect_uri所指的地址去。
有好的文章希望站长之家帮助分享推广,猛戳这里
本网页浏览已超过3分钟,点击关闭或灰色背景,即可回到网页查看: 3371|回复: 8
程序在微信内运行时,微信SDK支付失败!!!
主题帖子积分
服务器操作系统:
应用服务器:
客户端操作系统:
本帖最后由 Masion 于
14:40 编辑
照着外卖案例扒下来的微信内支付代码如下
& & & & Model.prototype.payOrderByWeixinJSSDK = function(payDtd) {& & & & & & & & //微信内支付订单
& & & & & & & & if (!navigator.WxApi) {& & & & & & & & & & & & //如果浏览器没有微信api,则返回错误代码-33
& & & & & & & & & & & & payDtd.reject(-33);
& & & & & & & & & & & &
& & & & & & & & }
& & & & & & & & var payRecordData = p(&payRecordData&);
& & & & & & & & var tradeNo = payRecordData.getCurrentRowID();& & & & & & & & & & & & //已订单号作为交易号
& & & & & & & & var notifyUrl = location.origin + &/baas/weixin/notify&;& & & & & & & & //提示信息
& & & & & & & & this.wxApi.chooseWXPay({& & & & //执行微信付款
& & & & & & & & & & & & body : &发型师积分充值&,& & & & & & & & & & & & //商品名称
& & & & & & & & & & & & mchId : &&,& & & & //商品编码
& & & & & & & & & & & & notifyUrl : notifyUrl,&&//提示信息???
& & & & & & & & & & & & outTradeNo : tradeNo,& & & & //订单号
& & & & & & & & & & & & totalFee : $(this.getElementByXid(&col18&)).html()*100& & & & & & & & & & & & //支付金额
& & & & & & & & }).done(function() {& & & & & & & & //支付成功返回2
& & & & & & & & & & & & payDtd.resolve(2);
& & & & & & & & }).fail(function() {& & & & & & & & //支付失败返回-20
& & & & & & & & & & & & payDtd.reject(-20);
& & & & & & & & });
& & & & };
长春鱼熊企业管理咨询有限公司
(出处: 起步论坛)
主题帖子积分
在微信内运行时,控制台报错:
log4j:WARN See
for more info.
java.lang.RuntimeException: me.mon.exception.WxErrorException: 微信错误 errcode=40125, errmsg=invalid appsecret, view more at
hint: [H93RDa0707vr19]
json:{&errcode&:40125,&errmsg&:&invalid appsecret, view more at
hint: [H93RDa0707vr19]&}
& & & & at com.justep.weixin.mp.WxMpJsApiServlet.getTicket(WxMpJsApiServlet.java:90)
& & & & at com.justep.weixin.mp.WxMpJsApiServlet.service(WxMpJsApiServlet.java:35)
& & & & at javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
& & & & at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
& & & & at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
& & & & at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
& & & & at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
& & & & at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
& & & & at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
& & & & at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
& & & & at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
& & & & at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861)
& & & & at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:606)
& & & & at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
& & & & at java.lang.Thread.run(Thread.java:745)
Caused by: me.mon.exception.WxErrorException: 微信错误 errcode=40125, errmsg=invalid appsecret, view more at
hint: [H93RDa0707vr19]
json:{&errcode&:40125,&errmsg&:&invalid appsecret, view more at
hint: [H93RDa0707vr19]&}
& & & & at me.chanjar.weixin.mp.api.WxMpServiceImpl.getAccessToken(WxMpServiceImpl.java:134)
& & & & at me.chanjar.weixin.mp.api.WxMpServiceImpl.executeInternal(WxMpServiceImpl.java:572)
& & & & at me.chanjar.weixin.mp.api.WxMpServiceImpl.execute(WxMpServiceImpl.java:548)
& & & & at me.chanjar.weixin.mp.api.WxMpServiceImpl.getJsapiTicket(WxMpServiceImpl.java:161)
& & & & at me.chanjar.weixin.mp.api.WxMpServiceImpl.getJsapiTicket(WxMpServiceImpl.java:150)
& & & & at com.justep.weixin.mp.WxMpJsApiServlet.getTicket(WxMpJsApiServlet.java:87)
& & & & ... 14 more
九月 12, :07 下午 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet weixin jsapi threw exception
me.mon.exception.WxErrorException: 微信错误 errcode=40125, errmsg=invalid appsecret, view more at
hint: [H93RDa0707vr19]
json:{&errcode&:40125,&errmsg&:&invalid appsecret, view more at
hint: [H93RDa0707vr19]&}
& & & & at me.chanjar.weixin.mp.api.WxMpServiceImpl.getAccessToken(WxMpServiceImpl.java:134)
& & & & at me.chanjar.weixin.mp.api.WxMpServiceImpl.executeInternal(WxMpServiceImpl.java:572)
& & & & at me.chanjar.weixin.mp.api.WxMpServiceImpl.execute(WxMpServiceImpl.java:548)
& & & & at me.chanjar.weixin.mp.api.WxMpServiceImpl.getJsapiTicket(WxMpServiceImpl.java:161)
& & & & at me.chanjar.weixin.mp.api.WxMpServiceImpl.getJsapiTicket(WxMpServiceImpl.java:150)
& & & & at com.justep.weixin.mp.WxMpJsApiServlet.getTicket(WxMpJsApiServlet.java:87)
& & & & at com.justep.weixin.mp.WxMpJsApiServlet.service(WxMpJsApiServlet.java:35)
& & & & at javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
& & & & at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
& & & & at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
& & & & at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
& & & & at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
& & & & at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
& & & & at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
& & & & at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
& & & & at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
& & & & at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861)
& & & & at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:606)
& & & & at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
& & & & at java.lang.Thread.run(Thread.java:745)
java.lang.RuntimeException: me.mon.exception.WxErrorException: 微信错误 errcode=40125, errmsg=invalid appsecret, view more at
hint: [THL0_0707vr18]
json:{&errcode&:40125,&errmsg&:&invalid appsecret, view more at
hint: [THL0_0707vr18]&}
& & & & at com.justep.weixin.mp.WxMpJsApiServlet.getTicket(WxMpJsApiServlet.java:90)
& & & & at com.justep.weixin.mp.WxMpJsApiServlet.service(WxMpJsApiServlet.java:35)
& & & & at javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
& & & & at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
& & & & at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
& & & & at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
& & & & at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
& & & & at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
& & & & at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
& & & & at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
& & & & at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
& & & & at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861)
& & & & at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:606)
& & & & at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
& & & & at java.lang.Thread.run(Thread.java:745)
Caused by: me.mon.exception.WxErrorException: 微信错误 errcode=40125, errmsg=invalid appsecret, view more at
hint: [THL0_0707vr18]
json:{&errcode&:40125,&errmsg&:&invalid appsecret, view more at
hint: [THL0_0707vr18]&}
& & & & at me.chanjar.weixin.mp.api.WxMpServiceImpl.getAccessToken(WxMpServiceImpl.java:134)
& & & & at me.chanjar.weixin.mp.api.WxMpServiceImpl.executeInternal(WxMpServiceImpl.java:572)
& & & & at me.chanjar.weixin.mp.api.WxMpServiceImpl.execute(WxMpServiceImpl.java:548)
& & & & at me.chanjar.weixin.mp.api.WxMpServiceImpl.getJsapiTicket(WxMpServiceImpl.java:161)
& & & & at me.chanjar.weixin.mp.api.WxMpServiceImpl.getJsapiTicket(WxMpServiceImpl.java:150)
& & & & at com.justep.weixin.mp.WxMpJsApiServlet.getTicket(WxMpJsApiServlet.java:87)
& & & & ... 14 more
九月 12, :07 下午 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet weixin jsapi threw exception
me.mon.exception.WxErrorException: 微信错误 errcode=40125, errmsg=invalid appsecret, view more at
hint: [THL0_0707vr18]
json:{&errcode&:40125,&errmsg&:&invalid appsecret, view more at
hint: [THL0_0707vr18]&}
& & & & at me.chanjar.weixin.mp.api.WxMpServiceImpl.getAccessToken(WxMpServiceImpl.java:134)
& & & & at me.chanjar.weixin.mp.api.WxMpServiceImpl.executeInternal(WxMpServiceImpl.java:572)
& & & & at me.chanjar.weixin.mp.api.WxMpServiceImpl.execute(WxMpServiceImpl.java:548)
& & & & at me.chanjar.weixin.mp.api.WxMpServiceImpl.getJsapiTicket(WxMpServiceImpl.java:161)
& & & & at me.chanjar.weixin.mp.api.WxMpServiceImpl.getJsapiTicket(WxMpServiceImpl.java:150)
& & & & at com.justep.weixin.mp.WxMpJsApiServlet.getTicket(WxMpJsApiServlet.java:87)
& & & & at com.justep.weixin.mp.WxMpJsApiServlet.service(WxMpJsApiServlet.java:35)
& & & & at javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
& & & & at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
& & & & at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
& & & & at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
& & & & at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
& & & & at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
& & & & at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
& & & & at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
& & & & at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
& & & & at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861)
& & & & at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:606)
& & & & at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
& & & & at java.lang.Thread.run(Thread.java:745)
长春鱼熊企业管理咨询有限公司
(出处: 起步论坛)
主题帖子积分
本帖最后由 Masion 于
14:47 编辑
在之前页面加载过程中
& && && && && && && && &if (justep.Browser.isWeChat || true) {
& && && && && && && && && && &&&this.wxApi = new navigator.WxApi(&wxe87e324cf1f44ac7&);
& && && && && && && && &}
这里的wxe87e324cf1f44ac7 是公众号的appID
长春鱼熊企业管理咨询有限公司
(出处: 起步论坛)
主题帖子积分
为什么报错,是我有地方没设置明白吗????
长春鱼熊企业管理咨询有限公司
(出处: 起步论坛)
主题帖子积分
报错信息上说appSecret无效
但没有什么地方让我填写appScret呀?
长春鱼熊企业管理咨询有限公司
(出处: 起步论坛)
主题帖子积分
报错信息上说appSecret无效
但没有什么地方让我填写appScret呀?
在plugin.xml中weixin_api_key就是配置appSecret
远程的联系方法QQ,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题&&&&
如按照该方法解决,请及时跟帖,便于版主结贴
主题帖子积分
啊,我还以为weixin_api_key是微信商户的密码呢
长春鱼熊企业管理咨询有限公司
(出处: 起步论坛)
主题帖子积分
在plugin.xml中weixin_api_key就是配置appSecret
试了两天,问题没有解决
另外,感觉不对
程序在微信内运行,和打包是的微信配置文件有什么关系呢
长春鱼熊企业管理咨询有限公司
(出处: 起步论坛)
主题帖子积分
微信内支付读取了apache-tomcat\webapps\baas\WEB-INF\weixin.config.xml中配置的有secret
远程的联系方法QQ,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题&&&&
如按照该方法解决,请及时跟帖,便于版主结贴
Powered by

我要回帖

更多关于 微信公众号支付源码 的文章

 

随机推荐