关于微信支付报错
最近兩周一直在做網站的微信支付,期間遇到好多個問題,而最坑的問題,應該就是一個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也就出來了。細節決定成敗啊,想做一個好的程序員,還要更加細心才行啊。希望能幫助到需要的同學吧。
總結
- 上一篇: 浅析Asp.net MVC 中Ajax的
- 下一篇: MediaPipe - BlazeFac