{"id":13502511,"url":"https://github.com/Japle/python-pagseguro","last_synced_at":"2025-03-29T12:32:03.615Z","repository":{"id":11489526,"uuid":"13962818","full_name":"Japle/python-pagseguro","owner":"Japle","description":"Integração com a API v2 de pagamentos e notificações do Pagseguro utilizando requests.","archived":false,"fork":false,"pushed_at":"2022-12-08T02:18:29.000Z","size":221,"stargazers_count":171,"open_issues_count":28,"forks_count":69,"subscribers_count":33,"default_branch":"master","last_synced_at":"2024-05-19T07:40:08.874Z","etag":null,"topics":["carrinho-de-compras","pagamento","pagseguro","python"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Japle.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2013-10-29T17:15:47.000Z","updated_at":"2024-05-09T22:48:02.000Z","dependencies_parsed_at":"2023-01-13T16:32:08.783Z","dependency_job_id":null,"html_url":"https://github.com/Japle/python-pagseguro","commit_stats":null,"previous_names":["rochacbruno/python-pagseguro"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Japle%2Fpython-pagseguro","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Japle%2Fpython-pagseguro/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Japle%2Fpython-pagseguro/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Japle%2Fpython-pagseguro/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Japle","download_url":"https://codeload.github.com/Japle/python-pagseguro/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246186816,"owners_count":20737453,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["carrinho-de-compras","pagamento","pagseguro","python"],"created_at":"2024-07-31T22:02:16.327Z","updated_at":"2025-03-29T12:32:03.341Z","avatar_url":"https://github.com/Japle.png","language":"Python","funding_links":["https://www.paypal.com/cgi-bin/webscr?cmd=_donations\u0026amp;business=rochacbruno%40gmail%2ecom\u0026amp;lc=BR\u0026amp;item_name=pythonpagseguro\u0026amp;no_note=0\u0026amp;currency_code=BRL\u0026amp;bn=PP%2dDonationsBF%3abtn_donate_SM%2egif%3aNonHostedGuest"],"categories":["Python"],"sub_categories":[],"readme":"\u003e **Este projeto agora é mantido pelo @PagSeguro, o repositório foi transferido para o user @Japle que é o responsável pelas libs e integrações no PagSeguro**. -- @rochacbruno\n\npython-pagseguro\n================\n[![Build\nStatus](https://travis-ci.org/rochacbruno/python-pagseguro.png)](https://travis-ci.org/rochacbruno/python-pagseguro)\n[![Coverage\nStatus](https://coveralls.io/repos/rochacbruno/python-pagseguro/badge.png)](https://coveralls.io/r/rochacbruno/python-pagseguro)\n[![Gitter chat](https://badges.gitter.im/gitterHQ/gitter.png)](https://gitter.im/python-pagseguro/Lobby)\n\n\u003ca target=\"_blank\" href=\"https://www.paypal.com/cgi-bin/webscr?cmd=_donations\u0026amp;business=rochacbruno%40gmail%2ecom\u0026amp;lc=BR\u0026amp;item_name=pythonpagseguro\u0026amp;no_note=0\u0026amp;currency_code=BRL\u0026amp;bn=PP%2dDonationsBF%3abtn_donate_SM%2egif%3aNonHostedGuest\"\u003e\u003cimg alt='Donate with Paypal' src='http://www.paypalobjects.com/en_US/i/btn/btn_donate_SM.gif' /\u003e\u003c/a\u003e\n\nIntegração com a API v2 de pagamentos e notificações do Pagseguro utilizando requests.\n\nContribuidores\n==============\n\n[![](https://sourcerer.io/fame/rochacbruno/rochacbruno/python-pagseguro/images/0)](https://sourcerer.io/fame/rochacbruno/rochacbruno/python-pagseguro/links/0)[![](https://sourcerer.io/fame/rochacbruno/rochacbruno/python-pagseguro/images/1)](https://sourcerer.io/fame/rochacbruno/rochacbruno/python-pagseguro/links/1)[![](https://sourcerer.io/fame/rochacbruno/rochacbruno/python-pagseguro/images/2)](https://sourcerer.io/fame/rochacbruno/rochacbruno/python-pagseguro/links/2)[![](https://sourcerer.io/fame/rochacbruno/rochacbruno/python-pagseguro/images/3)](https://sourcerer.io/fame/rochacbruno/rochacbruno/python-pagseguro/links/3)[![](https://sourcerer.io/fame/rochacbruno/rochacbruno/python-pagseguro/images/4)](https://sourcerer.io/fame/rochacbruno/rochacbruno/python-pagseguro/links/4)[![](https://sourcerer.io/fame/rochacbruno/rochacbruno/python-pagseguro/images/5)](https://sourcerer.io/fame/rochacbruno/rochacbruno/python-pagseguro/links/5)[![](https://sourcerer.io/fame/rochacbruno/rochacbruno/python-pagseguro/images/6)](https://sourcerer.io/fame/rochacbruno/rochacbruno/python-pagseguro/links/6)[![](https://sourcerer.io/fame/rochacbruno/rochacbruno/python-pagseguro/images/7)](https://sourcerer.io/fame/rochacbruno/rochacbruno/python-pagseguro/links/7)\n\nFaça parte! mande um Pull Request!\n\nInstalando\n==========================\n```bash\npip install pagseguro\n```\n\nou\n\n\n```bash\npip install -e git+https://github.com/rochacbruno/python-pagseguro#egg=pagseguro\n```\n\nou\n\n```\ngit clone https://github.com/rochacbruno/python-pagseguro\ncd python-pagseguro\npip install -r requirements.txt\npython setup.py install\n```\n\nRodando os testes\n=================\n\n```\nmake test\n```\n\nComo usar\n=========\n\n### Carrinho de compras / ordem de venda\n\nUma instancia de **PagSeguro** funciona como uma ordem de venda, ou um carrinho de compras. É preciso criar a instancia passando como parametro email e token.\n\n\u003e Opcionalmente é possivel passar o parametro **data** contendo valores a serem passados diretamente para a API.\n\n```python\nfrom pagseguro import PagSeguro\n\npg = PagSeguro(email=\"seuemail@dominio.com\", token=\"ABCDEFGHIJKLMNO\")\n```\n\n### Sandbox e Config Customizadas\n\nAo instanciar um objecto `PagSeguro`, você poderá passar um parâmetro `config` contendo a class de configuração a ser usada pela classe. A variável `config` somente irá aceitar o tipo `dict`.\n\n```python\nfrom pagseguro import PagSeguro\n\nconfig = {'sandbox': True}\npg = PagSeguro(email=\"seuemail@dominio.com\", token=\"ABCDEFGHIJKLMNO\", config=config)\n```\n\nO seu config também pode fazer override de algumas váriaveis pré-definidas na classe de Config padrão. São elas:\n\n- CURRENCY - Moeda utilizada. Valor padrão: `'BRL'`\n- DATETIME_FORMAT - Formato de Data/Hora. Valor Padrão: `'%Y-%m-%dT%H:%M:%S'`\n- REFERENCE_PREFIX - Formato do valor de referência do produto. Valor Padrão: `'REF%s'` Obs: Nesse caso, sempre é necessário deixar o `%s` ao final do prefixo para que o mesmo seja preenchido automaticamente\n- USE_SHIPPING - User endereço de entrega. Valor padrão: `True`\n\n\n### Configurando os dados do comprador\n\n```python\npg.sender = {\n    \"name\": \"Bruno Rocha\",\n    \"area_code\": 11,\n    \"phone\": 981001213,\n    \"email\": \"rochacbruno@gmail.com\",\n}\n```\n\n### Configurando endereço de entrega\n```python\npg.shipping = {\n    \"type\": pg.SEDEX,\n    \"street\": \"Av Brig Faria Lima\",\n    \"number\": 1234,\n    \"complement\": \"5 andar\",\n    \"district\": \"Jardim Paulistano\",\n    \"postal_code\": \"06650030\",\n    \"city\": \"Sao Paulo\",\n    \"state\": \"SP\",\n    \"country\": \"BRA\"\n}\n```\n\nCaso o **country** não seja informado o valor default será \"BRA\"\n\nO **type** pode ser pg.SEDEX, pg.PAC, pg.NONE\n\u003e Opcionalmente pode ser numerico seguindo a tabela pagseguro:\n\n| Número | Descrição | Type |\n| ------ | --------- | ---- |\n| 1 | PAC | pg.PAC |\n| 2 | SEDEX | pg.SEDEX |\n| 3 | Nao especificado | pg.NONE |\n\nValores opcionais para **shipping**\n- \"cost\": \"123456.26\"\n    Decimal, com duas casas decimais separadas por ponto (p.e, 1234.56), maior que 0.00 e menor ou igual a 9999999.00.\n\n\n### Configurando a referencia\n\nReferencia é geralmente o código que identifica a compra em seu sistema\n\nPor padrão a referencia será prefizada com \"REF\", mas isso pode ser alterado setando um prefixo diferente\n\n```python\npg.reference_prefix = \"CODE\"\npg.reference_prefix = None  # para desabilitar o prefixo\n```\n\n```python\npg.reference = \"00123456789\"\nprint pg.reference\n\"REF00123456789\"\n```\n\n### Configurando valor extra\n\nEspecifica um valor extra que deve ser adicionado ou subtraído ao valor total do pagamento. Esse valor pode representar uma taxa extra a ser cobrada no pagamento ou um desconto a ser concedido, caso o valor seja negativo.\n\nFormato: Float (positivo ou negativo).\n\n```python\npg.extra_amount = 12.70\n```\n\n### Inserindo produtos no carrinho\n\nO carrinho de compras é uma lista contendo dicionários que representam cada produto nos seguinte formato.\n\n#### adicionando vários produtos\n\n```python\npg.items = [\n    {\"id\": \"0001\", \"description\": \"Produto 1\", \"amount\": 354.20, \"quantity\": 2, \"weight\": 200},\n    {\"id\": \"0002\", \"description\": \"Produto 2\", \"amount\": 50, \"quantity\": 1, \"weight\": 1000}\n]\n```\n\nO **weight** do produto é representado em gramas\n\n#### Adicionando um produto por vez\n\nDa forma tradicional\n\n```python\npg.items.append(\n    {\"id\": \"0003\", \"description\": \"Produto 3\", \"amount\": 354.20, \"quantity\": 2, \"weight\": 200},\n)\n```\n\nOu atraves do helper\n\n```python\npg.add_item(id=\"0003\", description=\"produto 4\", amount=320, quantity=1, weight=2500)\n```\n\n### Configurando a URL de redirect\n\nPara onde o comprador será redirecionado após completar o pagamento\n\n```python\npg.redirect_url = \"http://meusite.com/obrigado\"\n```\n\n### Configurando a URL de notificaçao (opcional)\n\n```python\npg.notification_url = \"http://meusite.com/notification\"\n```\n\n### Efetuando o processo de checkout\n\nDepois que o carrinho esta todo configurado e com seus itens inseridos, ex: quando o seu cliente clicar no botão \"efetuar pagamento\", o seguinte método deverá ser executado.\n\n```python\nresponse = pg.checkout()\n```\n\nO método checkout faz a requisição ao pagseguro e retorna um objeto PagSeguroResponse com os atributos code, date, payment_url, errors.\n\nÉ aconselhavel armazenar o código da transação em seu banco de dados juntamente com as informações do carrinho para seu controle interno.\n\nUtilize a **payment_url** para enviar o comprador para a página de pagamento do pagseguro.\n\n```python\nreturn redirect(response.payment_url)\n```\n\nApós o pagamento o comprador será redirecionado de volta para os eu site através da configuração de url de retorno global ou utilizará a url especificada no parametro **redirect_url**\n\n# Notificações\n\nO PagSeguro envia as notificações para a URL que você configurou usando o protocolo HTTP, pelo método POST.\n\nSuponde que você receberá a notificação em: http://seusite.com/notification\n\n\u003e Pseudo codigo\n\n```python\nfrom pagseguro import PagSeguro\n\ndef notification_view(request):\n    notification_code = request.POST['notificationCode']\n    pg = PagSeguro(email=\"seuemail@dominio.com\", token=\"ABCDEFGHIJKLMNO\")\n    notification_data = pg.check_notification(notification_code)\n    ...\n```\n\nNo exemplo acima pegamos o **notificationCode** que foi enviado através do pagseguro e fizemos uma consulta para pegar os dados da notificação, o retorno será em um dicionário Python com o seguinte formato:\n\n```python\n{\n    \"date\": datetime(2013, 01, 01, 18, 23, 0000),\n    \"code\": \"XDFD454545\",\n    \"reference\": \"REF00123456789\",\n    \"type\": 1,\n    \"status\": 3,\n    \"cancellationSource\": \"INTERNAL\",\n    ...\n}\n```\n\nA lista completa de valores pode ser conferida em  https://pagseguro.uol.com.br/v2/guia-de-integracao/api-de-notificacoes.html\n\n\n# Implementações\n\n\u003e Implementações a serem feitas, esperando o seu Pull Request!!!\n\n## Quokka CMS\n[Quokka Cart PagSeguro Processor](https://github.com/pythonhub/quokka-cart/blob/master/processors/pagseguro_processor.py)\n\n## Exemplo em Flask\n\n[FlaskSeguro](https://github.com/rochacbruno/python-pagseguro/tree/master/examples/flask)\nby @shyba\n\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FJaple%2Fpython-pagseguro","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FJaple%2Fpython-pagseguro","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FJaple%2Fpython-pagseguro/lists"}