/** * This method compares the Sign string sent by Alipay's response with a Sign string generated with local values * @return bool */ public function compareSign() { require_once dirname(__FILE__) . '/alipay.api.php'; $default_config = array('partner_id' => false, 'service' => false); $credentials = AlipayTools::getCredentials(false, $default_config); $alipayapi = new AlipayApi($credentials); $generated_string = $alipayapi->getResponseSign($this); if ($this->sign != $generated_string) { return false; } return true; }
* * First, we need to verify the genuineness of the notification by calling the Alipay "notify_verify" service * Then we performs some tests with local values * Finally, after we made the proper actions, we need to answer to Alipay with the word "success" or "fail" * @see AlipayNotify */ require_once '../../config/config.inc.php'; require_once dirname(__FILE__) . '/alipay.php'; require_once dirname(__FILE__) . '/api/loader.php'; $alipay_notify = new AlipayNotify(); $alipay_notify->getPostData(); switch ($alipay_notify->getNotifyType()) { case "trade_status_sync": $default_config = array('secrete_key' => false); $service = Configuration::get('ALIPAY_SERVICE_NOTIFY_VERIFY'); $credentials = AlipayTools::getCredentials($service, $default_config); $alipayapi = new AlipayApi($credentials); $alipay_notify->setParamList('notify_verify'); $alipayapi->prepareRequest($alipay_notify, false); $url = $alipayapi->createUrl(); $alipay_notify->setParamList('compare_sign'); $params = $alipayapi->getProtocolParams(); unset($params['partner']); unset($params['service']); $alipayapi->setProtocolParams($params); $alipayapi->setSecreteKey(Configuration::get('ALIPAY_SECRETE_KEY')); $alipayapi->prepareRequest($alipay_notify); if ($alipayapi->getResponse($url) != 'true' || !$alipay_notify->verifyDupplicates() || $alipayapi->getSign() != Tools::getValue('sign')) { return; } if ($alipay_notify->saveNotify()) {
/** * This method download the Settlement File */ public function postProcessSettlementFile() { include_once _PS_MODULE_DIR_ . 'alipay/api/loader.php'; $service = Configuration::get('ALIPAY_SERVICE_LIQUIDATION_FILE'); $credentials = AlipayTools::getCredentials($service, false); $alipayapi = new AlipayApi($credentials); $settlement_request = new SettlementFileRequest(); $settlement_request->setStartDate(str_replace('-', '', Tools::getValue('from_settlement'))); $settlement_request->setEndDate(str_replace('-', '', Tools::getValue('to_settlement'))); $alipayapi->prepareRequest($settlement_request); $url = $alipayapi->createUrl(); $xml = simplexml_load_string(Tools::file_get_contents($url)); if ($xml) { $response = $alipayapi->getResponse($url); $xmlObj = new SimpleXMLElement($response); $this->context->controller->errors[] = sprintf($this->l('An error occurred: %s'), $xmlObj->error); } else { Tools::redirect($url); } }