Оплата с помощью paypal Принято

2

Пожалуйста, сделайте до конца плагин. Статус не обновляется! Плагин отличный - но нужно допилить!



'payment_type' => 'instant',
    'protection_eligibility' => 'Eligible',
    'verify_sign' => 'AVzPfonjdBingysTCRBtKJjzA3EaAv1B0SMHNZbUdHO25rw3KiQRqi6k',
    'payer_status' => 'unverified',
    'payer_email' => '=========',
    'txn_id' => '5P959486HK227462E',
    'quantity' => '1',
    'receiver_email' => '-------',
    'first_name' => '-----',
    'payer_id' => 'SZHC44JXQW4A6',
    'receiver_id' => '29Z65SF9RJNAL',
    'item_number' => 'shop_9_515',
    'payment_status' => 'Completed',
    'payment_fee' => '',
    'mc_fee' => '25.59',
    'mc_gross' => '354.43',
    'custom' => '',
    'charset' => 'KOI8_R',
    'notify_version' => '3.8',
    'ipn_track_id' => '2f3c53a3d281d',
  ),
  'ip' => '===========',
  'agent' => 'PayPal IPN ( https://www.paypal.com/ipn )',
)


2018-01-13 13:16:21 =======
#5a5a5b052d75e
data:
array (
  'method' => 'waPayment::callbackInit',
  'app_id' => 'shop',
  'merchant_id' => '9',
)

