Тестирование OmniPay Braintree Webhooks дает ошибки

Я упростил код, чтобы избежать публикации функций, не имеющих отношения к проблеме.

Предполагает:
Omnipay настроен правильно.
Omnipay делает успешную транзакцию Braintree,
MerchantID, PublicKey & PrivateKey установлены правильно.

$sampleNotificationSignature = 'WITHHELD';
$sampleNotificationPayload = 'WITHHELD';
use Omnipay\Omnipay;
$gateway = Omnipay::create('Braintree');
$gateway->setPrivateKey('WITHHELD');
$gateway->setPublicKey('WITHHELD');
$gateway->setMerchantId('WITHHELD');
$gateway->setTestMode(TRUE);
$notification = $gateway->parseNotification([
'bt_signature'  => $sampleNotificationSignature,
'bt_payload'    => $sampleNotificationPayload
])->send();

При попытке протестировать WebHooks из Braintree, POST из URL-адреса теста приводит к следующим ошибкам …

Фатальная ошибка: Uncaught Braintree \ Exception \ Configuration:
Braintree \ Configuration :: merchantId должен быть установлен (или accessToken
необходимо передать Braintree \ Gateway). в
/vendor/braintree/braintree_php/lib/Braintree/Configuration.php:254

Stack trace:
#0 /vendor/braintree/braintree_php/lib/Braintree/WebhookNotificationGateway.php(10): Braintree\Configuration->assertHasAccessTokenOrKeys()
#1 /vendor/braintree/braintree_php/lib/Braintree/Gateway.php(257): Braintree\WebhookNotificationGateway->__construct(Object(Braintree\Gateway))
#2 /vendor/braintree/braintree_php/lib/Braintree/WebhookNotification.php(35): Braintree\Gateway->webhookNotification()
#3 /vendor/omnipay/braintree/src/Gateway.php(281): Braintree\WebhookNotification::parse('DETAILS HIDDEN')
#4 braintree.php(27 in /vendor/braintree/braintree_php/lib/Braintree/Configuration.php on line 254

Я считаю, что это должно быть ошибкой в ​​коде omnipay. Я не вижу причин, по которым это может не сработать, когда транзакции, создание клиента, платежи и сборы все отправляют штрафом при отправке корзины покупок. Я создал проблему для этого на Github.

https://github.com/thephpleague/omnipay/issues/484

Код ниже работает, по существу переопределяя omnipay и используя напрямую braintree_php.

use Braintree_Gateway;
use Braintree_Configuration;
Braintree_Configuration::environment('sandbox');
Braintree_Configuration::merchantId('PRIVATE');
Braintree_Configuration::publicKey('PRIVATE');
Braintree_Configuration::privateKey('PRIVATE');

$sampleNotification = Braintree_WebhookTesting::sampleNotification(
Braintree_WebhookNotification::SUBSCRIPTION_WENT_PAST_DUE,
'my_id'
);

$webhookNotification = Braintree_WebhookNotification::parse(
$sampleNotification['bt_signature'],
$sampleNotification['bt_payload']
);

$webhookNotification->subscription->id;

print_r($webhookNotification);

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector