dadeke / woo-picpay

QR Code PicPay for WooCommerce - WordPress Plugin
https://wordpress.org/plugins/woo-picpay/
GNU General Public License v3.0
17 stars 4 forks source link

API Woocommerce request plugin #5

Closed rodrigoreeis closed 4 years ago

rodrigoreeis commented 4 years ago

Estou com uma dúvida estou desenvolvendo um headless que é um projeto pessoal Estou usando o Woocommerce como cms, seria possível eu conseguir integrar esse plugin mesmo eu estando fora da plataforma e só consumindo APIS do woocommerce?

dadeke commented 4 years ago

@rodrigoreeis

É possível sim. Mas necessita de implementação.

https://docs.woocommerce.com/document/woocommerce-rest-api/ https://woocommerce.github.io/woocommerce-rest-api-docs/#create-an-order

{
  "payment_method": "picpay",
  "payment_method_title": "PicPay"
...

O WooCommerce não está chamando o método _WC_PicPay_Gateway::process_payment($order_id)_ quando o pedido é criado através da API.

rodrigoreeis commented 4 years ago

Isso eu consegui fazer normalmente, minha dúvida é na hora que o usuário realiza o pagamento o status da order muda automaticamente no seu plugin ?

rodrigoreeis commented 4 years ago

Porque a API do picpay é bem simples pra gerar o QR code a questão em dúvida é em relação a integração com o pedido no CMS do Woocommerce

rodrigoreeis commented 4 years ago

E eu já tinha realizado algumas teste através do postman chamando o picpay como gateway de pagamento ele não retornava a URL do QR code então eu teria que implementar as chamadas da API do picpay correto?

dadeke commented 4 years ago

Isso eu consegui fazer normalmente, minha dúvida é na hora que o usuário realiza o pagamento o status da order muda automaticamente no seu plugin ?

R: Sim. Quando o pagamento é realizado no PicPay esse plugin altera automaticamente o status do pedido no WooCommerce.

dadeke commented 4 years ago

E eu já tinha realizado algumas teste através do postman chamando o picpay como gateway de pagamento ele não retornava a URL do QR code então eu teria que implementar as chamadas da API do picpay correto?

R: Quando é realizada uma chamada na API do WooCommerce para criar a "order" informando o _"payment_method": "picpay" e "payment_method_title": "PicPay" o correto seria retornar os dados da "order" criada contendo o PicPay_PaymentURL e o PicPay_QRCode_ assim:

{
  "id": 411,
  "parent_id": 0,
  "number": "411",
  "order_key": "wc_order_1JmAafEzsU6gR",
  "created_via": "rest-api",
  "version": "4.0.1",
  "status": "pending",
  "currency": "BRL",
  "date_created": "2020-04-27T23:23:51",
  "date_created_gmt": "2020-04-28T02:23:51",
  "date_modified": "2020-04-27T23:51:14",
  "date_modified_gmt": "2020-04-28T02:51:14",
  "discount_total": "0.00",
  "discount_tax": "0.00",
  "shipping_total": "0.00",
  "shipping_tax": "0.00",
  "cart_tax": "0.00",
  "total": "1.00",
  "total_tax": "0.00",
  "prices_include_tax": false,
  "customer_id": 0,
  "customer_ip_address": "",
  "customer_user_agent": "",
  "customer_note": "",
  "billing": {
    "first_name": "Fulano",
    "last_name": "de Tal",
    "company": "",
    "address_1": "Rua Teste",
    "address_2": "",
    "city": "São Paulo",
    "state": "SP",
    "postcode": "10000-000",
    "country": "BR",
    "email": "teste@exemplo.com.br",
    "phone": "('1) 2222-2222",
    "number": "1234",
    "neighborhood": "Teste",
    "persontype": "F",
    "cpf": "39500150603",
    "rg": "",
    "cnpj": "",
    "ie": "",
    "birthdate": "01-01-1988T00:00:00",
    "sex": "M",
    "cellphone": ""
  },
  "shipping": {
    "first_name": "Fulano",
    "last_name": "de Tal",
    "company": "",
    "address_1": "Rua Teste",
    "address_2": "",
    "city": "São Paulo",
    "state": "SP",
    "postcode": "10000-000",
    "country": "BR",
    "number": "1234",
    "neighborhood": "Teste"
  },
  "payment_method": "picpay",
  "payment_method_title": "PicPay",
  "transaction_id": "",
  "date_paid": null,
  "date_paid_gmt": null,
  "date_completed": null,
  "date_completed_gmt": null,
  "cart_hash": "",
  "meta_data": [
    {
      "id": 5964,
      "key": "_billing_persontype",
      "value": "1"
    },
    {
      "id": 5965,
      "key": "_billing_cpf",
      "value": "395.001.506-03"
    },
    {
      "id": 5966,
      "key": "_billing_cnpj",
      "value": ""
    },
    {
      "id": 5967,
      "key": "_billing_birthdate",
      "value": "01\/01\/1988"
    },
    {
      "id": 5968,
      "key": "_billing_sex",
      "value": "Masculino"
    },
    {
      "id": 5969,
      "key": "_billing_number",
      "value": "1234"
    },
    {
      "id": 5970,
      "key": "_billing_neighborhood",
      "value": "Teste"
    },
    {
      "id": 5971,
      "key": "_billing_cellphone",
      "value": ""
    },
    {
      "id": 5972,
      "key": "_shipping_number",
      "value": "1234"
    },
    {
      "id": 5973,
      "key": "_shipping_neighborhood",
      "value": "Teste"
    },
    {
      "id": 5974,
      "key": "is_vat_exempt",
      "value": "no"
    },
    {
      "id": 5976,
      "key": "PicPay_PaymentURL",
      "value": "https:\/\/app.picpay.com\/checkout\/NWFmMGRjNmViZDc0Y2EwMDMwNzZlYzEw"
    },
    {
      "id": 5977,
      "key": "PicPay_QRCode",
      "value": "data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAZAAAAGQCAIAAAAP3aGbAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAIHklEQVR4nO3dwW4bORRFQcfI\/3+yMYsBZmfCYTjUO62qbRC5LckHvbhg\/\/r6+voAKPh89QUA\/JRgARmCBWQIFpAhWECGYAEZggVkCBaQIVhAhmABGYIFZAgWkCFYQIZgARmCBWQIFpAhWECGYAEZggVkCBaQIVhAhmABGYIFZAgWkCFYQIZgARmCBWQIFpAhWECGYAEZggVkCBaQIVhAhmABGYIFZAgWkCFYQIZgARmCBWQIFpAhWECGYAEZggVkCBaQIVhAhmABGYIFZAgWkCFYQIZgARm\/X30B3\/r8DMf06+vru3\/a+70WL7jn+GUsXnDv4o+\/4M2f9dRv78uF31bg3QgWkCFYQIZgARmCBWQIFpAhWECGYAEZc4ejC0OGbUMmoHuOT1sX9maZQ+amx19wyBcgOm1NXjTwngQLyBAsIEOwgAzBAjIEC8gQLCBDsICM5HB04fgc7g0Pt7y5hxxy8TdfcGH+u\/Fy7rCADMECMgQLyBAsIEOwgAzBAjIEC8gQLCDjacPRtCGHW96cL+4dfHrz7NDjl8HfcIcFZAgWkCFYQIZgARmCBWQIFpAhWECGYAEZhqMNNx8fv3DzAfdDnizPKO6wgAzBAjIEC8gQLCBDsIAMwQIyBAvIECwg42nD0fnjwPQZm8cd36+mPfX3OsgdFpAhWECGYAEZggVkCBaQIVhAhmABGYIFZCSHozeXjcd5YPoPHX83hryH6W\/vy3nvgAzBAjIEC8gQLCBDsIAMwQIyBAvIECwg49dTZ4dF8\/eQN48wvXnxe\/zt3OcOC8gQLCBDsIAMwQIyBAvIECwgQ7CADMECMuYOR28ezDjkQfDpcy+Pv4fHDZnR7r3gnvnfwz\/lDgvIECwgQ7CADMECMgQLyBAsIEOwgAzBAjLmDkePG7KUG3L85nE3Z7RD5qZDPsohG+A73GEBGYIFZAgWkCFYQIZgARmCBWQIFpAhWEDG71dfwLeGrPIW3mqw9zeGvFFDzvOc\/8WezB0WkCFYQIZgARmCBWQIFpAhWECGYAEZggVkzD1xdMjacM\/NcWD6jdoz\/\/DY4x\/lkBd8OXdYQIZgARmCBWQIFpAhWECGYAEZggVkCBaQMXc4etzNVd5xQ572fnO++Iaf1\/Gf9TzusIAMwQIyBAvIECwgQ7CADMECMgQLyBAsIMOj6m\/\/rD1DHrO+kN5D3tyvHr+M+d\/eg9xhARmCBWQIFpAhWECGYAEZggVkCBaQIVhAxtwTR4fM4eZfxpDR40J6U3r8C3DzBcf+dW9zhwVkCBaQIVhAhmABGYIFZAgWkCFYQIZgARlzTxzd89Tntt\/01JHqzcfH8z\/xOQEZggVkCBaQIVhAhmABGYIFZAgWkCFYQEbyxNEhxznuveBxQ3aeQ15wyP9amL9fHduED3dYQIhgARmCBWQIFpAhWECGYAEZggVkCBaQMXc4uvCGjz5fmL+HXEgfEPrUK5zchBFvK8BPCBaQIVhAhmABGYIFZAgWkCFYQIZgARlzH1WfPupzYcjOc2HvZw0ZIqankkNOUp3MHRaQIVhAhmABGYIFZAgWkCFYQIZgARmCBWTMHY4uPPUJ7HuGbEoXhlzGnvTFP29T6g4LyBAsIEOwgAzBAjIEC8gQLCBDsIAMwQIy5j6q\/uaw7eZxjkOOFV24+RT7IfPFIR\/lkG3zZO6wgAzBAjIEC8gQLCBDsIAMwQIyBAvIECwgI3ni6M0V5UJ6UnjT8ct46qj45mUsTJ6bjvhCA\/yEYAEZggVkCBaQIVhAhmABGYIFZAgWkDH3xNE9N5dyQ+aLx6WP+hxi\/jp0YXITpn\/wAP8RLCBDsIAMwQIyBAvIECwgQ7CADMECMpLD0fkPTHc+5EBDZpkL88+wfTl3WECGYAEZggVkCBaQIVhAhmABGYIFZAgWkDF3ODpk8zbkcMs33K8OeeeHuPn2jm3ChzssIESwgAzBAjIEC8gQLCBDsIAMwQIyBAvImDscfaqbp5su3Dzc8uZlLMx\/pPuQye5k7rCADMECMgQLyBAsIEOwgAzBAjIEC8gQLCDj96sv4FvpAycXW76bU8n5P2vvU745Ut0TPc9zvnAUgHcjWECGYAEZggVkCBaQIVhAhmABGYIFZMwdji4Mmd49ddo6\/2TOheMj1T1DfuUhfykHhf\/kgHcjWECGYAEZggVkCBaQIVhAhmABGYIFZCSHowvp0ePC8cfHH\/+9hixRhxwretzx3ys6N3WHBWQIFpAhWECGYAEZggVkCBaQIVhAhmABGU8bjs43ZG148wX3\/teQs0MXhgwshyyH7xjxwQP8hGABGYIFZAgWkCFYQIZgARmCBWQIFpBhONpwfOZ3\/JjKhZtz04WbFz\/\/Z0W90a8K1AkWkCFYQIZgARmCBWQIFpAhWECGYAEZTxuORs9R\/Nfxx5EPeTeGXPze23v80M4hx8BGDyN1hwVkCBaQIVhAhmABGYIFZAgWkCFYQIZgARnJ4ehTj1icv+WbfyTm\/J3nwvE3anHxQ75Rf+qZf\/nAIwkWkCFYQIZgARmCBWQIFpAhWECGYAEZv6L7MeANucMCMgQLyBAsIEOwgAzBAjIEC8gQLCBDsIAMwQIyBAvIECwgQ7CADMECMgQLyBAsIEOwgAzBAjIEC8gQLCBDsIAMwQIyBAvIECwgQ7CADMECMgQLyBAsIEOwgAzBAjIEC8gQLCBDsIAMwQIyBAvIECwgQ7CADMECMgQLyBAsIEOwgAzBAjIEC8gQLCBDsIAMwQIyBAvIECwgQ7CADMECMgQLyBAsIOMfNhb2ttAasncAAAAASUVORK5CYII="
    }
  ],
  "line_items": [
    {
      "id": 113,
      "name": "Camiseta com gola V",
      "product_id": 37,
      "variation_id": 0,
      "quantity": 1,
      "tax_class": "",
      "subtotal": "1.00",
      "subtotal_tax": "0.00",
      "total": "1.00",
      "total_tax": "0.00",
      "taxes": [],
      "meta_data": [],
      "sku": "",
      "price": 1
    }
  ],
  "tax_lines": [],
  "shipping_lines": [
    {
      "id": 114,
      "method_title": "Retirar no local",
      "method_id": "local_pickup",
      "instance_id": "3",
      "total": "0.00",
      "total_tax": "0.00",
      "taxes": [],
      "meta_data": [
        {
          "id": 855,
          "key": "Itens",
          "value": "Camiseta com gola V × 1"
        }
      ]
    }
  ],
  "fee_lines": [],
  "coupon_lines": [],
  "refunds": [],
  "currency_symbol": "R$",
  "_links": {
    "self": [
      {
        "href": "https:\/\/example.com\/wp-json\/wc\/v3\/orders\/411"
      }
    ],
    "collection": [
      {
        "href": "https:\/\/example.com\/wp-json\/wc\/v3\/orders"
      }
    ]
  }
}

Esses dados não estão sendo retornados porque o método _WC_PicPay_Gateway::process_payment($order_id) não está sendo executado quando a "order"_ está sendo criada através da API do WooCommerce.

Então uma nova funcionalidade precisa ser implementada nesse plugin para ele reconheça as chamadas realizadas na API do WooCommerce a fim de colocar o método _WC_PicPay_Gateway::process_payment($order_id)_ para ser executado. Seria algo semelhante a isto: https://stackoverflow.com/questions/30922742/woocommerce-rest-api-v2-how-to-process-payment#30942730

Marquei essa issue como "enhancement" para futura implementação.

rodrigoreeis commented 4 years ago

Acredito que melhor resposta não teria ficou tudo mais claro, de alguma certa maneira eu consigo gerar uma order pela API, porém é exatamente isso que foi comentado.

Minha única solução que vem no momento seria gerar o QR code direto na API do picpay e fazer a relação do ID da order e ficar trocando o status manualmente, pensando no cenário que não irei ter um fluxo grande de vendas por esse método.

Realmente se eu tivesse conhecimento em PHP e soubesse um pouco mais de wordpress eu implementaria essa feature sem problema nenhum, mas só estou usando o wordpress como CMS e acabo nem tendo contato com os funções do php do CMS.

Mas parabéns pelo trabalho!!

dadeke commented 4 years ago

Implementação realizada. https://github.com/dadeke/woo-picpay/commit/fd4271752f72aca76a315fe3c3077d097c817db5

xxsioo commented 3 years ago

Olá, estou fazendo um sistema de um tamanho, mas não consigo encontrar a palavra-chave Picpay Browser para o canal de identificação, posso me dizer?