【第21期】观点:人工智能到底用 GPU?还是用 FPGA?

微信公众号支付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方式传参可能会导致信息泄露,谨慎使用!大家有更好的解决办法请留言,互相学习!谢谢阅读。

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

相关文章推荐

微信公众号支付

官方教程 https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_1   js sdk说明文档 http://mp.weixin.qq.com/wiki/7/aaa137b55fb2e0456bf8dd9148dd613f.html   php版 demo 及微信支付常见坑 https

lnmp上部署微信公众号项目注意事项

一.注意微信的项目单独放在一个目录下面,不要和其他项目混放,这样会导致进入微信后台的token验证失败(url地址访问不到微信主页); 二.配置虚拟主机时,server_name一项把域名写完整: ...

接收微信公众号post数据中文乱码

接收微信公众号post<span style=

新版微信-微信公众号一键关注解决办法

https://mp.weixin.qq.com/mp/profile_ext?action=home&__biz=MzAxNzcwODE2MA==&scene=110#wechat_redirect...

H5商城网站微信公众号支付接口开发(JAVA)

功能简介 微信支付,是基于微信客户端提供的支付服务功能。同时向商户提供销售经营分析、 账户和资金管理的技术支持。 用户通过扫描二维码、 点击图文消息进入商品页面购买等多种方式调起微信支付模块完成支付。 目前微信支持公众号内支付。 其中支付方式, 可以分为 JS API 支付、 Native(原生)支付。商户可以结合业务场景,自主选择支付形式。 公众号支付有 2 种方式: 1. JS API 支付:是指用户打开图文消息或者扫描二维码,在微信内置浏览器 打开网页进行的支付。 商户网页前端通过使用微信提供的 JS API, 调用微信支付模块。 这种方式, 适合需要在商户网页进行选

微信公众号开发配置注意事项

一、基本配置     1. 服务器URL: 通信地址 api.aspx 文件; 二、接口权限     1. 网页授权获取用户信息 三、公众号设置     1. 业务域名 四、微信支付  ...

微信扫描公众号二维码实现登陆

前提条件: [b]1.微信公众平台为服务号, 2.服务号实现了账号绑定功能,即将open_id 与业务系统中的用户名有对应关系[/b] 具体实现原理: 1.用户访问业务系统登陆页时,调用二维码接口,获得二维码的ticketid,同时将sessionid,ticketid和二维码的seceneid保存 2.返回登陆页时,根据ticketid获得微信二维码 3.页面通过ajax发送请求,判断是否已经扫描成功。 4.公众平台服务监测到扫描事件,更新seceneid中扫描二维码的业务系统用户名 4.当ajax监测到扫描成功,并返回有业务系统用户名,即可做模拟登陆! 具体代码:

微信公众号开发注意事项

自定义菜单: 1、自定义菜单最多包括3个一级菜单,每个一级菜单最多包含5个二级菜单。 2、一级菜单最多4个汉字,二级菜单最多7个汉字,多出来的部分将会以“…”代替。 3、创建自定义菜单后,菜单的...

微信公众号

一个很不错的微信开发学习博客,从入门到精通。 [url]http://blog.csdn.net/lyq8479?viewmode=contents[/url] 菜单json { "button":[ { "type":"view", "name":"广告", "url":"https://open.weixin.qq.com/connect/oauth2/authorize?appid=123456&redirect_uri=http://xxx.com/index?type=1&re

Token验证失败微信公众号解决办法

在验证微信时出现了问题,明明token和代码一致,但是老验证失败。。 最后问题找到了,我用的是Struts2,它默认返回“success”导致的, 解决办法是把方法不要用execute()...
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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