Ответы пользователя по тегу JSON
  • Как правильно отправить json через POST с помощью CURL?

    seregazolotaryow64
    @seregazolotaryow64
    IT Специалист и самоучка
    Ребята, возникла такая же проблема как у вас:

    Сейчас пытаюсь доработать структуризацию подключения к API Яндекс.Кассы посредством CUrl и вдруг Яндекс требует POST-запрос в JSON-формате. Перепробовал все инструкции, вроде всё правильно и так не работает...

    Пример кода:
    <?php
    $urlreturn="https://good-adults.ru/donation/payment/send/send?sucess=yes";
                     $method="sberbank";
    
                      $url="https://payment.yandex.net/api/v3/payments";
    
                        $idempotence = uniqid('', true);
                        $headers=array(
                            "Idempotence-Key:". $idempotence,
                            "Content-Type: application/json"
                        );
    
                        $data=array(
                            "amount"=>array(
                                "value"=>$money .".00",
                                "currency"=>"RUB"
                            ),
                            "payment_method_data"=>array(
                                "type"=>$method
                            ),
                            "confirmation"=>array(
                                "type"=>"redirect",
                                "return_url"=>$urlreturn
                            ),
                            "description"=>"Благотворительное пожертвование"
                        );
    
                        $ch = curl_init();
    
                        curl_setopt($ch, CURLOPT_URL, $url);
                        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
                        curl_setopt($ch, CURLOPT_FAILONERROR, 1);
    
    
    
                        curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
                        curl_setopt($ch, CURLOPT_USERPWD, "596115:test_ZZ88TGAJiMajCoMVlZyYAkov7inGurf2ZdYkXkrVQqQ");
                        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
                        curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
                        curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
    
                        $data = curl_exec($ch);
    
                        if(curl_close($ch)){
                                $obj=json_decode($data,true);
                           
    
                                
                                $redirect=$obj->confirmation->confirmation_url;
                                setcookie('payment_id',$status->id,time()+14400);
                                header("Location:". $redirect);
                                
                        }
    
    ?>

    Всё правильно написано?
    Ответ написан
    Комментировать