转载【支付】jsapi支付之传参问题(使用官方SDK之PHP版本)V3之Wxpay。。。
转载【⽀付】jsapi⽀付之传参问题(使⽤官⽅SDK之
PHP版本)V3之Wxpay。。。
(⽀付现在分为v2版和v3版,2014年9⽉10号之前申请的为v2版,之后申请的为v3版。V3版的⽀付没有paySignKey参数。)
写在最前⾯: V3 WxpayPubHelper 亲测有效,最新版本(WxpayAPI_php_v3.zip)未测试,理论上也是⼀样的。
⽀付api真的是各种坑啊
今天⼀整天都在折腾⽀付jsapi的参数不能通过get,post⽅式获取的问题!!
⽹页⽀付在⽤户点击发起⽀付前的流程:
问题:⽤户h5页⾯输⼊的参数通过post 或者get的⽅式传递到商户后台,商户后台⽆法处理⽤户传⼊的参数,并⽣成商户订单。
原因:在创建商户订单时,需要获取到⽤户的openid
白露的四句诗
/
/①、获取⽤户openid
$tools = new JsApiPay();
$openId = $tools->GetOpenid();
public function GetOpenid()
{
//通过code获得openid
if (!isset($_GET['code'])){
//触发返回code码
$baseUrl = urlencode(''.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'].$_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请求函数如下:
手动挡 自动挡
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 "open.weixin.qq/connect/oauth2/authorize?".$bizString;
}
因此,在获取openid商户后台与系统进⾏多次交互,当再次回到⽣成商户订单页的时候,我们之前从h5页⾯通过$_GET 或者$_POST⽅式获取的参数已经被清空,所以⽆法⽣成商户订单。(甚⾄报错500)
解决办法:
1.先将⽤户h5页⾯提交过来的参数保存到session中,然后再重定向到要⽣成商户订单的页⾯JSpay_redirect.php,例如:
/* order_redirect.php */
爱国 作文if(isset($_POST['order'])){
//将所需要的订单id,⾦额等信息放在全局session中
session_start();
$_SESSION['premoney']=$_POST['premoney'];
...
假水晶Header("Location: JSpay_redirect.php");闲花野草逢春生恐怖图片
}
2.然后在⽣成商户订单的页⾯中先获取openid,再获取session中的值,例如:
//①、获取⽤户openid
$tools = new JsApiPay();
$openId = $tools->GetOpenid();
session_start();
$premoney=$_SESSION['premoney'];
3.这样就可以获取到想要⾃定义⽀付订单的参数的值了,然后再调⽤统⼀下单接⼝。
遇到问题:
1、在web开发者⼯具中⼀直提⽰:
原因未知,很蛋疼。(解决办法:直接⽆视,继续你华丽的脚步)
2、在web开发者⼯具中,点击callpay()对应的按钮,调⽤内置的jsapi接⼝报错:
然⽽在实际⼿机操作,却调⽤jsapi成功,且能⽀付、回调成功。原因是开发者⼯具bug(maybe)。感谢CSDN的GeeKLV,链接:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。