Giter VIP home page Giter VIP logo

payment-magento's People

Contributors

elisei avatar ham1lts avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

payment-magento's Issues

Não foi possível obter o código, tente novamente. =(

Dados de Contato

[email protected]

O que aconteceu?

Após realizar a instalação do módulo (usando Magento 2.4.1) na parte inicial das configurações após definir o nome da loja e escolher o ambiente e salvar, cliquei no botão para autorizar aonde fui levado para a conta do pagseguro pedindo permissão para autorizar a aplicação https://prnt.sc/eIh7eyx_d1sh após autorizar sou redirecionado de volta a tela de configuração da loja mas o seguinte erro aparece Não foi possível obter o código, tente novamente. =( https://prnt.sc/yRClEjkeFwVV

O que pode estar acontecendo?

Método de Instalação

Via upload de arquivs (app/code)

Versão da Magento/Adobe

2.4.0 até 2.4.5 (Magento/Adobe >= 2.4.0 e < 2.4.5)

Qual a versão do PHP?

PHP 7.4

Existem logs relevantes sobre o problema?

Os logs da loja estão ativos mas não foi gerado log.

Meu log não contém informações confidenciais

  • Não estou enviando dados que violem a privacidade do cliente ou da loja.

Qual a gravidade do problema?

Não consegui configurar o modulo

[Bug]: Um erro no servidor impediu a sua compra de ser feita. Por favor, tente colocar o seu pedido novamente.

Dados de Contato

[email protected]

O que aconteceu?

@elisei
Ao tentar finalizar o pedido está dando erro.
main.CRITICAL: InvalidArgumentException: Unable to serialize value. Error: Malformed UTF-8 characters, possibly incorrectly encoded in vendor/magento/framework/Serialize/Serializer/Json.php:26

percebi que esses produtos estavam com o caractere º no nome ... não sei se isso influencia, se consegue testar ? Nos teste que fiz foi justamente essa caractere especial que não deixou finalizar a compra, após alterar o produto a compra ocorreu com sucesso.

Versão da Magento/Adobe

2.4.0 até 2.4.5 (Magento/Adobe >= 2.4.0 e < 2.4.5)

Qual a versão do PHP?

PHP 8.1

Existem logs relevantes sobre o problema?

No response

Meu log não contém informações confidenciais

  • Não estou enviando dados que violem a privacidade do cliente ou da loja.

Qual a gravidade do problema?

Nenhum cliente pode fazer um pagamento

[Bug]: Erro ao finalizar por cartão de Crédito

Dados de Contato

[email protected]

O que aconteceu?

Ao finalizar por Cartão de Crédito os produtos saem do estoque mas ocorre erro ao finalizar.

Método de Instalação

Via Composer

Versão da Magento/Adobe

2.4.6+ (Magento/Adobe >= 2.4.6)

Qual a versão do PHP?

PHP 8.1

Existem logs relevantes sobre o problema?

[2023-10-25T00:03:48.468986+00:00] main.CRITICAL: TypeError: Magento\Framework\Exception\LocalizedException::__construct(): Argument #1 ($phrase) must be of type Magento\Framework\Phrase, string given, called in /home/www/public_html/vendor/pagbank/payment-magento/Plugin/VaultAddtionalCommand.php on line 545 and defined in /home/www/public_html/vendor/magento/framework/Exception/LocalizedException.php:36
Stack trace:
#0 /home/www/public_html/vendor/pagbank/payment-magento/Plugin/VaultAddtionalCommand.php(545): Magento\Framework\Exception\LocalizedException->__construct('Public hash sho...')
#1 /home/www/public_html/vendor/pagbank/payment-magento/Plugin/VaultAddtionalCommand.php(741): PagBank\PaymentMagento\Plugin\VaultAddtionalCommand->attachTokenExtensionAttribute(Object(Magento\Sales\Model\Order\Payment\Interceptor))
#2 /home/www/public_html/vendor/magento/module-sales/Model/Order/Payment.php(377): PagBank\PaymentMagento\Plugin\VaultAddtionalCommand->initialize(NULL, Object(Magento\Framework\DataObject))
#3 /home/www/public_html/vendor/magento/module-sales/Model/Order.php(1002): Magento\Sales\Model\Order\Payment->place()
#4 /home/www/public_html/vendor/magento/module-sales/Model/Order.php(1228): Magento\Sales\Model\Order->_placePayment()
#5 /home/www/public_html/vendor/magento/framework/Interception/Interceptor.php(58): Magento\Sales\Model\Order->place()
#6 /home/www/public_html/vendor/magento/framework/Interception/Interceptor.php(138): Magento\Sales\Model\Order\Interceptor->___callParent('place', Array)
#7 /home/www/public_html/vendor/magento/framework/Interception/Interceptor.php(153): Magento\Sales\Model\Order\Interceptor->Magento\Framework\Interception\{closure}()
#8 /home/www/public_html/generated/code/Magento/Sales/Model/Order/Interceptor.php(32): Magento\Sales\Model\Order\Interceptor->___callPlugins('place', Array, Array)
#9 /home/www/public_html/vendor/magento/module-sales/Model/Service/OrderService.php(207): Magento\Sales\Model\Order\Interceptor->place()
#10 /home/www/public_html/vendor/magento/framework/Interception/Interceptor.php(58): Magento\Sales\Model\Service\OrderService->place(Object(Magento\Sales\Model\Order\Interceptor))
#11 /home/www/public_html/vendor/magento/framework/Interception/Interceptor.php(138): Magento\Sales\Model\Service\OrderService\Interceptor->___callParent('place', Array)
#12 /home/www/public_html/vendor/magento/framework/Interception/Interceptor.php(153): Magento\Sales\Model\Service\OrderService\Interceptor->Magento\Framework\Interception\{closure}(Object(Magento\Sales\Model\Order\Interceptor))
#13 /home/www/public_html/generated/code/Magento/Sales/Model/Service/OrderService/Interceptor.php(32): Magento\Sales\Model\Service\OrderService\Interceptor->___callPlugins('place', Array, Array)
#14 /home/www/public_html/vendor/magento/module-quote/Model/QuoteManagement.php(624): Magento\Sales\Model\Service\OrderService\Interceptor->place(Object(Magento\Sales\Model\Order\Interceptor))
#15 /home/www/public_html/vendor/magento/module-quote/Model/QuoteManagement.php(500): Magento\Quote\Model\QuoteManagement->submitQuote(Object(Magento\Quote\Model\Quote\Interceptor), Array)
#16 /home/www/public_html/vendor/magento/framework/Interception/Interceptor.php(58): Magento\Quote\Model\QuoteManagement->submit(Object(Magento\Quote\Model\Quote\Interceptor), Array)
#17 /home/www/public_html/vendor/magento/framework/Interception/Interceptor.php(138): Magento\Quote\Model\QuoteManagement\Interceptor->___callParent('submit', Array)
#18 /home/www/public_html/vendor/magento/module-sales-rule/Plugin/CouponUsagesIncrement.php(54): Magento\Quote\Model\QuoteManagement\Interceptor->Magento\Framework\Interception\{closure}(Object(Magento\Quote\Model\Quote\Interceptor), Array)
#19 /home/www/public_html/vendor/magento/framework/Interception/Interceptor.php(135): Magento\SalesRule\Plugin\CouponUsagesIncrement->aroundSubmit(Object(Magento\Quote\Model\QuoteManagement\Interceptor), Object(Closure), Object(Magento\Quote\Model\Quote\Interceptor))
#20 /home/www/public_html/vendor/magento/framework/Interception/Interceptor.php(153): Magento\Quote\Model\QuoteManagement\Interceptor->Magento\Framework\Interception\{closure}(Object(Magento\Quote\Model\Quote\Interceptor))
#21 /home/www/public_html/generated/code/Magento/Quote/Model/QuoteManagement/Interceptor.php(32): Magento\Quote\Model\QuoteManagement\Interceptor->___callPlugins('submit', Array, NULL)
#22 /home/www/public_html/vendor/magento/module-quote/Model/QuoteManagement.php(458): Magento\Quote\Model\QuoteManagement\Interceptor->submit(Object(Magento\Quote\Model\Quote\Interceptor))
#23 /home/www/public_html/vendor/magento/framework/Interception/Interceptor.php(58): Magento\Quote\Model\QuoteManagement->placeOrder(17566, NULL)
#24 /home/www/public_html/vendor/magento/framework/Interception/Interceptor.php(138): Magento\Quote\Model\QuoteManagement\Interceptor->___callParent('placeOrder', Array)
#25 /home/www/public_html/vendor/paypal/module-braintree-core/Plugin/OrderCancellation.php(64): Magento\Quote\Model\QuoteManagement\Interceptor->Magento\Framework\Interception\{closure}(17566, NULL)
#26 /home/www/public_html/vendor/magento/framework/Interception/Interceptor.php(135): PayPal\Braintree\Plugin\OrderCancellation->aroundPlaceOrder(Object(Magento\Quote\Model\QuoteManagement\Interceptor), Object(Closure), 17566)
#27 /home/www/public_html/vendor/magento/framework/Interception/Interceptor.php(153): Magento\Quote\Model\QuoteManagement\Interceptor->Magento\Framework\Interception\{closure}(17566)
#28 /home/www/public_html/generated/code/Magento/Quote/Model/QuoteManagement/Interceptor.php(23): Magento\Quote\Model\QuoteManagement\Interceptor->___callPlugins('placeOrder', Array, NULL)
#29 /home/www/public_html/vendor/magento/module-checkout/Model/PaymentInformationManagement.php(152): Magento\Quote\Model\QuoteManagement\Interceptor->placeOrder(17566)
#30 /home/www/public_html/vendor/magento/framework/Interception/Interceptor.php(58): Magento\Checkout\Model\PaymentInformationManagement->savePaymentInformationAndPlaceOrder(17566, Object(Magento\Quote\Model\Quote\Payment), Object(Magento\Quote\Model\Quote\Address))
#31 /home/www/public_html/vendor/magento/framework/Interception/Interceptor.php(138): Magento\Checkout\Model\PaymentInformationManagement\Interceptor->___callParent('savePaymentInfo...', Array)
#32 /home/www/public_html/vendor/magento/framework/Interception/Interceptor.php(153): Magento\Checkout\Model\PaymentInformationManagement\Interceptor->Magento\Framework\Interception\{closure}(17566, Object(Magento\Quote\Model\Quote\Payment), Object(Magento\Quote\Model\Quote\Address))
#33 /home/www/public_html/generated/code/Magento/Checkout/Model/PaymentInformationManagement/Interceptor.php(23): Magento\Checkout\Model\PaymentInformationManagement\Interceptor->___callPlugins('savePaymentInfo...', Array, Array)
#34 [internal function]: Magento\Checkout\Model\PaymentInformationManagement\Interceptor->savePaymentInformationAndPlaceOrder(17566, Object(Magento\Quote\Model\Quote\Payment), Object(Magento\Quote\Model\Quote\Address))
#35 /home/www/public_html/vendor/magento/module-webapi/Controller/Rest/SynchronousRequestProcessor.php(95): call_user_func_array(Array, Array)
#36 /home/www/public_html/vendor/magento/module-webapi/Controller/Rest.php(202): Magento\Webapi\Controller\Rest\SynchronousRequestProcessor->process(Object(Magento\Framework\Webapi\Rest\Request\Proxy))
#37 /home/www/public_html/vendor/magento/framework/Interception/Interceptor.php(58): Magento\Webapi\Controller\Rest->dispatch(Object(Magento\Framework\App\Request\Http))
#38 /home/www/public_html/vendor/magento/framework/Interception/Interceptor.php(138): Magento\Webapi\Controller\Rest\Interceptor->___callParent('dispatch', Array)
#39 /home/www/public_html/vendor/magento/framework/Interception/Interceptor.php(153): Magento\Webapi\Controller\Rest\Interceptor->Magento\Framework\Interception\{closure}(Object(Magento\Framework\App\Request\Http))
#40 /home/www/public_html/generated/code/Magento/Webapi/Controller/Rest/Interceptor.php(23): Magento\Webapi\Controller\Rest\Interceptor->___callPlugins('dispatch', Array, Array)
#41 /home/www/public_html/vendor/magento/framework/App/Http.php(116): Magento\Webapi\Controller\Rest\Interceptor->dispatch(Object(Magento\Framework\App\Request\Http))
#42 /home/www/public_html/vendor/magento/framework/App/Bootstrap.php(264): Magento\Framework\App\Http->launch()
#43 /home/www/public_html/pub/index.php(30): Magento\Framework\App\Bootstrap->run(Object(Magento\Framework\App\Http\Interceptor))
#44 {main} {"exception":"[object] (TypeError(code: 0): Magento\\Framework\\Exception\\LocalizedException::__construct(): Argument #1 ($phrase) must be of type Magento\\Framework\\Phrase, string given, called in /home/www/public_html/vendor/pagbank/payment-magento/Plugin/VaultAddtionalCommand.php on line 545 at /home/www/public_html/vendor/magento/framework/Exception/LocalizedException.php:36)"} []

Meu log não contém informações confidenciais

  • Não estou enviando dados que violem a privacidade do cliente ou da loja.

Qual a gravidade do problema?

Um dos métodos de pagamento não está funcionando

[Bug]: Falha ao ativar o módulo

Dados de Contato

[email protected]

O que aconteceu?

Ao tentar autorizar o módulo no magento 2.4.3, retorna "Unable to get the code, try again. =("

Passo a passo:

  1. Insiro no nome que aparecerá na fatura;
  2. Escolho Produção
  3. Clico no botão Autorizar...
  4. O site do Pagseguro é carregado pedindo para autentiar. Faço isso com nossas credenciais.
  5. Na tela seguinte aparece pedindo autorização para o Magento 2.4. Clico em Autorizar.
  6. Retorna para a administração do Magento com a mensagem "Unable to get the code, try again. =("

Como resolver?

Versão da Magento/Adobe

2.4.0 até 2.4.5 (Magento/Adobe >= 2.4.0 e < 2.4.5)

Qual a versão do PHP?

PHP 7.4

Existem logs relevantes sobre o problema?

nada

Meu log não contém informações confidenciais

  • Não estou enviando dados que violem a privacidade do cliente ou da loja.

Qual a gravidade do problema?

Não consegui configurar o modulo

[Bug]: Erro ao gerar boleto

Dados de Contato

[email protected]

O que aconteceu?

O método de pagamento por Boleto está com erro.

WhatsApp Image 2023-07-25 at 10 53 37

Método de Instalação

Via Composer

Versão da Magento/Adobe

2.4.0 até 2.4.5 (Magento/Adobe >= 2.4.0 e < 2.4.5)

Qual a versão do PHP?

PHP 7.4

Existem logs relevantes sobre o problema?

No response

Meu log não contém informações confidenciais

  • Não estou enviando dados que violem a privacidade do cliente ou da loja.

Qual a gravidade do problema?

Um dos métodos de pagamento não está funcionando

[Bug]: Validação de CPF no Checkout

Contact details

[email protected]

What happened?

Olá, pensei que havia corrigido o problema,

Mas quando abri o Checkout Apresentou o seguinte erro na hora de validar o CPF.

Se puder verificar, por favor.

image

Magento version

2.4.x (Magento >= 2.4.0)

What version of php?

PHP 8.1

Are there relevant logs about the problem?

Uncaught TypeError: Cannot read properties of undefined (reading 'call').  Exception occurred when checking element pagbank_paymentmagento_pix-payer-tax-id, check the 'pagbank-validate-tax-id' method.
    at $.validator.check (jquery.validate.min.js:62:107)
    at $.validator.checkForm (jquery.validate.min.js:41:163)
    at $.validator.form (jquery.validate.min.js:40:657)
    at jQuery.fn.init.valid (jquery.validate.min.js:22:115)
    at UiClass.beforePlaceOrder (pix.min.js:1:1033)
    at HTMLButtonElement.<anonymous> (knockout.min.js:391:164)
    at HTMLButtonElement.dispatch (jquery.min.js:348:476)
    at elemData.handle (jquery.min.js:334:166)

My log does not contain confidential information

  • I am not sending data that violates the privacy of the customer or the store.

What is the severity of the problem?

One of the payment methods is not working

[Bug]: HTTP ERROR 500 Painel Admin (Order)

Contact details

[email protected]

What happened?

Após instalar e configurar o módulo, ao tentar abrir qualquer pedido retorna erro 500 (modo desenvolvimento ou produção), Magento 2.3.3, PHP 7.3, instalado via Composer

Testado na versão:
composer require pagbank/payment-magento:~100.0 e composer require pagbank/payment-magento:~100.0.34

Magento version

2.3.x (Magento >= 2.3.0 e < 2.4.0)

What version of php?

PHP 7.3

Are there relevant logs about the problem?

No log não retorna nada relacionado.

My log does not contain confidential information

  • I am not sending data that violates the privacy of the customer or the store.

What is the severity of the problem?

The store was offline

[Bug]: Bug ao Abrir Mini Carrinho - Renderização das informações - Require_JS

Contact details

[email protected]

What happened?

Erro ao renderizar as informações do Mini Carrinho, observe que é apresentado um erro no Javascript após a instalação do Módulo. Estamos utilizando a versão 2.4.6 do Magento, fiz algumas validações internas e tudo indica que é no require-js do módulo:

config: {
        mixins: {
            'mage/validation': {
                'PagBank_PaymentMagento/js/validation/custom-validation': true
            }
        }
    }

Fix_27-07-PagSeguro

Quando o eu atribuo o valor "false" para a flag, compilo, e faço todo o procedimento de Deploy novamente, as informações do carrinho são renderizadas perfeitamente. Grato!

Magento version

2.4.x (Magento >= 2.4.0)

What version of php?

PHP 8.1

Are there relevant logs about the problem?

No response

My log does not contain confidential information

  • I am not sending data that violates the privacy of the customer or the store.

What is the severity of the problem?

The store was offline, I could not configure the module

[Bug]: Payment Additional Information preseva tentativas anteriores

Dados de Contato

No response

O que aconteceu?

Ao recuperar informações do pgto via API (por exemplo) é possível ver dados de outra tentativa, como por exemplo dados de um pgto não autorizado com cartão e na sequência uma compra finalizada por PIX, na api ao consultar esse pedido terá informações da compra com cartão e a do PIX.

Método de Instalação

Via Composer

Versão da Magento/Adobe

2.4.6+ (Magento/Adobe >= 2.4.6)

Qual a versão do PHP?

PHP 8.2

Existem logs relevantes sobre o problema?

No response

Meu log não contém informações confidenciais

  • Não estou enviando dados que violem a privacidade do cliente ou da loja.

Qual a gravidade do problema?

Não consegui instalar o modulo

[Bug]: PR#22 productName com caracteres especiais

Dados de Contato

[email protected]

O que aconteceu?

PR #22 trouxe de volta o problema com nome de produto com caractere especial como º ou ª (talvez alguns outros) ao finalizar pedido.

Método de Instalação

Via Composer

Versão da Magento/Adobe

2.4.0 até 2.4.5 (Magento/Adobe >= 2.4.0 e < 2.4.5)

Qual a versão do PHP?

PHP 8.1

Existem logs relevantes sobre o problema?

não gera LOG

Meu log não contém informações confidenciais

  • Não estou enviando dados que violem a privacidade do cliente ou da loja.

Qual a gravidade do problema?

Não consegui configurar o modulo

Unable to get the code

Dados de Contato

[email protected]

O que aconteceu?

Apos instalar o modulo de integracao PagBank ao Magento 2.4.6 e seguir para as configuracoes, ao solicitar "Authorize Store Default Config in Envirorment for Tests", login e senha feitos, clicar Autorizar na pagina do PagBank, estou sendo redirecionado a minha loja com a resposta "Unable to get the code...".

Método de Instalação

Via Composer

Versão da Magento/Adobe

2.4.6+ (Magento/Adobe >= 2.4.6)

Qual a versão do PHP?

PHP 8.2

Existem logs relevantes sobre o problema?

No response

Meu log não contém informações confidenciais

  • Não estou enviando dados que violem a privacidade do cliente ou da loja.

Qual a gravidade do problema?

Não consegui configurar o modulo

[Question]:

Dados de Contato

[email protected]

Qual a sua dúvida?

Como eu configuro o módulo de pagamento do pagseguro no magento 2 para realizar venda recorrente (ou assinatura) por cartão de crédito?

Versão da Magento/Adobe

2.3.x (Magento/Adobe >= 2.3.0 e < 2.4.0)

[Bug]: Não é possível configurar o módulo

Dados de Contato

[email protected]

O que aconteceu?

Após instalar o módulo, ao acessar a página de configuração do mesmo (Loja >>> Configurações >>> Vendas >>> Formas de pagamento) nenhuma configuração é apresentada. O erro no log está abaixo.

PS: tentei num servidor de testes com 2.4.6 e erro parece ser o mesmo.

Versão da Magento/Adobe

2.4.0 até 2.4.5 (Magento/Adobe >= 2.4.0 e < 2.4.5)

Qual a versão do PHP?

PHP 8.1

Existem logs relevantes sobre o problema?

[2023-06-04T00:31:07.622917+00:00] main.CRITICAL: Class "PagBank\PaymentMagento\Model\Adminhtml\Source\PaymentGroup" does not exist [] []...

Next Magento\Framework\Exception\LocalizedException: Tipo de bloco inválido: PagBank\PaymentMagento\Model\Adminhtml\Source\PaymentGroup in /home/centralfila/public_html/vendor/magento/framework/View/Layout/Generator/Block.php:278...

Meu log não contém informações confidenciais

  • Não estou enviando dados que violem a privacidade do cliente ou da loja.

Qual a gravidade do problema?

Não consegui configurar o modulo

[Bug]: Pedidos Closed

Dados de Contato

No response

O que aconteceu?

Módulo está gerando Notificações conforme imagem abaixo em pedidos que foram reembolsados e status Closed.

image

@elisei o módulo está funcionando a contento, muito obrigado pelo sempre pronto atendimento.

Método de Instalação

Via Composer

Versão da Magento/Adobe

2.4.6+ (Magento/Adobe >= 2.4.6)

Qual a versão do PHP?

PHP 8.1

Existem logs relevantes sobre o problema?

No response

Meu log não contém informações confidenciais

  • Não estou enviando dados que violem a privacidade do cliente ou da loja.

Qual a gravidade do problema?

Não consegui configurar o modulo

[Dúvida]: Produtos retornando ao estoque

Dados de Contato

[email protected]

O que aconteceu?

Uso na minha configuração de boletos dias de vencimento = 3
Por enquanto percebi que boletos onde o pagamento é compensado somente 4 dias após os produtos voltam ao estoque.
Fazendo com que eu tenha falhas no meu estoque.

No histórico de transações aparece assim.
20 de out. de 2023 13:50:31 Pending Cliente Notificado
20 de out. de 2023 13:50:32 Pending
24 de out. de 2023 05:22:05 Processing
24 de out. de 2023 05:22:05 Processing
24 de out. de 2023 05:22:05 Processing
24 de out. de 2023 05:22:05 Fatura #000003770 criada Cliente Notificado

E quando fui verificar as peças estavam de volta no site para vender.

Método de Instalação

Via Composer

Versão da Magento/Adobe

2.4.6+ (Magento/Adobe >= 2.4.6)

Qual a versão do PHP?

PHP 8.1

Existem logs relevantes sobre o problema?

No response

Meu log não contém informações confidenciais

  • Não estou enviando dados que violem a privacidade do cliente ou da loja.

Qual a gravidade do problema?

Um dos métodos de pagamento não está funcionando

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.