Отправлять деньги с помощью API Dwolla и использовать PHP для этого? - PullRequest
8 голосов
/ 15 октября 2011

Привет всем, я снова вернулся. В своем последнем посте я пытался использовать API-интерфейс SOAP ( Интеграция Dwolla с PHP с их API ), но я обнаружил, что API-интерфейс SOAP устарел и, по-видимому, Dwollaесть более эффективный способ, такой как REST / oAuth2.0, поэтому я здесь сегодня спрашиваю, как использовать оставшийся API, поскольку он был почти 2 недели, и я действительно хотел бы изучить это.

Сначалаoff я скажу, что я успешно смог получить access_token, у меня нет проблем с этим.Проблема заключается в том, что когда я пытаюсь использовать конечную точку отправки (https://www.dwolla.com/developers/endpoints/accountapi/send), в основном пытаюсь отправить деньги на счет. Моя точная проблема заключается в том, что я никогда не получу успешный ответ; только ложные ответы или сообщения об ошибках.

Итак, на странице индекса у меня есть ссылка «Добавить средства на ваш счет». Пользователи перейдут по этой ссылке, и она перейдет на страницу Dwolla, которая примет их, чтобы войти в свою учетную запись Dwolla, а затем принятьразрешения, которые запрашивает веб-сайт. После того, как пользователь нажимает «Принять», он перенаправляет на выбранный мной URL-адрес и отправляет обратно access_token для использования в целях авторизации. Вот мой код (Это страница, которую Dwolla перенаправляет и отправляеттоже access_token)

<?php
//Define variables
    $key            = 'redacted';
    $secret         = 'redacted';
    $dwolla_client_id   = urlencode($key);
    $dwolla_secret_key  = urlencode($secret);
$code = urlencode($_GET["code"]);
//get token
    $retireve_token = file_get_contents("https://www.dwolla.com/oauth/v2/token?client_id=".$dwolla_client_id."&client_secret=".$dwolla_secret_key."&grant_type=authorization_code&redirect_uri=http://localhost/purchase_order.php&code=".$code);


    $decoded_json = json_decode($retireve_token, true);


        var_dump($decoded_json);
        if($decoded_json["access_token"]){
                    $arr = '{
                            "oauth_token": "'.$decoded_json["access_token"].'",
                            "fundsSource": "balance",
                            "pin": "1111",
                            "notes": "Payment for services rendered",
                            "amount": 1.01,
                            "destinationId": "812-111-1111",
                            "assumeCosts": false,
                            "facilitatorAmount": 0,
                            "destinationType": "dwolla"
                    }';
                    $opts = array('http'=>array('method'=>"POST",'content'=> $arr, 'header' => 'Content-Type: application/json'));

                    $ctx = stream_context_create($opts);
            $send_request = file_get_contents('https://www.dwolla.com/oauth/rest/accountapi/send', false, $ctx);

            var_dump(json_decode($send_request));
        }

?>

Я получаю подобные сообщения, например

array (1) {["access_token"] => string (50) "redacted"} Warning: file_get_contents (https://www.dwolla.com/oauth/rest/accountapi/send): не удалось открыть поток: HTTP-запрос не выполнен! HTTP / 1.1 503 Сервис недоступен в / home / swiftbitcoins / purchase_order.php on line 47 NULL

1 Ответ

0 голосов
/ 03 августа 2015

вы пытаетесь сделать запрос на получение, тогда как в документации Dwolla это называется пост-запрос.

лучше всего использовать пользовательскую библиотеку php со встроенными методами для выполнения вызовов.это стандартная библиотека для выполнения спокойных вызовов и намного лучше, чем писать так, как вы написали во фрагменте кода выше.

https://github.com/Dwolla/dwolla-php

...