signType = "RSA2"; $aop->gatewayUrl = AlipayConfig::GATEWAY; $aop->appId = AlipayConfig::APPID; $aop->rsaPrivateKey = AlipayConfig::APPPRIVATEKEY; // 注意:这里是支付宝公钥,不是应用公钥 $aop->alipayrsaPublicKey = AlipayConfig::ALIPAYPUBLICKEY; $tradeNo = ''; $request = new AlipayTradeQueryRequest (); $request->setBizContent("{" . "\"out_trade_no\":\"$orderSn\"," . "\"trade_no\":\"$tradeNo\"" . "}"); $result = $aop->execute($request); $responseNode = str_replace(".", "_", $request->getApiMethodName()) . "_response"; $resultCode = $result->$responseNode->code; $ttbPay = model('TtbAutoList'); $orderInfo = $ttbPay->fetchOrderInfo($orderSn); if(! empty($resultCode) && $resultCode == 10000) { if (empty($orderInfo)) { return false; } $tradeStatus = $result->$responseNode->trade_status; if ($tradeStatus == 'TRADE_SUCCESS') { // 已支付 if ($orderInfo['pay_status'] == 1) { return true; } return $ttbPay->paySuccess($orderSn, $result->$responseNode->trade_no); /*if ($result->$responseNode->total_amount == $orderInfo['pay_amount']) { // 更新订单状态,用户账户余额,账户变化日志 return $ttbPay->paySuccess($orderSn, $result->$responseNode->trade_no); }*/ } elseif ($tradeStatus == 'TRADE_CLOSED') { // 交易关闭 if ($orderInfo['pay_status'] != 3) { $ttbPay->updateOrder( ['pay_status' => 3, 'update_time' => NOW_TIMESTAMP], ['order_sn' => $orderSn] ); } return 'TRADE_CLOSED'; } } if (! empty($resultCode) && $resultCode == 40004) { // 支付宝返回交易不存在, 麻花网络数据库订单状态更改为已关闭 if ($orderInfo['pay_status'] != 3) { $ttbPay->updateOrder( ['pay_status' => 3, 'update_time' => NOW_TIMESTAMP], ['order_sn' => $orderSn] ); } return 'TRADE_CLOSED'; } return false; } // 支付回调验证 public function callback() { $aop = new AopClient (); $aop->alipayrsaPublicKey = C('ALIPAY.ALI_PUBLIC_KEY'); // 这里也需要支付宝公钥,不是应用公钥 $result = $aop->rsaCheckV1($_POST, null, $_POST['sign_type']); if ($result) { if ($this->queryOrder($_POST['out_trade_no'])) { echo 'success'; exit; } } echo 'error'; exit; } }