/** * 获取prepay_id * @orderNo订单号,或是交易号out_trade_no * @ruturn 如果库里有,证明 */ public function getPrepayId() { $orderNo = $this->parameters["out_trade_no"]; $orderForm = new OrderRelationModel(); $orderForm->setPayId($orderNo); $prepay_id = $orderForm->getPrepayId(); $data = array(); if ($prepay_id == FALSE) { $this->postXml(); $this->result = $this->xmlToArray($this->response); if ($this->result['result_code'] == 'FAIL') { $data['state'] = 'error'; $data['msg'] = $this->result['err_code_des']; return $data; } elseif ($this->result['return_code'] == 'FAIL') { $data['state'] = 'error'; $data['msg'] = $this->result['return_msg']; return $data; } $prepay_id = $this->result["prepay_id"]; $orderForm->savePrepayId($prepay_id); } $data['state'] = 'success'; $data['prepay_id'] = $prepay_id; return $data; }
public function indexAction() { //不进行任何的过滤,获取XML数据,并转化为数组 $xml = I('globals.HTTP_RAW_POST_DATA', '', false); if ($xml == '') { return; } $postArr = xml_to_array($xml); /* * 验证签名的有效性,证明是微信官方发回的文件 * 很重要 * 不然会有服务欺骗 * 验证成功,返回success * 不成功,直接跳出 */ $sign = $postArr['sign']; unset($postArr['sign']); if ($sign == get_wechat_sign($postArr)) { echo 'SUCCESS'; } else { return; } /* * 依据PAYID进行订单状态的更新操作. * 1.更新支付ID表 * 2.更新订单表 */ $orderRelation = new OrderRelationModel(); $res = $orderRelation->saveInfo($postArr); //返回值为false,证明数据重复提交,直接退出 if ($res == false) { return; } $orderForm = new OrderFormModel(); $orderForm->setPostArr($postArr); $orderForm->saveInfo(); return; }
public function payNowAction() { $orderRelation = new OrderRelationModel(); $payId = I('get.payid', ''); $this->openid = get_openid(); $state = 1; //订单的prepay_id信息的有效性 if ($payId == '') { $this->assign('tips', '参数错误!'); $state = 0; } else { $arrRes = $orderRelation->chcekPayid($payId, $this->openid); if ($arrRes['state'] == 0) { $this->assign('tips', $arrRes['msg']); $state = 0; } } //判断repayid,如果为null,证明订单信息有误 if ($state == 0) { $jumpUrl = U('Home/Index/index'); //跳转地址 $waitSecond = 10; //跳转时间 $this->assign('waitSecond', $waitSecond); $this->assign('jumpUrl', $jumpUrl); $this->assign('tips', $tips); $this->assign('YZBody', $this->fetch('payResult')); $this->display(YZ_TEMPLATE); return; } $this->assign('css', $this->fetch("orderPayTipsCss")); $this->assign("YZBody", $this->fetch("orderPayTips")); $this->display(YZ_TEMPLATE); $this->setOrderNo($payId); $this->orderPayInfo = $arrRes['res']; $this->_payJs(); //获取JS签名信息 $actionUrl['error'] = U('payResult'); $actionUrl['success'] = U('payResult'); $this->assign('actionUrl', $actionUrl); $this->display('payNowJs'); //调用JS事件,处发支付 }