12 комментариев

  • +2
    Михаил Ушенин Михаил Ушенин Webasyst 15 января 2018 12:02 #

    Несколько советов, один из которых теоретически может помочь:

    • смените кодировку запроса с KOI-8 на UTF-8 в своём аккаунте "Пейпала"
    • в файле wa-plugins/payment/paypal/lib/paypalPayment.class.php замените строку

      @curl_setopt($ch, CURLOPT_USERAGENT, sprintf('Webasyst %s plugin (%s)', $this->id, $host));
      на
      @curl_setopt($ch, CURLOPT_USERAGENT, wa()->accountName());
  • +1
    Михаил Ушенин Михаил Ушенин Webasyst 16 января 2018 16:27 #

    Кажется, вы привели лог не полностью. В вашем логе нет параметра txn_type. Его там действительно нет, или вы не полностью скопировали лог?

    • +1
      Dr_Michael Dr_Michael 16 января 2018 16:29 #

      Данного параметра нету.. Только что проверил.

      • +1
        Михаил Ушенин Михаил Ушенин Webasyst 16 января 2018 16:42 #
        Со стороны PayPal поступил комментарий, что этот параметр отправлялся на ваш сервер (проверяли по ID транзакции, который вы показали в логе). Возможно, ваш веб-сервер отфильтровал этот параметр и не пропустил дальше во фреймворк. Попробуйте выяснить это у своего хостинг-провайдера.
      • +1
        Михаил Ушенин Михаил Ушенин Webasyst 23 января 2018 10:56 #

        Сообщите, если удастся самостоятельно устранить проблему, пожалуйста. Возможно, ваша информация поможет другим пользователям с такой же ошибкой.

        • +1
          Dr_Michael Dr_Michael 23 января 2018 11:18 #

          На данный момент никакого результата нет. Пайпал не работает в автоматическом режиме.

        • +1
          Minya Jam Minya Jam 29 сентября 2018 02:05 #

          Тоже самое, не меняется статус

          data:
          array (
            'method' => 'waPayment::callback',
            'request_method' => 'post',
            'request' => 
            array (
              'mc_gross' => '70.00',
              'protection_eligibility' => 'Eligible',
              'payer_id' => 'TEYDVA23AFCE5',
              'payment_date' => '08:46:48 Sep 28, 2018 PDT',
              'payment_status' => 'Completed',
              'charset' => 'KOI8_R',
              'first_name' => '?????',
              'mc_fee' => '12.73',
              'notify_version' => '3.9',
              'custom' => '',
              'payer_status' => 'verified',
              'business' => 'saller@gmail.com',
              'quantity' => '1',
              'verify_sign' => 'AnBn8MmZTI4AVMjrz4OByda-M4KxAWa.N9xEmicCghekXJR-iNB9Wv21',
              'payer_email' => 'myemail@gmail.com',
              'txn_id' => '8TD8952336228645D',
              'payment_type' => 'instant',
              'last_name' => '???????',
              'receiver_email' => 'saller@gmail.com',
              'payment_fee' => '',
              'shipping_discount' => '0.00',
              'receiver_id' => '57FMS96MAHDTD',
              'insurance_amount' => '0.00',
              'txn_type' => 'web_accept',
              'item_name' => '?????? ?????? #1004',
              'discount' => '0.00',
              'mc_currency' => 'RUB',
              'item_number' => 'shop_3_4',
              'residence_country' => 'RU',
              'shipping_method' => 'Default',
              'transaction_subject' => '',
              'payment_gross' => '',
              'ipn_track_id' => '5bc133481bcd2',
            ),
            'ip' => '173.0.*.*',
            'agent' => 'PayPal IPN ( https://www.paypal.com/ipn )',
          )

        • +1

          Пейпалом пользуемся очень давно, никаких проблем нету, статус оплаты передается.

          • +1
            Minya Jam Minya Jam 29 сентября 2018 03:07 #

            Статус передается, но не меняется статус заказа.

          • +1
            Minya Jam Minya Jam 29 сентября 2018 04:56 #

            Исправил. Рабочий вариант функции notifyValidate:

                /**
                 * Requests current transaction status from payment gateway.
                 *
                 * @throws waException
                 * @param array $data Transaction data
                 * @return string Response received from payment gateway
                 */
                private function notifyValidate($data)
                {
            
                    unset($data['result']);
                    $app_error = $response = null;
            
                    //check available PHP extension
                    if (!extension_loaded('curl') || !function_exists('curl_init')) {
                        throw new waException('PHP extension cURL not available');
                    }
            
                    //try to init cUrl
                    if (!($ch = curl_init())) {
                        throw new waException('curl init error');
                    }
            
                    if (curl_errno($ch) != 0) {
                        throw new waException('curl init error: '.curl_errno($ch));
                    }
                    
                    $req = 'cmd=_notify-validate';
                    if (function_exists('get_magic_quotes_gpc')) {
                        $get_magic_quotes_exists = true;
                    }
                    foreach ($data as $key => $value) {
                        if ($get_magic_quotes_exists == true && get_magic_quotes_gpc() == 1) {
                            $value = urlencode(stripslashes($value));
                        } else {
                            $value = urlencode($value);
                        }
                        $req .= "&$key=$value";
                    }
                    
                    $url = $this->getEndpointUrl();
            
                    $headers = array(
                        'Connection: close',
                    );
                    
                    @curl_setopt($ch, CURLOPT_URL, $url);
                    @curl_setopt($ch, CURLOPT_POST, 1);
                    @curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
                    @curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
                    @curl_setopt($ch, CURLOPT_POSTFIELDS, $req);
                    @curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
                    @curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 1);
                    @curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
                    @curl_setopt($ch, CURLOPT_TIMEOUT, 120);
                    @curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 120);
                    @curl_setopt($ch, CURLE_OPERATION_TIMEOUTED, 120);
                    
                    $response = @curl_exec($ch);
                    
                    if (curl_errno($ch) != 0) {
                        $app_error = 'curl error: '.curl_errno($ch);
                    }
                    curl_close($ch);
                    if ($app_error) {
                        throw new waException($app_error);
                    }
                    if (empty($response)) {
                        throw new waException('Empty server response');
                    }
                    return $response;
                }
            

            Добавить комментарий

            Чтобы добавить комментарий, зарегистрируйтесь или войдите