微信jsapi支付获取code_微信公众号支付官方SDK中jsapi无法获取参数传递的问题 - YangJunwei...

微信支付官方SDK中jsapi.php页面,获取前端订单提交参数进行支付处理,但订单get,post方式提交的参数,需要做一些处理!

在微信中,用户通过公众号或h5页面提交订单至 jsapi.php 文件,页面首先会获取用户openid,如下:

//①、获取用户openid

$tools = new JsApiPay();

$openId = $tools->GetOpenid();

再看 GetOpenid() 函数:

/**

*

* 通过跳转获取用户的openid,跳转流程如下:

* 1、设置自己需要调回的url及其其他参数,跳转到微信服务器https://open.weixin.qq.com/connect/oauth2/authorize

* 2、微信服务处理完成之后会跳转回用户redirect_uri地址,此时会带上一些参数,如:code

*

* @return 用户的openid

*/

public function GetOpenid()

{

//通过code获得openid

if (!isset($_GET['code'])){

//触发微信返回code码

$baseUrl = urlencode('http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'].$_SERVER['QUERY_STRING']);

$url = $this->__CreateOauthUrlForCode($baseUrl);

Header("Location: $url");

exit();

} else {

//获取code码,以获取openid

$code = $_GET['code'];

$openid = $this->getOpenidFromMp($code);

return $openid;

}

}

请求openid的过程会跳转请求CODE,CODE请求函数如下:

/**

*

* 构造获取code的url连接

* @param string $redirectUrl 微信服务器回跳的url,需要url编码

*

* @return 返回构造好的url

*/

private function __CreateOauthUrlForCode($redirectUrl)

{

$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;

}

获取 code 的过程需进行多次交互跳转,因此 jsapi.php 无法直接获取$_GET或者$_POST方式提交的参数,导致页面空白!

解决方案也简单,当用户提交订单时,jsapi页面将获取的参数写入 SESSION 中,在后续需要订单参数时,直接读取SESSION即可。

/* jsapi.php 处理订单参数 */

session_start();

$_SESSION['orderInfo'] = $order;

//②、统一下单 读取数据

$order = $_SESSION['orderInfo'];

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值