Jump to content

Vera Sousa

New Member
  • Posts

    7
  • Joined

  • Last visited

Vera Sousa's Achievements

boolean user

boolean user (2/5)

1

Reputation

1

Community Answers

  1. Finalmente consegui perceber o elo de ligação que me faltava. Embora não dê para visualizar em www.domainX.com/api/payment o conteúdo é recebido, como se pode verificar no Log. Aqui segue o código correto: Route::match(['get', 'post'], 'payment', function (Request $request) { $payload = $request->getContent(); $payload = json_decode( $payload, true); $key_from_configuration = "xxxx"; // webhook secret key $iv_from_http_header = $request->header('x-initialization-vector'); // x-initialization-vector $auth_tag_from_http_header = $request->header('x-authentication-tag'); // x-authentication-tag $http_body = $payload['encryptedBody']; // encripted body $key = hex2bin($key_from_configuration); $iv = hex2bin($iv_from_http_header); $auth_tag = hex2bin($auth_tag_from_http_header); $cipher_text = hex2bin($http_body); $result = openssl_decrypt($cipher_text, "aes-256-gcm", $key, OPENSSL_RAW_DATA, $iv, $auth_tag); \Log::info(json_encode( $result)); /* Poderás visualizar o resultado em storage/logs/laravel.log */ return print_r($result); /* Dar o devido tratamento.. */ }); Não esquecer de inserir em VerifyCrsfToken: protected $except = [ 'api/payment' ]; Obrigada!
  2. Log do teste: Status code: 200 Headers: Transfer-Encoding : chunked X-Frame-Options : SAMEORIGIN X-RateLimit-Remaining : 59 Server : nginx/1.18.0 (Ubuntu) Cache-Control : no-cache, private Access-Control-Allow-Origin : * X-Content-Type-Options : nosniff Connection : keep-alive X-RateLimit-Limit : 60 X-XSS-Protection : 1; mode=block Date : Mon, 30 Aug 2021 10:30:33 GMT Content-Type : application/json Body: {\"data\":{\"encryptedBody\":\"6FB7EC8CB523DD3790A4B19DE9B3A992E29E12C4CD05D00A15FFE67DDFB3B70FE5E773983A749F46EB7EFB059BC9CD6C2E4301C9B3582FB516DA8232768726EC56DA67380550A22422FDC1483B767BD6C36702D67B1D857A541E8CB1D8E050D6B2DD8A0C728E62D5304A2DECE6D17D3617A85769A233BC53FBFDDAEA6C0F02434959E4C15297AD97B768CB20C513965EC65AA1BE90FE6E3F9B0D09824D1C40E0536CD9E1612CC273F5A4696A202C21C55A4B37952F501B7CBC15B778\"},\"status\":200} No entanto, não aparece se estiver com a página aberta: {"data":null,"status":200} O código de momento: $payload = @file_get_contents('php://input'); $payload = json_decode( $payload, true); \Log::info(json_encode( $payload)); return response()->json([ 'data' => $payload, 'status' => \Symfony\Component\HttpFoundation\Response::HTTP_OK]); Já tentei outros códigos, nada resulta.
  3. Resolvi isto com: Route::match(['get', 'post'], 'payments', PaymentComponent::class)->name('payments'); No entanto, não imprime os resultados, estes só aparecem quando faço teste através do backoffice da sibs..
  4. O que me está a dificultar é o facto de me aparecer este erro, sempre que tento visualizar a página: Só sei que estou a receber a notificação porque ao fazer teste no backoffice da SIBS retorna 200 e a notificação encriptada.
  5. Bom dia, Acontece que tenho de desencriptar as notificações, o código de exemplo é este: <?php /* Php 7.1 or later */ $key_from_configuration = "000102030405060708090a0b0c0d0e0f000102030405060708090a0b0c0d0e0f"; $iv_from_http_header = "000000000000000000000000"; $auth_tag_from_http_header = "CE573FB7A41AB78E743180DC83FF09BD"; $http_body = "0A3471C72D9BE49A8520F79C66BBD9A12FF9"; $key = hex2bin($key_from_configuration); $iv = hex2bin($iv_from_http_header); $auth_tag = hex2bin($auth_tag_from_http_header); $cipher_text = hex2bin($http_body); $result = openssl_decrypt($cipher_text, "aes-256-gcm", $key, OPENSSL_RAW_DATA, $iv, $auth_tag); print($result); ?> O exemplo de notificação de pagamento é: { "type":"PAYMENT", "payload":{ "id":"8a829449515d198b01517d5601df5584", "paymentType":"PA", "paymentBrand":"VISA", "amount":"92.00", "currency":"EUR", "presentationAmount":"92.00", "presentationCurrency":"EUR", "descriptor":"3017.7139.1650 OPP_Channel ", "result":{ "code":"000.100.110", "description":"Request successfully processed in 'Merchant in Integrator Test Mode'" }, "authentication":{ "entityId":"8a8294185282b95b01528382b4940245" }, "card":{ "bin":"420000", "last4Digits":"0000", "holder":"Jane Jones", "expiryMonth":"05", "expiryYear":"2018" }, "customer":{ "givenName":"Jones", "surname":"Jane", "merchantCustomerId":"jjones", "sex":"F", "email":"jane@jones.com" }, "customParameters":{ "SHOPPER_promoCode":"AT052" }, "risk":{ "score":"0" }, "buildNumber":"ec3c704170e54f6d7cf86c6f1969b20f6d855ce5@2015-12-01 12:20:39 +0000", "timestamp":"2015-12-07 16:46:07+0000", "ndc":"8a8294174b7ecb28014b9699220015ca_66b12f658442479c8ca66166c4999e78" } } As variáveis serão: $http_body = file_get_contents("php::/unit"); $key_from_configuration = "webhook-secret-key"; /* $iv_from_http_header = "000000000000000000000000"; $auth_tag_from_http_header = "CE573FB7A41AB78E743180DC83FF09BD"; */ Da forma como tenho o código implementado será mais lógico pegar a notificação que diz respeito ao payload de ID X. A questão é que estou sem perceber o que colocar nas variáveis que se encontram dentro do comentário acima. O webhook tem um ID, será o $auth_tag_from_http_header? Obrigada!
  6. Boa tarde, É a primeira vez que estou a implementar o método de pagamento por MBWay, já possuo as credenciais de teste e já consigo efetuar pagamentos com sucesso. Agora chegou à vez de criar o webhook, de forma a receber as notificações de pagamento, nunca fiz nada deste género e estou com dificuldades em entender como funciona esta parte e como avançar a partir daqui. Já adicionei o webhook, já testei e estou a receber o status 200. Até aqui tudo bem, resta dar a devida continuação... Alguém entendido nesta matéria que possa dar uma "ajuda"? Muito obrigada! Vera Sousa
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.