Пример #1
0
 /**
  * 2016-07-09
  * @used-by \Df\Payment\R\Response::validate()
  * @return bool
  * @throws \Exception
  */
 private function validateSignature()
 {
     /** @var string $expected */
     $expected = Signer::signResponse($this, $this->getData());
     /** @var string $provided */
     $provided = $this->signatureProvided();
     /** @var bool $result */
     $result = $expected === $provided;
     if (!$result) {
         $this->throwException("Invalid signature.\nExpected: «%s».\nProvided: «%s».", $expected, $provided);
     }
     return $result;
 }
Пример #2
0
 /**
  * 2016-08-27
  * @param Method $method
  * @return array(string, array(string => mixed))
  */
 public static final function p(Method $method)
 {
     /** @var self $i */
     $i = df_create(df_con($method, 'Charge'), [self::$P__METHOD => $method]);
     /**
      * 2016-08-29
      * Метод @uses \Df\Payment\R\ICharge::requestIdKey(),
      * но мы вызываем его нестатично (чтобы он был вызван для нужного класса, а не бля базового),
      * и это успешно работает безо всяких предупреждений интерпретатора:
      * https://3v4l.org/N2VD2
      * http://stackoverflow.com/a/32746909
      * http://stackoverflow.com/a/15756165
      * Некоторые утверждают, что якобы на старых версиях PHP
      * это может выдавать предупреждение уровня E_STRICT:
      * http://stackoverflow.com/a/12874405
      * Однако это неправда, я проверил: https://3v4l.org/1JY8i
      */
     /** @var string $id */
     $id = $i->requestId();
     df_assert_string_not_empty($id);
     /** @var array(string => mixed) $p */
     $p = [$i->requestIdKey() => $id] + $i->params();
     return [$id, $p + [$i->signatureKey() => Signer::signRequest($i, $p)]];
 }