List of successful and refunded payments

After payments are completed, you can use the listOrders method in the payment management protocol (MWS) to get a list of payments.

listOrders

/**
 * Returns successful orders and their properties.
 * @return string response from Yandex.Money in XML format
 */
public function listOrders() {
    $methodName = "listOrders";
    $this->log->info("Start " . $methodName);
    $dateTime = Utils::formatDateForMWS(new \DateTime());
    $requestParams = array(
        'requestDT' => $dateTime,
        'outputFormat' => 'XML',
        'shopId' => $this->settings->SHOP_ID,
        'orderCreatedDatetimeLessOrEqual' => $dateTime
    );
    $result = $this->sendUrlEncodedRequest($methodName, $requestParams);
    $this->log->info($result);
    return $result;
}

Use the listReturns method to get a list of refunded payments.

listReturns

/**
 * Returns refunded payments.
 * @return string response from Yandex.Money in XML format
 */
public function listReturns() {
    $methodName = "listReturns";
    $this->log->info("Start " . $methodName);
    $dateTime = Utils::formatDateForMWS(new \DateTime()) ;
    $requestParams = array(
        'requestDT' => $dateTime,
        'outputFormat' => 'XML',
        'shopId' => $this->settings->SHOP_ID,
        'from' => '2015-01-01T00:00:00.000Z',
        'till' => $dateTime
    );
    $result = $this->sendUrlEncodedRequest($methodName, $requestParams);
    $this->log->info($result);
    return $result;
}

Function to send Payment management (MWS) requests:

/**
 * Makes XML/PKCS#7 request.
 * @param  string $paymentMethod financial method name
 * @param  array  $data          key-value pairs of request body
 * @return string                response from Yandex.Money in XML format
 */
private function sendXmlRequest($paymentMethod, $data) {
    $body = '<?xml version="1.0" encoding="UTF-8"?>';
    $body .= '<' . $paymentMethod . 'Request ';
    foreach($data AS $param => $value) {
        $body .= $param . '="' . $value . '" ';
    }
    $body .= '/>';
    return $this->sendRequest($paymentMethod, $this->signData($body), "pkcs7-mime");
}

/**
 * Makes application/x-www-form-urlencoded request.
 * @param  string $paymentMethod financial method name
 * @param  array  $data          key-value pairs of request body
 * @return string                response from Yandex.Money in XML format
 */
private function sendUrlEncodedRequest($paymentMethod, $data) {
    return $this->sendRequest($paymentMethod, http_build_query($data), "x-www-form-urlencoded");
}

/**
 * Sends prepared request.
 * @param  string $paymentMethod financial method name
 * @param  string $requestBody   prepared request body
 * @param  string $contentType   HTTP Content-Type header value
 * @return string                response from Yandex.Money in XML format
 */
private function sendRequest($paymentMethod, $requestBody, $contentType) {
    $this->log->info($paymentMethod . " Request: " . $requestBody);
    $curl = curl_init();
    $params = array(
        CURLOPT_RETURNTRANSFER => 1,
        CURLOPT_HTTPHEADER => array('Content-type: application/' . $contentType),
        CURLOPT_URL => 'https://penelope-demo.yamoney.ru:8083/webservice/mws/api/' . $paymentMethod,
        CURLOPT_POST => 0,
        CURLOPT_SSL_VERIFYPEER => false,
        CURLOPT_SSLCERT => $this->settings->mws_cert,
        CURLOPT_SSLKEY => $this->settings->mws_private_key,
        CURLOPT_SSLCERTPASSWD => $this->settings->mws_cert_password,
        CURLOPT_SSL_VERIFYHOST => false,
        CURLOPT_VERBOSE => 1,
        CURLOPT_POSTFIELDS => $requestBody
    );
    curl_setopt_array($curl, $params);
    $result = null;
    try {
        $result = curl_exec($curl);
        if (!$result) {
            trigger_error(curl_error($curl));
        }
        curl_close($curl);
    } catch (HttpException $ex) {
        echo $ex;
    }
    return $result;
}

See also

Managing payments

Request for a list of successful payments

Request for a list of refunded successful payments