/** * @param $id_order * @param $transaction_details */ public function postProcessRefund($id_order, $transaction_details) { include_once _PS_MODULE_DIR_ . 'alipay/api/loader.php'; $service = Configuration::get('ALIPAY_SERVICE_REFUND'); $credentials = AlipayTools::getCredentials($service, false); $gmt_date = date('Ymdhis'); $params = array(); $params['amount'] = Tools::getValue('refund_amount'); $params['refund_reason'] = Tools::getValue('refund_reason'); $params['out_trade_no'] = $transaction_details['out_trade_no']; $params['refund_no'] = md5(date('Ymdhis')); $params['id_order'] = $id_order; $params['currency'] = $transaction_details['currency']; $alipayapi = new AlipayApi($credentials); $alipayapi->setCharset('UTF-8'); $refund_request = new RefundRequest(); $refund_request->setOutReturnNo($params['refund_no']); $refund_request->setOutTradeNo($params['out_trade_no']); $refund_request->setReturnAmount($params['amount']); $refund_request->setCurrency($params['currency']); $refund_request->setGmtReturn($gmt_date); $refund_request->setReason($params['refund_reason']); $alipayapi->prepareRequest($refund_request); $url = $alipayapi->createUrl(); $xml = $alipayapi->getResponse($url); $refund_response = new RefundResponse(); if ($refund_response->processResponse($xml, $params) < 0) { $this->context->controller->errors = array_merge($this->context->controller->errors, $refund_response->getErrors()); } }