Как получить ответ заголовка от php Braintree Payments

Я в настоящее время использую Braintree Payment. Я могу создать успешный платеж на панели инструментов с помощью iOS. Проблема в том, что я пытаюсь вернуть ответ клиенту (iOS), сейчас он возвращается " ", заранее благодарю за помощь.

Мой текущий php

<?php
require_once("../includes/braintree_init.php");

//$amount = $_POST["amount"];
//$nonce = $_POST["payment_method_nonce"];
$nonce = "fake-valid-nonce";
$amount = "10";

$result = Braintree\Transaction::sale([
    'amount' => $amount,
    'paymentMethodNonce' => $nonce
]);

мой клиент

URLSession.shared.dataTask(with: request as URLRequest) { (data, response, error) -> Void in
            // TODO: Handle success or failure
            let responseData = String(data: data!, encoding: String.Encoding.utf8)
            // Log the response in console
            print(responseData);

            // Display the result in an alert view
            DispatchQueue.main.async(execute: {
                let alertResponse = UIAlertController(title: "Result", message: "\(responseData)", preferredStyle: UIAlertControllerStyle.alert)

                // add an action to the alert (button)
                alertResponse.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.default, handler: nil))

                // show the alert
                self.present(alertResponse, animated: true, completion: nil)

            })

            } .resume()

1 ответ

Решение

Полное раскрытие: я работаю в Braintree. Если у вас есть какие-либо дополнительные вопросы, не стесняйтесь обращаться в службу поддержки.

Помните, что PHP-код оценивается на вашем сервере, прежде чем что-либо будет возвращено в ответе. В этом случае Braintree\Transaction::sale вызов оценивается правильно, и результат сохраняется в вашем $result переменная. Однако больше ничего не происходит, и вы ничего не возвращаете своему заказчику.

Чтобы вернуть ответ, вы можете просто распечатать его. Обратите внимание, что PHP по умолчанию использует заголовок Content-Type, установленный на "text/html", поэтому, если вы не хотите возвращать веб-страницу, вы, вероятно, захотите изменить ее на что-то вроде "application/json", или как угодно наиболее подходит для вас.

$result = Braintree\Transaction::sale([
    'amount' => $amount,
    'paymentMethodNonce' => $nonce
]);

$processed_result = // you could serialize the result here, into JSON, for example
header('Content-Type: application/json');
print $processed_result;
Другие вопросы по тегам