Example #1
0
 /**
  * @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());
     }
 }