关于微信支付报错

2 篇文章 0 订阅

最近两周一直在做网站的微信支付,期间遇到好多个问题,而最坑的问题,应该就是一个exit引发的坑案。

其实上周微信支付就已经调通了,在测试环境测试,没有什么大的问题,完美。但是提交到内测环境之后,便一直报错undefied index:prepay_id.  
我的action是这么写的:

<span style="white-space:pre">		</span>header('content-type:text/html;charset=utf-8');
		$wxconfig = \Yii::$app->params['weixinpay'];
		$request = Yii::$app->request;
        <span style="white-space:pre">	</span>$param = $request->get();
		$jsApi = new tradepay\weixin\JsApiPub($wxconfig);

		$openid = 0;
		if (!isset($_GET['code']))
		{
			
			//触发微信返回code码
			$url = $jsApi->createOauthUrlForCode( urlencode( $wxconfig['JS_API_CALL_URL'] .'?' .http_build_query( $param ) ) );
			Header("Location: $url"); 
<span style="white-space:pre">			</span><span style="color:#ff0000;">exit();(问题便是出在这里)</span>
		}else
		{
			//获取code码,以获取openid
		    $code = $_GET['code'];
			$jsApi->setCode($code);
			$openid = $jsApi->getOpenId();
			
		}
      .....

<span style="font-family:Microsoft YaHei;font-size:18px;"><span style="white-space:pre">		</span>$unifiedOrder->setParameter("notify_url",\Yii::$app ->params['apiAddress'].$wxconfig['NOTIFY_URL']);//异步通知回调地址 
		$unifiedOrder->setParameter("trade_type","JSAPI");//交易类型
		try{
			$prepay_id = $unifiedOrder->getPrepayId();
		}catch( \Exception $e ){
			$this->redirect_message('f', $e ->getMessage(), 3, Yii::$app->request->baseUrl.'/order/index');
		}
		
		$jsApi->setPrepayId($prepay_id); 
		$jsApiParameters = $jsApi->getParameters();
		
		return $this->render('proc',['jsApiParameters'=>$jsApiParameters]);</span>
上面第一步是为了获取code的,因为他是跳转过去的,所以想当然的以为header跳转了,就没事了,可是PHP代码是会继续执行下面的代码的,至于为什么在测试环境没有报这个错,或许是因为测试地址跳转比较快吧。也就是因为PHP代码会继续执行,导致往下执行的时候,没有获取到微信生成的预支付订单编号,undefied index:prepay_id这个BUG也就出来了。细节决定成败啊,想做一个好的程序员,还要更加细心才行啊。希望能帮助到需要的同学吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值