Вот код, который я использую для создания учетных записей суб-мерчанта в моей учетной записи Braintree для целей тестирования на моей локальной машине с использованием почтальона. Вызов создания sub_merchant будет исходить либо с Android, либо с устройства iOS, используя пользовательскую форму. На локальном уровне этот код отлично работает с почтальоном, может кто-нибудь подсказать мне, как перехватить сообщения об ошибках, если они связаны с какими-либо полями, которые мы передаем в Braintree из $ результат объект возвращается и отображается обратно на экран на стороне клиента аккуратно?
<?php
include("../connection.php");
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
require_once 'braintree_environment_settings.php';
$dataReceived = json_decode(file_get_contents('php://input'), true);
//var_dump($dataReceived);
if((json_last_error() == JSON_ERROR_NONE))
{
// code to handle iOS call
$firstName = $dataReceived['firstName'];
$lastName = $dataReceived['lastName'];
$email = $dataReceived['email'];
$dateOfBirth = $dataReceived['dateOfBirth'];
$streetAddress = $dataReceived['streetAddress'];
$locality = $dataReceived['locality'];
$region = $dataReceived['region'];
$postalCode = $dataReceived['postalCode'];
$accountNumber = $dataReceived['accountNumber'];
$routingNumber = $dataReceived['routingNumber'];
}
else {
// code to handle Android call
$firstName = $_POST['firstName'];
$lastName = $_POST['lastName'];
$email = $_POST['email'];
$dateOfBirth = $_POST['dateOfBirth'];
$streetAddress = $_POST['streetAddress'];
$locality = $_POST['locality'];
$region = $_POST['region'];
$postalCode = $_POST['postalCode'];
$accountNumber = $_POST['accountNumber'];
$routingNumber = $_POST['routingNumber'];
}$merchantAccountParams = [
'individual' => [
'firstName' => $firstName,
'lastName' => $lastName,
'email' => $email,
'dateOfBirth' => $dateOfBirth,
'address' => [
'streetAddress' => $streetAddress,
'locality' => $locality,
'region' => $region,
'postalCode' => $postalCode
]
],
'funding' => [
'destination' => Braintree_MerchantAccount::FUNDING_DESTINATION_BANK,
'accountNumber' => $accountNumber,
'routingNumber' => $routingNumber
],
'tosAccepted' => true,
'masterMerchantAccountId' => 'zeefasys'
// 'id' => "Praveens_caffe_store"];
$result = Braintree_MerchantAccount::create($merchantAccountParams);
$responseData = array('Merchant_ID' => $result->merchantAccount->id, "message" => "Success");
header('Content-type: application/json');
echo json_encode($responseData);
?>
Полное раскрытие: я работаю в Braintree. Если у вас есть дополнительные вопросы, не стесняйтесь обращаться служба поддержки.
Когда вызов API, такой как MerchantAccount::create()
не удастся, Braintree отправит вам подробности о том, что пошло не так в результате объекта. Чтобы определить, содержит ли ответ объект учетной записи продавца или информацию об ошибках, проверьте $result->success
имущество. Если это правда, вы можете извлечь полученную учетную запись продавца из результирующего объекта. Если это неверно, вы захотите цикл через ошибки, которые вернулся Брейнтри. Любые ошибки, связанные с полями, которые вы передали, будут включены туда.
$result = Braintree_MerchantAccount::create($merchantAccountParams);
if ($result->success == true) {
$responseData = array('Merchant_ID' => $result->merchantAccount->id, 'message' => "success");
elseif ($result->success == false) {
foreach($result->errors->deepAll() as $error) {
$message .= $error->attribute . ": " . $error->code . " " . $error->message . "\n";
}
$responseData = array('Merchant_ID' => NULL, 'message' => $message);
}
Других решений пока нет …