微信公众号支付dome注意事项,及get、post无法传参解决办法

原创 2016年05月31日 17:00:36

实例运行注意事项:

  1. Wxpay.config.php设置APPID、MCHID、KEY、APPSECRET(按照dome中的要求配置就OK)
  2. 下载证书到cert目录下(到这一步dome实例就可以运行了)
  3. 运行时报错:call to undefind function libxml_disable_entity_loader() in;注意是你的服务器没有配置libxml2.dll造成的。要是实在解决不了可以注释掉Wxpay.data.php中(这种解决办法不提倡,会造成安全漏洞)

//将XML转为array
//禁止引用外部xml实体
//libxml_disable_entity_loader(false);
$this->values = json_decode(json_encode(simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA)), true);
return $this->values;

  • 报错:return_msg:JSAPI支持必须传openid,Wxpay.JsApiPay.php中"Uncaught exception  ' WxPayException' with message ' 参数错误' in ''。修改WxPay.JsApiPay.php中curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,TRUE);TRUE为FALSE;curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,2);2为FALSE

网站传参到微信支付接口(GET)传参解决方案:

  1. 传参路径:http://域名/Wxpay/example/jsapi.php?state=参数
  2. 修改WxPay.JsApiPay.php中JsApiPay类函数参数

public function GetOpenid()
{
//通过code获得openid
if (!isset($_GET['code'])){
//触发微信返回code码
$baseUrl = urlencode('http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']."?".$_SERVER['QUERY_STRING']);
$url = $this->__CreateOauthUrlForCode($baseUrl,$_GET['state']);

Header("Location: $url");
exit();
} else {
//获取code码,以获取openid
   $code = $_GET['code'];
$state=$_GET['state'];
$openid = $this->GetOpenidFromMp($code,$state);
return $openid;
}
}

/**

* 通过code从工作平台获取openid机器access_token
* @param string $code 微信跳转回来带上的code

* @return openid
*/
public function GetOpenidFromMp($code,$state)
{
$url = $this->__CreateOauthUrlForOpenid($code,$state);
//初始化curl
$ch = curl_init();
//设置超时
curl_setopt($ch, CURLOPT_TIMEOUT, $this->curl_timeout);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,FALSE);
curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
if(WxPayConfig::CURL_PROXY_HOST != "0.0.0.0" 
&& WxPayConfig::CURL_PROXY_PORT != 0){
curl_setopt($ch,CURLOPT_PROXY, WxPayConfig::CURL_PROXY_HOST);
curl_setopt($ch,CURLOPT_PROXYPORT, WxPayConfig::CURL_PROXY_PORT);
}
//运行curl,结果以jason形式返回
$res = curl_exec($ch);
curl_close($ch);
//取出openid
$data = json_decode($res,true);
$this->data = $data;
$openid = $data['openid'];
return $openid;
}

/**

* 构造获取code的url连接
* @param string $redirectUrl 微信服务器回跳的url,需要url编码

* @return 返回构造好的url
*/
private function __CreateOauthUrlForCode($redirectUrl,$state)
{
$urlObj["appid"] = WxPayConfig::APPID;
$urlObj["redirect_uri"] = "$redirectUrl";
$urlObj["response_type"] = "code";
$urlObj["scope"] = "snsapi_base";
$urlObj["state"] = $state."#wechat_redirect";
$bizString = $this->ToUrlParams($urlObj);
return "https://open.weixin.qq.com/connect/oauth2/authorize?".$bizString;
}

/**

* 构造获取open和access_toke的url地址
* @param string $code,微信跳转带回的code

* @return 请求的url
*/
private function __CreateOauthUrlForOpenid($code,$state)
{
$urlObj["appid"] = WxPayConfig::APPID;
$urlObj["secret"] = WxPayConfig::APPSECRET;
$urlObj["code"] = $code;
$urlObj["grant_type"] = "authorization_code";
$urlObj["state"] = $state;
$bizString = $this->ToUrlParams($urlObj);
return "https://api.weixin.qq.com/sns/oauth2/access_token?".$bizString;
}


注意:以上GET方式传参可能会导致信息泄露,谨慎使用!大家有更好的解决办法请留言,互相学习!谢谢阅读。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

微信公众号自定义菜单post请求错误解决办法

微信公众号开发,自定义菜单出不来,然而在网页调试工具里面执行就成功了

微信公众号开发问题与注意事项和解决方案

接入问题1.消息接入后,每次请求的session都不同。不要想着用一个用户用session来保存数据用户管理获取用户地理位置场景使用举例:获取附近有哪些网点。 关键点是:获取到 用户的地理位置信息:...

微信公众号申请流程和注意事项

微信公众号申请流程和注意事项

微信公众平台开发:基础篇(申请微信公众号认证流程及注意事项)

微信公众平台如何申请认证? 一、认证条件: 1、 公众账号的订阅用户达到500人; 2、 新浪微博、腾讯微博的认证微博帐号。 二、认证流程 1、申请认证的入口在设置页面;(粉丝未达到500人...

微信公众号无法使用post方法校验

微信公众号使用post方法校验的一些问题

关于微信H5公众号支付我们踩过的坑(get_brand_wcpay_request:fail)(防止更多人踩坑)

微信公众号支付,H5调起支付API,微信内置浏览器支付

VS2008无法支持X64平台的解决办法 & VS解决方案管理注意事项

用VS2008创建的项目 当尝试创建X64的编译平台时 发现平台下拉框中 没有X64的选项 原因是安装VS2008时 没有选中X64的支持(这个选项默认是没有选中的) 如图所示:

微信公众号开发使用测试号不能测试支付接口的解决方案

概述 大家很清楚,在测试环境中公众号的app id是绝对不能和生产环境的app id相同!!!如果这个问题都不清楚的就应该面壁去。。。 通常在测试环境上使用的的app id有两种,分别如下。 (...
  • chyohn
  • chyohn
  • 2017-01-16 16:31
  • 12345

微信公众号js支付开发注意点

js-sdk文档地址1.配置js-sdk 域名,登录微信公众号 2.页面引用 微信js文件 3.回调设置js-sdk的值 wx.config ({ ...

微信公号开发“该公众号暂时无法提供服务,请稍后再试”问题解决,OpenId获取

遇到这个问题,折腾了半天,真是够辛苦! 不过这一步应该是微信公号开发必须要经历的,因为只有回复消息,服务器那边返回回来,才说明走通嘛。 网络上有很多答案,但都没有解答我的问题,我用调试工具调试了下,也...
  • Nil88
  • Nil88
  • 2016-03-01 19:22
  • 2095
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)