aop = new \AopClient; $this->aop->appId = $config['app_id']; $this->aop->rsaPrivateKey = $config['pri_key']; $this->aop->alipayrsaPublicKey = $config['ali_pub_key']; $this->aop->signType = self::SIGN_TYPE; $this->aop->gatewayUrl = self::GATE_WAY_URL; $this->aop->format = 'json'; } public function send(array $data) { $type = $data['type']; $params = [ 'body' => $data['body'], 'subject' => $data['subject'], 'out_trade_no' => $data['out_trade_no'], 'timeout_express' => $data['timeout_express'], 'total_amount' => $data['total_amount'], 'product_code' => 'QUICK_WAP_WAY', 'passback_params' => urlencode($data['pay_merchant_id']), ]; switch ($type) { case 'App': return $this->AlipayTradeAppPayRequest($data); break; case 'Wap': $return_url = $data['return_url']; return $this->AlipayTradeWapPayRequest($params, $return_url); break; } } private function AlipayTradeWapPayRequest(array $data, $return_url) { $request = new \AlipayTradeWapPayRequest(); $request->setBizContent(json_encode($data)); $request->setNotifyUrl(env('ALI_PAY_CALL_BACK')); $request->setReturnUrl($return_url); return $this->aop->pageExecute($request); } private function AlipayTradeAppPayRequest(array $data) { $request = new \AlipayTradeAppPayRequest(); $request->setBizContent(json_encode($data)); $request->setNotifyUrl(env('ALI_PAY_CALL_BACK')); return $this->aop->sdkExecute($request); } public function notify(array $data) { if (isset($data['sign']) && isset($data['trade_status']) && $data['trade_status'] == 'TRADE_SUCCESS') { return $this->aop->rsaCheckV1($data, $this->rsaPublicKeyFilePath, self::SIGN_TYPE); } else { return false; } } public function query(string $trade_no) { $request = new \AlipayTradeQueryRequest(); $request->setBizContent(json_encode(['out_trade_no' => $trade_no])); $result = $this->aop->execute($request); $responseNode = str_replace(".", "_", $request->getApiMethodName()) . "_response"; $resultCode = $result->$responseNode->code; if (!empty($resultCode) && $resultCode == 10000) { return $result->$responseNode->trade_no; } else { return false; } } public function refund(array $data) { } public function makeSign(array $data) { } }