whatsapp-docs-mcp 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +22 -0
- package/README.md +181 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +65 -0
- package/dist/index.js.map +1 -0
- package/dist/prompts.d.ts +22 -0
- package/dist/prompts.d.ts.map +1 -0
- package/dist/prompts.js +305 -0
- package/dist/prompts.js.map +1 -0
- package/dist/resources.d.ts +24 -0
- package/dist/resources.d.ts.map +1 -0
- package/dist/resources.js +132 -0
- package/dist/resources.js.map +1 -0
- package/dist/tools.d.ts +6 -0
- package/dist/tools.d.ts.map +1 -0
- package/dist/tools.js +379 -0
- package/dist/tools.js.map +1 -0
- package/dist/utils/fileLoader.d.ts +19 -0
- package/dist/utils/fileLoader.d.ts.map +1 -0
- package/dist/utils/fileLoader.js +126 -0
- package/dist/utils/fileLoader.js.map +1 -0
- package/dist/utils/search.d.ts +27 -0
- package/dist/utils/search.d.ts.map +1 -0
- package/dist/utils/search.js +91 -0
- package/dist/utils/search.js.map +1 -0
- package/docs/QUICK_REFERENCE.md +223 -0
- package/docs/anuncios_com_clique_para_whatsapp/AGENTS.md +8 -0
- package/docs/anuncios_com_clique_para_whatsapp/welcome_message_sequences.md +449 -0
- package/docs/ativos_da_conta/AGENTS.md +9 -0
- package/docs/ativos_da_conta/outros_ativos/AGENTS.md +12 -0
- package/docs/ativos_da_conta/outros_ativos/business_profiles.md +137 -0
- package/docs/ativos_da_conta/outros_ativos/display_names.md +108 -0
- package/docs/ativos_da_conta/outros_ativos/official_business_accounts.md +123 -0
- package/docs/ativos_da_conta/outros_ativos/qr_codes.md +198 -0
- package/docs/ativos_da_conta/outros_ativos/whatsapp_business_accounts.md +99 -0
- package/docs/ativos_da_conta/telefones_comerciais/AGENTS.md +11 -0
- package/docs/ativos_da_conta/telefones_comerciais/conversational_components.md +347 -0
- package/docs/ativos_da_conta/telefones_comerciais/phone_numbers.md +486 -0
- package/docs/ativos_da_conta/telefones_comerciais/registration.md +171 -0
- package/docs/ativos_da_conta/telefones_comerciais/two_step_verification.md +66 -0
- package/docs/catalogos/AGENTS.md +12 -0
- package/docs/catalogos/receive_responses.md +28 -0
- package/docs/catalogos/sell_products_and_services.md +24 -0
- package/docs/catalogos/set_commerce_settings.md +163 -0
- package/docs/catalogos/share_products.md +401 -0
- package/docs/catalogos/upload_inventory.md +28 -0
- package/docs/comecar/AGENTS.md +8 -0
- package/docs/comecar/get_started.md +127 -0
- package/docs/dados_privacidade_e_politica/AGENTS.md +16 -0
- package/docs/dados_privacidade_e_politica/block_users.md +549 -0
- package/docs/dados_privacidade_e_politica/data_privacy_and_security.md +78 -0
- package/docs/dados_privacidade_e_politica/encryption.md +8 -0
- package/docs/dados_privacidade_e_politica/getting_opt_in.md +41 -0
- package/docs/dados_privacidade_e_politica/identity_change.md +34 -0
- package/docs/dados_privacidade_e_politica/local_storage.md +277 -0
- package/docs/dados_privacidade_e_politica/no_storage.md +132 -0
- package/docs/dados_privacidade_e_politica/policy_enforcement.md +85 -0
- package/docs/dados_privacidade_e_politica/policy_enforcement_violations.md +127 -0
- package/docs/grupos/AGENTS.md +15 -0
- package/docs/grupos/error_codes.md +170 -0
- package/docs/grupos/faq.md +30 -0
- package/docs/grupos/get_started.md +73 -0
- package/docs/grupos/groups.md +75 -0
- package/docs/grupos/groups_messaging.md +340 -0
- package/docs/grupos/pricing.md +322 -0
- package/docs/grupos/reference.md +1059 -0
- package/docs/grupos/webhooks.md +298 -0
- package/docs/index.md +318 -0
- package/docs/insights/AGENTS.md +8 -0
- package/docs/insights/analytics.md +944 -0
- package/docs/ligacoes/AGENTS.md +20 -0
- package/docs/ligacoes/app_review_guidelines.md +48 -0
- package/docs/ligacoes/business_initiated_calls.md +858 -0
- package/docs/ligacoes/call_button_messages_deep_links.md +454 -0
- package/docs/ligacoes/call_settings.md +643 -0
- package/docs/ligacoes/calling.md +130 -0
- package/docs/ligacoes/faq.md +468 -0
- package/docs/ligacoes/integration_patterns.md +121 -0
- package/docs/ligacoes/pricing.md +339 -0
- package/docs/ligacoes/reference.md +1923 -0
- package/docs/ligacoes/sip.md +1090 -0
- package/docs/ligacoes/troubleshooting.md +483 -0
- package/docs/ligacoes/user_call_permissions.md +672 -0
- package/docs/ligacoes/user_initiated_calls.md +1030 -0
- package/docs/mensagens/AGENTS.md +46 -0
- package/docs/mensagens/limites_de_mensagens/AGENTS.md +9 -0
- package/docs/mensagens/limites_de_mensagens/messaging_limits.md +91 -0
- package/docs/mensagens/limites_de_mensagens/upcoming_changes.md +8 -0
- package/docs/mensagens/recursos_adicionais/AGENTS.md +13 -0
- package/docs/mensagens/recursos_adicionais/contextual_replies.md +82 -0
- package/docs/mensagens/recursos_adicionais/link_previews.md +58 -0
- package/docs/mensagens/recursos_adicionais/mark_message_as_read.md +111 -0
- package/docs/mensagens/recursos_adicionais/media.md +419 -0
- package/docs/mensagens/recursos_adicionais/payload_encryption.md +8 -0
- package/docs/mensagens/recursos_adicionais/typing_indicators.md +117 -0
- package/docs/mensagens/tipos_de_mensagens/AGENTS.md +24 -0
- package/docs/mensagens/tipos_de_mensagens/address_messages.md +465 -0
- package/docs/mensagens/tipos_de_mensagens/audio_messages.md +211 -0
- package/docs/mensagens/tipos_de_mensagens/contacts_messages.md +482 -0
- package/docs/mensagens/tipos_de_mensagens/document_messages.md +232 -0
- package/docs/mensagens/tipos_de_mensagens/image_messages.md +176 -0
- package/docs/mensagens/tipos_de_mensagens/interactive_cta_url_messages.md +240 -0
- package/docs/mensagens/tipos_de_mensagens/interactive_flow_messages.md +8 -0
- package/docs/mensagens/tipos_de_mensagens/interactive_list_messages.md +300 -0
- package/docs/mensagens/tipos_de_mensagens/interactive_reply_buttons_messages.md +271 -0
- package/docs/mensagens/tipos_de_mensagens/location_messages.md +156 -0
- package/docs/mensagens/tipos_de_mensagens/location_request_messages.md +310 -0
- package/docs/mensagens/tipos_de_mensagens/message_with_link.md +8 -0
- package/docs/mensagens/tipos_de_mensagens/reaction_messages.md +144 -0
- package/docs/mensagens/tipos_de_mensagens/sticker_messages.md +157 -0
- package/docs/mensagens/tipos_de_mensagens/template_messages.md +20 -0
- package/docs/mensagens/tipos_de_mensagens/text_messages.md +142 -0
- package/docs/mensagens/tipos_de_mensagens/video_messages.md +149 -0
- package/docs/mensagens/visao_geral/AGENTS.md +8 -0
- package/docs/mensagens/visao_geral/send_messages.md +370 -0
- package/docs/mensagens_de_marketing/AGENTS.md +10 -0
- package/docs/mensagens_de_marketing/implementacao/AGENTS.md +10 -0
- package/docs/mensagens_de_marketing/implementacao/get_started.md +107 -0
- package/docs/mensagens_de_marketing/implementacao/onboard_business_customers.md +180 -0
- package/docs/mensagens_de_marketing/implementacao/send_marketing_messages.md +260 -0
- package/docs/mensagens_de_marketing/recursos/AGENTS.md +12 -0
- package/docs/mensagens_de_marketing/recursos/automatic_creative_optimization.md +8 -0
- package/docs/mensagens_de_marketing/recursos/conversion_measurement.md +8 -0
- package/docs/mensagens_de_marketing/recursos/deep_links.md +302 -0
- package/docs/mensagens_de_marketing/recursos/track_click_events.md +119 -0
- package/docs/mensagens_de_marketing/recursos/view_metrics.md +338 -0
- package/docs/mensagens_de_marketing/visao_geral/AGENTS.md +8 -0
- package/docs/mensagens_de_marketing/visao_geral/overview.md +26 -0
- package/docs/modelos/AGENTS.md +12 -0
- package/docs/modelos/gerenciamento_de_modelos/AGENTS.md +21 -0
- package/docs/modelos/gerenciamento_de_modelos/components.md +717 -0
- package/docs/modelos/gerenciamento_de_modelos/supported_languages.md +462 -0
- package/docs/modelos/gerenciamento_de_modelos/tap_target_url_title_override.md +211 -0
- package/docs/modelos/gerenciamento_de_modelos/template_categorization.md +499 -0
- package/docs/modelos/gerenciamento_de_modelos/template_comparison.md +136 -0
- package/docs/modelos/gerenciamento_de_modelos/template_library.md +526 -0
- package/docs/modelos/gerenciamento_de_modelos/template_management.md +148 -0
- package/docs/modelos/gerenciamento_de_modelos/template_media.md +8 -0
- package/docs/modelos/gerenciamento_de_modelos/template_migration.md +164 -0
- package/docs/modelos/gerenciamento_de_modelos/template_pacing.md +38 -0
- package/docs/modelos/gerenciamento_de_modelos/template_pausing.md +58 -0
- package/docs/modelos/gerenciamento_de_modelos/template_quality.md +47 -0
- package/docs/modelos/gerenciamento_de_modelos/template_review.md +74 -0
- package/docs/modelos/gerenciamento_de_modelos/time_to_live.md +88 -0
- package/docs/modelos/modelos_de_autenticacao/AGENTS.md +13 -0
- package/docs/modelos/modelos_de_autenticacao/authentication_best_practices.md +73 -0
- package/docs/modelos/modelos_de_autenticacao/authentication_templates.md +252 -0
- package/docs/modelos/modelos_de_autenticacao/autofill_button_authentication_templates.md +732 -0
- package/docs/modelos/modelos_de_autenticacao/copy_code_button_authentication_templates.md +402 -0
- package/docs/modelos/modelos_de_autenticacao/error_signals.md +143 -0
- package/docs/modelos/modelos_de_autenticacao/zero_tap_authentication_templates.md +742 -0
- package/docs/modelos/modelos_de_marketing/AGENTS.md +18 -0
- package/docs/modelos/modelos_de_marketing/call_permission_request_message_template.md +221 -0
- package/docs/modelos/modelos_de_marketing/catalog_templates.md +308 -0
- package/docs/modelos/modelos_de_marketing/coupon_templates.md +425 -0
- package/docs/modelos/modelos_de_marketing/custom_marketing_templates.md +537 -0
- package/docs/modelos/modelos_de_marketing/limited_time_offer_templates.md +496 -0
- package/docs/modelos/modelos_de_marketing/marketing_templates.md +112 -0
- package/docs/modelos/modelos_de_marketing/media_card_carousel_templates.md +770 -0
- package/docs/modelos/modelos_de_marketing/mpm_templates.md +717 -0
- package/docs/modelos/modelos_de_marketing/per_user_limits.md +42 -0
- package/docs/modelos/modelos_de_marketing/product_card_carousel_templates.md +515 -0
- package/docs/modelos/modelos_de_marketing/spm_templates.md +466 -0
- package/docs/modelos/modelos_de_utilidade/AGENTS.md +8 -0
- package/docs/modelos/modelos_de_utilidade/utility_templates.md +583 -0
- package/docs/modelos/visao_geral/AGENTS.md +8 -0
- package/docs/modelos/visao_geral/overview.md +163 -0
- package/docs/pagamentos/AGENTS.md +9 -0
- package/docs/pagamentos/pagamentos_na_india/AGENTS.md +19 -0
- package/docs/pagamentos/pagamentos_na_india/checkout_button_templates.md +1332 -0
- package/docs/pagamentos/pagamentos_na_india/enhanced_payment_links.md +93 -0
- package/docs/pagamentos/pagamentos_na_india/onboarding_apis.md +580 -0
- package/docs/pagamentos/pagamentos_na_india/orderdetailstemplate.md +205 -0
- package/docs/pagamentos/pagamentos_na_india/orderstatustemplate.md +143 -0
- package/docs/pagamentos/pagamentos_na_india/overview.md +102 -0
- package/docs/pagamentos/pagamentos_na_india/payment_links.md +581 -0
- package/docs/pagamentos/pagamentos_na_india/pg.md +1228 -0
- package/docs/pagamentos/pagamentos_na_india/upi_intent/AGENTS.md +12 -0
- package/docs/pagamentos/pagamentos_na_india/upi_intent/dynamic_vpa.md +572 -0
- package/docs/pagamentos/pagamentos_na_india/upi_intent/pg_guide_billdesk.md +343 -0
- package/docs/pagamentos/pagamentos_na_india/upi_intent/pg_guide_cashfree.md +145 -0
- package/docs/pagamentos/pagamentos_na_india/upi_intent/pg_guide_ccavenue.md +146 -0
- package/docs/pagamentos/pagamentos_na_india/upi_intent/upi_intent.md +660 -0
- package/docs/pagamentos/pagamentos_no_brasil/AGENTS.md +14 -0
- package/docs/pagamentos/pagamentos_no_brasil/boleto.md +104 -0
- package/docs/pagamentos/pagamentos_no_brasil/offsite_pix.md +128 -0
- package/docs/pagamentos/pagamentos_no_brasil/one_click_payments.md +226 -0
- package/docs/pagamentos/pagamentos_no_brasil/orderdetailstemplate.md +180 -0
- package/docs/pagamentos/pagamentos_no_brasil/orders.md +768 -0
- package/docs/pagamentos/pagamentos_no_brasil/overview.md +32 -0
- package/docs/pagamentos/pagamentos_no_brasil/payment_links.md +104 -0
- package/docs/parceiros/AGENTS.md +12 -0
- package/docs/parceiros/analise_do_app/AGENTS.md +8 -0
- package/docs/parceiros/analise_do_app/app_review.md +91 -0
- package/docs/parceiros/gerenciamento/AGENTS.md +14 -0
- package/docs/parceiros/gerenciamento/gerenciar_ativos_do_cliente/AGENTS.md +15 -0
- package/docs/parceiros/gerenciamento/gerenciar_ativos_do_cliente/manage_accounts.md +274 -0
- package/docs/parceiros/gerenciamento/gerenciar_ativos_do_cliente/manage_system_users.md +106 -0
- package/docs/parceiros/gerenciamento/gerenciar_ativos_do_cliente/manage_webhooks.md +277 -0
- package/docs/parceiros/gerenciamento/gerenciar_ativos_do_cliente/numeros_de_telefone/AGENTS.md +9 -0
- package/docs/parceiros/gerenciamento/gerenciar_ativos_do_cliente/numeros_de_telefone/manage_phone_numbers.md +248 -0
- package/docs/parceiros/gerenciamento/gerenciar_ativos_do_cliente/numeros_de_telefone/registering_phone_numbers.md +373 -0
- package/docs/parceiros/gerenciamento/gerenciar_ativos_do_cliente/share_and_revoke_credit_lines.md +551 -0
- package/docs/parceiros/gerenciamento/partner_led_business_verification.md +367 -0
- package/docs/parceiros/gerenciamento/pixel_tracking.md +35 -0
- package/docs/parceiros/gerenciamento/suporte_ao_parceiro/AGENTS.md +18 -0
- package/docs/parceiros/gerenciamento/suporte_ao_parceiro/adding_waba_to_mps.md +64 -0
- package/docs/parceiros/gerenciamento/suporte_ao_parceiro/business_customer_support.md +102 -0
- package/docs/parceiros/gerenciamento/suporte_ao_parceiro/migrating_customers_off_solutions_via_embedded_signup.md +151 -0
- package/docs/parceiros/gerenciamento/suporte_ao_parceiro/migrating_customers_off_solutions_via_meta_business_suite.md +234 -0
- package/docs/parceiros/gerenciamento/suporte_ao_parceiro/migrating_phone_numbers_among_solution_partners_programmatically.md +292 -0
- package/docs/parceiros/gerenciamento/suporte_ao_parceiro/migrating_phone_numbers_among_solution_partners_via_embedded_signup.md +118 -0
- package/docs/parceiros/gerenciamento/suporte_ao_parceiro/migrating_wabas_among_solution_partners_via_embedded_signup.md +76 -0
- package/docs/parceiros/gerenciamento/suporte_ao_parceiro/migrating_wabas_among_solutions_via_embedded_signup.md +90 -0
- package/docs/parceiros/gerenciamento/suporte_ao_parceiro/migrating_wabas_among_solutions_via_meta_business_suite.md +265 -0
- package/docs/parceiros/gerenciamento/suporte_ao_parceiro/support.md +48 -0
- package/docs/parceiros/gerenciamento/suporte_ao_parceiro/transferring_wabas_to_customers.md +8 -0
- package/docs/parceiros/integracao_de_clientes/AGENTS.md +9 -0
- package/docs/parceiros/integracao_de_clientes/cadastro_incorporado/AGENTS.md +26 -0
- package/docs/parceiros/integracao_de_clientes/cadastro_incorporado/app_only_install.md +135 -0
- package/docs/parceiros/integracao_de_clientes/cadastro_incorporado/automatic_events_api.md +204 -0
- package/docs/parceiros/integracao_de_clientes/cadastro_incorporado/bypass_phone_addition.md +52 -0
- package/docs/parceiros/integracao_de_clientes/cadastro_incorporado/custom_flows.md +40 -0
- package/docs/parceiros/integracao_de_clientes/cadastro_incorporado/default_flow.md +90 -0
- package/docs/parceiros/integracao_de_clientes/cadastro_incorporado/errors.md +185 -0
- package/docs/parceiros/integracao_de_clientes/cadastro_incorporado/hosted_es.md +153 -0
- package/docs/parceiros/integracao_de_clientes/cadastro_incorporado/implementation.md +417 -0
- package/docs/parceiros/integracao_de_clientes/cadastro_incorporado/onboarding_business_app_users.md +926 -0
- package/docs/parceiros/integracao_de_clientes/cadastro_incorporado/onboarding_customers_as_a_solution_partner.md +402 -0
- package/docs/parceiros/integracao_de_clientes/cadastro_incorporado/onboarding_customers_as_a_tech_provider.md +332 -0
- package/docs/parceiros/integracao_de_clientes/cadastro_incorporado/overview.md +168 -0
- package/docs/parceiros/integracao_de_clientes/cadastro_incorporado/pre_filled_data.md +524 -0
- package/docs/parceiros/integracao_de_clientes/cadastro_incorporado/pre_verified_numbers.md +291 -0
- package/docs/parceiros/integracao_de_clientes/cadastro_incorporado/versions/AGENTS.md +12 -0
- package/docs/parceiros/integracao_de_clientes/cadastro_incorporado/versions/version_2_public_preview.md +88 -0
- package/docs/parceiros/integracao_de_clientes/cadastro_incorporado/versions/version_3.md +98 -0
- package/docs/parceiros/integracao_de_clientes/cadastro_incorporado/versions/version_3_public_preview.md +88 -0
- package/docs/parceiros/integracao_de_clientes/cadastro_incorporado/versions/version_4.md +92 -0
- package/docs/parceiros/integracao_de_clientes/cadastro_incorporado/versions/versions.md +463 -0
- package/docs/parceiros/integracao_de_clientes/cadastro_incorporado/website_optional.md +57 -0
- package/docs/parceiros/integracao_de_clientes/outras_opcoes_de_integracao/AGENTS.md +11 -0
- package/docs/parceiros/integracao_de_clientes/outras_opcoes_de_integracao/multi_partner_solution_embedded_creation.md +178 -0
- package/docs/parceiros/integracao_de_clientes/outras_opcoes_de_integracao/multi_partner_solutions.md +775 -0
- package/docs/parceiros/integracao_de_clientes/outras_opcoes_de_integracao/multi_solution_conversations.md +319 -0
- package/docs/parceiros/integracao_de_clientes/outras_opcoes_de_integracao/partner_initiated_waba_creation.md +74 -0
- package/docs/parceiros/seja_um_parceiro/AGENTS.md +11 -0
- package/docs/parceiros/seja_um_parceiro/get_started_for_solution_partners.md +280 -0
- package/docs/parceiros/seja_um_parceiro/get_started_for_tech_providers.md +194 -0
- package/docs/parceiros/seja_um_parceiro/measurement_partners.md +146 -0
- package/docs/parceiros/seja_um_parceiro/upgrade_to_tech_partner.md +94 -0
- package/docs/parceiros/visao_geral/AGENTS.md +8 -0
- package/docs/parceiros/visao_geral/overview.md +190 -0
- package/docs/recado/AGENTS.md +9 -0
- package/docs/recado/precos/AGENTS.md +11 -0
- package/docs/recado/precos/pricing.md +915 -0
- package/docs/recado/precos/pricing_authentication_international_rates.md +464 -0
- package/docs/recado/precos/pricing_conversation_based_pricing.md +773 -0
- package/docs/recado/precos/pricing_updates_to_pricing.md +8 -0
- package/docs/recado/sobre_a_plataforma/AGENTS.md +10 -0
- package/docs/recado/sobre_a_plataforma/about_the_platform.md +217 -0
- package/docs/recado/sobre_a_plataforma/access_tokens.md +110 -0
- package/docs/recado/sobre_a_plataforma/permissions.md +55 -0
- package/docs/referencia/AGENTS.md +92 -0
- package/docs/referencia/bot_do_whatsapp_business/AGENTS.md +8 -0
- package/docs/referencia/bot_do_whatsapp_business/bot_details_api.md +762 -0
- package/docs/referencia/business/AGENTS.md +14 -0
- package/docs/referencia/business/add_phone_numbers_api.md +726 -0
- package/docs/referencia/business/client_whatsapp_business_accounts_api.md +1006 -0
- package/docs/referencia/business/owned_whatsapp_business_accounts.md +802 -0
- package/docs/referencia/business/whatsapp_business_accounts_api.md +1550 -0
- package/docs/referencia/business/whatsapp_business_partner_onboarding_to_mm_lite_api.md +783 -0
- package/docs/referencia/business/whatsapp_business_pre_verified_phone_number_sharing_api.md +790 -0
- package/docs/referencia/business/whatsapp_business_pre_verified_phone_numbers_api.md +886 -0
- package/docs/referencia/changelog.md +10 -0
- package/docs/referencia/conta_do_whatsapp_business/AGENTS.md +24 -0
- package/docs/referencia/conta_do_whatsapp_business/assigned_users_management_api.md +2202 -0
- package/docs/referencia/conta_do_whatsapp_business/business_account_api.md +267 -0
- package/docs/referencia/conta_do_whatsapp_business/business_account_extended_credits_api.md +275 -0
- package/docs/referencia/conta_do_whatsapp_business/conversational_automation_api.md +782 -0
- package/docs/referencia/conta_do_whatsapp_business/flows_api.md +1532 -0
- package/docs/referencia/conta_do_whatsapp_business/in_progress_on_behalf_requests_api.md +8 -0
- package/docs/referencia/conta_do_whatsapp_business/migration_intent_api.md +1581 -0
- package/docs/referencia/conta_do_whatsapp_business/obo_mobility_intent_api.md +8 -0
- package/docs/referencia/conta_do_whatsapp_business/phone_number_management_api.md +1686 -0
- package/docs/referencia/conta_do_whatsapp_business/schedules_api.md +1772 -0
- package/docs/referencia/conta_do_whatsapp_business/set_obo_mobility_intent_api.md +8 -0
- package/docs/referencia/conta_do_whatsapp_business/set_solution_migration_intent_api.md +8 -0
- package/docs/referencia/conta_do_whatsapp_business/subscribed_apps_api.md +2178 -0
- package/docs/referencia/conta_do_whatsapp_business/template_api.md +976 -0
- package/docs/referencia/conta_do_whatsapp_business/whatsapp_business_account_activities_api.md +842 -0
- package/docs/referencia/conta_do_whatsapp_business/whatsapp_business_account_api.md +1384 -0
- package/docs/referencia/conta_do_whatsapp_business/whatsapp_business_account_solutions_list_api.md +854 -0
- package/docs/referencia/grupo/AGENTS.md +11 -0
- package/docs/referencia/grupo/groups_invite_link_api.md +304 -0
- package/docs/referencia/grupo/groups_join_requests_api.md +686 -0
- package/docs/referencia/grupo/groups_participants_api.md +274 -0
- package/docs/referencia/grupo/groups_query_api.md +436 -0
- package/docs/referencia/historico_de_mensagens/AGENTS.md +8 -0
- package/docs/referencia/historico_de_mensagens/whatsapp_business_message_history_events_api.md +866 -0
- package/docs/referencia/inscricao/AGENTS.md +10 -0
- package/docs/referencia/inscricao/application_connected_client_businesses.md +812 -0
- package/docs/referencia/inscricao/application_solutions_api.md +874 -0
- package/docs/referencia/inscricao/solution_creation_api.md +824 -0
- package/docs/referencia/intencao_de_migracao_da_conta_do_whatsapp_business/AGENTS.md +8 -0
- package/docs/referencia/intencao_de_migracao_da_conta_do_whatsapp_business/migration_intent_details_api.md +724 -0
- package/docs/referencia/midias/AGENTS.md +9 -0
- package/docs/referencia/midias/media_api.md +342 -0
- package/docs/referencia/midias/media_download_api.md +160 -0
- package/docs/referencia/numero_da_conta_do_whatsapp/AGENTS.md +8 -0
- package/docs/referencia/numero_da_conta_do_whatsapp/whatsapp_account_number_api.md +778 -0
- package/docs/referencia/perfil_do_whatsapp_business/AGENTS.md +8 -0
- package/docs/referencia/perfil_do_whatsapp_business/whatsapp_business_profile_node_api.md +1494 -0
- package/docs/referencia/solucao_do_whatsapp_business/AGENTS.md +14 -0
- package/docs/referencia/solucao_do_whatsapp_business/accept_deactivation_request_api.md +762 -0
- package/docs/referencia/solucao_do_whatsapp_business/access_token_api.md +704 -0
- package/docs/referencia/solucao_do_whatsapp_business/reject_deactivation_request_api.md +812 -0
- package/docs/referencia/solucao_do_whatsapp_business/send_deactivation_request_api.md +778 -0
- package/docs/referencia/solucao_do_whatsapp_business/solution_accept_api.md +812 -0
- package/docs/referencia/solucao_do_whatsapp_business/solution_details_api.md +768 -0
- package/docs/referencia/solucao_do_whatsapp_business/solution_reject_api.md +798 -0
- package/docs/referencia/telefone_do_whatsapp_business/AGENTS.md +29 -0
- package/docs/referencia/telefone_do_whatsapp_business/block_api.md +542 -0
- package/docs/referencia/telefone_do_whatsapp_business/business_compliance_information_api.md +1608 -0
- package/docs/referencia/telefone_do_whatsapp_business/business_encryption_api.md +1402 -0
- package/docs/referencia/telefone_do_whatsapp_business/calling_api.md +598 -0
- package/docs/referencia/telefone_do_whatsapp_business/encrypted_messages_api.md +482 -0
- package/docs/referencia/telefone_do_whatsapp_business/groups_management_api.md +485 -0
- package/docs/referencia/telefone_do_whatsapp_business/marketing_messages_lite_api.md +315 -0
- package/docs/referencia/telefone_do_whatsapp_business/media_upload_api.md +188 -0
- package/docs/referencia/telefone_do_whatsapp_business/message_api.md +1798 -0
- package/docs/referencia/telefone_do_whatsapp_business/phone_number_api.md +377 -0
- package/docs/referencia/telefone_do_whatsapp_business/phone_number_deregister_api.md +714 -0
- package/docs/referencia/telefone_do_whatsapp_business/phone_number_registration.md +780 -0
- package/docs/referencia/telefone_do_whatsapp_business/phone_number_verification_request_code_api.md +734 -0
- package/docs/referencia/telefone_do_whatsapp_business/register_api.md +411 -0
- package/docs/referencia/telefone_do_whatsapp_business/settings_api.md +674 -0
- package/docs/referencia/telefone_do_whatsapp_business/verify_code_api.md +746 -0
- package/docs/referencia/telefone_do_whatsapp_business/whatsapp_business_account_message_history_api.md +932 -0
- package/docs/referencia/telefone_do_whatsapp_business/whatsapp_business_account_official_business_account_status_api.md +1540 -0
- package/docs/referencia/telefone_do_whatsapp_business/whatsapp_business_account_phone_number_api.md +1600 -0
- package/docs/referencia/telefone_do_whatsapp_business/whatsapp_business_profile_api.md +1478 -0
- package/docs/referencia/telefone_do_whatsapp_business/whatsapp_business_qr_code_api.md +1179 -0
- package/docs/referencia/telefone_do_whatsapp_business/whatsapp_business_qr_code_management_api.md +1315 -0
- package/docs/referencia/telefone_pre_verificado_do_whatsapp_business/AGENTS.md +11 -0
- package/docs/referencia/telefone_pre_verificado_do_whatsapp_business/request_verification_code_api.md +778 -0
- package/docs/referencia/telefone_pre_verificado_do_whatsapp_business/verify_code_api.md +768 -0
- package/docs/referencia/telefone_pre_verificado_do_whatsapp_business/whatsapp_business_pre_verified_phone_number_api.md +1382 -0
- package/docs/referencia/telefone_pre_verificado_do_whatsapp_business/whatsapp_business_pre_verified_phone_number_partners_api.md +820 -0
- package/docs/referencia/usuario/AGENTS.md +8 -0
- package/docs/referencia/usuario/assigned_whatsapp_business_accounts_api.md +864 -0
- package/docs/referencia/webhooks/AGENTS.md +8 -0
- package/docs/referencia/webhooks/whatsapp_incoming_webhook_payload.md +1655 -0
- package/docs/suporte/AGENTS.md +13 -0
- package/docs/suporte/api_status_page.md +134 -0
- package/docs/suporte/error_codes.md +1194 -0
- package/docs/suporte/experiments.md +26 -0
- package/docs/suporte/health_status.md +225 -0
- package/docs/suporte/load_testing.md +340 -0
- package/docs/suporte/support.md +408 -0
- package/docs/visao_geral/AGENTS.md +8 -0
- package/docs/visao_geral/overview.md +2590 -0
- package/docs/webhooks/AGENTS.md +41 -0
- package/docs/webhooks/referencia/AGENTS.md +20 -0
- package/docs/webhooks/referencia/account_alerts.md +190 -0
- package/docs/webhooks/referencia/account_review_update.md +90 -0
- package/docs/webhooks/referencia/account_update.md +379 -0
- package/docs/webhooks/referencia/business_capability_update.md +121 -0
- package/docs/webhooks/referencia/history.md +302 -0
- package/docs/webhooks/referencia/message_template_components_update.md +179 -0
- package/docs/webhooks/referencia/message_template_quality_update.md +136 -0
- package/docs/webhooks/referencia/message_template_status_update.md +253 -0
- package/docs/webhooks/referencia/messages/AGENTS.md +24 -0
- package/docs/webhooks/referencia/messages/audio.md +298 -0
- package/docs/webhooks/referencia/messages/button.md +170 -0
- package/docs/webhooks/referencia/messages/contacts.md +491 -0
- package/docs/webhooks/referencia/messages/document.md +307 -0
- package/docs/webhooks/referencia/messages/errors.md +132 -0
- package/docs/webhooks/referencia/messages/image.md +304 -0
- package/docs/webhooks/referencia/messages/interactive.md +225 -0
- package/docs/webhooks/referencia/messages/location.md +296 -0
- package/docs/webhooks/referencia/messages/messages.md +44 -0
- package/docs/webhooks/referencia/messages/order.md +208 -0
- package/docs/webhooks/referencia/messages/reaction.md +178 -0
- package/docs/webhooks/referencia/messages/status.md +364 -0
- package/docs/webhooks/referencia/messages/sticker.md +298 -0
- package/docs/webhooks/referencia/messages/system.md +140 -0
- package/docs/webhooks/referencia/messages/text.md +322 -0
- package/docs/webhooks/referencia/messages/unsupported.md +165 -0
- package/docs/webhooks/referencia/messages/video.md +304 -0
- package/docs/webhooks/referencia/outros_webhooks/AGENTS.md +16 -0
- package/docs/webhooks/referencia/outros_webhooks/partner_solutions.md +114 -0
- package/docs/webhooks/referencia/outros_webhooks/payment_configuration_update.md +135 -0
- package/docs/webhooks/referencia/outros_webhooks/phone_number_name_update.md +129 -0
- package/docs/webhooks/referencia/outros_webhooks/phone_number_quality_update.md +172 -0
- package/docs/webhooks/referencia/outros_webhooks/security.md +108 -0
- package/docs/webhooks/referencia/outros_webhooks/smb_app_state_sync.md +146 -0
- package/docs/webhooks/referencia/outros_webhooks/smb_message_echoes.md +143 -0
- package/docs/webhooks/referencia/outros_webhooks/template_category_update.md +154 -0
- package/docs/webhooks/referencia/outros_webhooks/user_preferences.md +150 -0
- package/docs/webhooks/visao_geral/AGENTS.md +11 -0
- package/docs/webhooks/visao_geral/message_echoes.md +8 -0
- package/docs/webhooks/visao_geral/override.md +235 -0
- package/docs/webhooks/visao_geral/overview.md +158 -0
- package/docs/webhooks/visao_geral/set_up_whatsapp_echo_bot.md +109 -0
- package/package.json +50 -0
|
@@ -0,0 +1,1228 @@
|
|
|
1
|
+
<!-- Source: https://developers.facebook.com/documentation/business-messaging/whatsapp/payments/payments-in/pg -->
|
|
2
|
+
<!-- Scraped: 2025-12-20T17:45:44.467Z -->
|
|
3
|
+
|
|
4
|
+
# Receber pagamentos por meio de portais de pagamento no WhatsApp
|
|
5
|
+
|
|
6
|
+
Updated: 14 de nov de 2025
|
|
7
|
+
|
|
8
|
+
Sua empresa pode permitir que os clientes paguem os pedidos por meio dos nossos portais de pagamento parceiros sem sair do WhatsApp. As empresas podem enviar aos clientes mensagens order\_details e, em seguida, receber notificações sobre atualizações no status de pagamento por meio de webhooks.
|
|
9
|
+
|
|
10
|
+
## Visão geral
|
|
11
|
+
|
|
12
|
+
Atualmente, os clientes navegam nos catálogos das empresas, adicionam produtos ao carrinho e enviam pedidos usando nosso conjunto de soluções de mensagens comerciais, que inclui [mensagem de produto único, mensagem multiproduto e página de detalhes do produto](/documentation/business-messaging/whatsapp/catalogs/sell-products-and-services/share-products). Agora, com a API de Pagamentos, as empresas podem enviar aos clientes uma _fatura_, para que eles concluam o pedido pagando sem precisar sair do WhatsApp.
|
|
13
|
+
|
|
14
|
+
No momento, nossa solução de pagamentos é habilitada por BillDesk, Razorpay, PayU e Zaakpay, um provedor de serviços de pagamento de terceiros. É preciso ter uma conta do BillDesk, Razorpay, PayU ou Zaakpay para receber pagamentos no WhatsApp.
|
|
15
|
+
|
|
16
|
+
Esperamos que mais provedores de pagamento sejam adicionados no futuro.
|
|
17
|
+
|
|
18
|
+
## Como funciona
|
|
19
|
+
|
|
20
|
+
Primeiro, a empresa compõe e envia uma mensagem `order_details`. A mensagem `order_details` é um novo tipo de mensagem `interactive` que sempre contém os mesmos 4 componentes principais: **cabeçalho**, **corpo**, **rodapé** e **ação**. Dentro do componente `action`, a empresa inclui todas as informações necessárias para que o cliente conclua o pagamento.
|
|
21
|
+
|
|
22
|
+
Cada mensagem `order_details` contém um `reference_id` único fornecido pela empresa, e essa identificação única é usada em todo o fluxo para rastrear o pedido.
|
|
23
|
+
|
|
24
|
+
Depois que a mensagem é enviada, a empresa aguarda por uma atualização de status de pagamento via webhooks. As empresas recebem uma notificação quando o status do pagamento é alterado, mas não devem depender somente dessas notificações de webhooks por questões de segurança. O WhatsApp também fornece uma API de consulta de pagamentos que pode ser usada para recuperar os status de pagamento a qualquer momento.
|
|
25
|
+
|
|
26
|
+
## Fluxo de compra no app
|
|
27
|
+
|
|
28
|
+
No app de mensagens do WhatsApp, o fluxo de compra tem estas etapas:
|
|
29
|
+
|
|
30
|
+
- Os clientes enviam um pedido com produtos selecionados para a empresa por meio de mensagens de texto simples ou usando outras mensagens interativas, como [mensagem de produto único, mensagem multiproduto e detalhes do produto.](/documentation/business-messaging/whatsapp/catalogs/sell-products-and-services/share-products)
|
|
31
|
+
- Depois de receber o pedido, a empresa envia uma mensagem `order_details` ao usuário. Ao tocar em **Analisar e pagar**, o usuário vê os detalhes do pedido e o valor total a ser pago.
|
|
32
|
+
- Ao tocar no botão **Continuar**, o usuário pode optar por pagar de forma nativa no WhatsApp ou em qualquer outro app de UPI.
|
|
33
|
+
|
|
34
|
+
Finalização da compra com o WhatsApp Pay:
|
|
35
|
+
|
|
36
|
+

|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
Finalização da compra em outros apps de UPI:
|
|
41
|
+
|
|
42
|
+

|
|
43
|
+
- Depois que o pagamento for confirmado pelo portal de pagamento (PG) ou provedor de serviços de pagamento, a empresa poderá iniciar o processamento do pedido.
|
|
44
|
+
- Depois, as empresas podem enviar uma mensagem `order_status` ao consumidor com informações sobre o status do pedido. Cada mensagem resultará em um balão de mensagem (conforme mostrado abaixo), que se refere à mensagem original com detalhes do pedido e também atualiza o status exibido na página de detalhes do pedido.
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
## Vincular a conta de pagamento
|
|
48
|
+
|
|
49
|
+
Para receber pagamentos no WhatsApp, é preciso adicionar uma _configuração de pagamento_ à conta do WhatsApp Business correspondente. A configuração de pagamento permite vincular uma conta do portal de pagamento ao WhatsApp. Cada configuração de pagamento é associada a um _nome único_. Como parte da mensagem `order_details`, você pode especificar a configuração de pagamento que será usada para determinada finalização da compra. O WhatsApp gerará um fluxo de finalização da compra usando a conta do portal de pagamento associado.
|
|
50
|
+
|
|
51
|
+

|
|
52
|
+
|
|
53
|
+
Depois de vincular a conta do parceiro de pagamento, faça a integração com as APIs de Pagamentos abaixo. Isso permitirá que você envie uma mensagem `order_details` aos clientes com a configuração para receber pagamentos.
|
|
54
|
+
|
|
55
|
+
### Etapas para desvincular a configuração de pagamento
|
|
56
|
+
|
|
57
|
+
Observação: antes de realizar a desvinculação, verifique se nenhuma nova mensagem de pedido solicitando pagamento ao cliente foi enviada usando a configuração de pagamento que você pretende remover.
|
|
58
|
+
|
|
59
|
+
## Etapas de integração
|
|
60
|
+
|
|
61
|
+
As etapas descritas abaixo pressupõem que a empresa já sabe no que o usuário está interessado por meio de conversas anteriores. A API de Pagamentos é uma API independente e, portanto, pode funcionar com várias mensagens, como [mensagens de lista, botões de resposta, mensagens de produto único ou multiproduto](/documentation/business-messaging/whatsapp/reference/whatsapp-business-phone-number/message-api).
|
|
62
|
+
|
|
63
|
+
### Diagrama de sequência
|
|
64
|
+
|
|
65
|
+
O diagrama de sequência a seguir exibe o fluxo de integração típico da API de Pagamentos. As etapas destacadas em verde são as principais etapas de integração.
|
|
66
|
+
|
|
67
|
+

|
|
68
|
+
|
|
69
|
+
### Etapa 1: enviar mensagem interativa com detalhes do pedido
|
|
70
|
+
|
|
71
|
+
Para enviar uma mensagem `order_details`, as empresas precisam montar um objeto interativo do tipo `order_details` com estes componentes:
|
|
72
|
+
|
|
73
|
+
Objeto
|
|
74
|
+
|
|
75
|
+
Descrição
|
|
76
|
+
|
|
77
|
+
`type`
|
|
78
|
+
|
|
79
|
+
objeto
|
|
80
|
+
|
|
81
|
+
**Obrigatório.**
|
|
82
|
+
|
|
83
|
+
Deve ser "order\_details".
|
|
84
|
+
|
|
85
|
+
`header`
|
|
86
|
+
|
|
87
|
+
objeto
|
|
88
|
+
|
|
89
|
+
**Opcional.**
|
|
90
|
+
|
|
91
|
+
O conteúdo do cabeçalho exibido na parte superior da mensagem. Se nenhum cabeçalho for fornecido, a API usará uma imagem do primeiro produto disponível como cabeçalho
|
|
92
|
+
|
|
93
|
+
`body`
|
|
94
|
+
|
|
95
|
+
objeto
|
|
96
|
+
|
|
97
|
+
**Obrigatório.**
|
|
98
|
+
|
|
99
|
+
Um objeto com o corpo da mensagem. O objeto contém o seguinte campo:
|
|
100
|
+
|
|
101
|
+
String `text`
|
|
102
|
+
|
|
103
|
+
- **Obrigatório** se `body` estiver presente. O conteúdo da mensagem. Há compatibilidade com emojis e Markdown. O tamanho máximo é de 1.024 caracteres
|
|
104
|
+
|
|
105
|
+
`footer`
|
|
106
|
+
|
|
107
|
+
objeto
|
|
108
|
+
|
|
109
|
+
**Opcional.**
|
|
110
|
+
|
|
111
|
+
Um objeto com o rodapé da mensagem. O objeto contém os seguintes campos:
|
|
112
|
+
|
|
113
|
+
String `text`
|
|
114
|
+
|
|
115
|
+
- **Obrigatório** se `footer` estiver presente. O conteúdo do rodapé. É compatível com emojis, Markdown e links. O comprimento máximo é de 60 caracteres
|
|
116
|
+
|
|
117
|
+
`action`
|
|
118
|
+
|
|
119
|
+
objeto
|
|
120
|
+
|
|
121
|
+
**Obrigatório.**
|
|
122
|
+
|
|
123
|
+
Um objeto de ação que você deseja que o usuário execute após a leitura da mensagem. Esse objeto de ação contém os seguintes campos:
|
|
124
|
+
|
|
125
|
+
String `name`
|
|
126
|
+
|
|
127
|
+
- **Obrigatório.** Deve ser "review\_and\_pay"
|
|
128
|
+
|
|
129
|
+
Objeto `parameters`
|
|
130
|
+
|
|
131
|
+
- Para mais informações, consulte [Objeto de parâmetros](#paramobject)
|
|
132
|
+
|
|
133
|
+
#### Objeto de parâmetros
|
|
134
|
+
|
|
135
|
+
Objeto
|
|
136
|
+
|
|
137
|
+
Descrição
|
|
138
|
+
|
|
139
|
+
`reference_id`
|
|
140
|
+
|
|
141
|
+
string
|
|
142
|
+
|
|
143
|
+
**Obrigatório.**
|
|
144
|
+
|
|
145
|
+
O identificador único do pedido ou da fatura fornecido pela empresa. Essa string diferencia maiúsculas de minúsculas, não pode estar vazia e só pode conter letras, números, sublinhados, traços ou pontos, além de não ultrapassar 35 caracteres.
|
|
146
|
+
|
|
147
|
+
O reference\_id deve ser único para cada mensagem de order\_details de determinada empresa. Se houver necessidade de enviar várias mensagens de order\_details para o mesmo pedido, recomendamos incluir um número de sequência no reference\_id (por exemplo, “BM345A-12”) para garantir a exclusividade do reference\_id.
|
|
148
|
+
|
|
149
|
+
`type`
|
|
150
|
+
|
|
151
|
+
objeto
|
|
152
|
+
|
|
153
|
+
**Obrigatório.**
|
|
154
|
+
|
|
155
|
+
O tipo de produto a ser pago neste pedido. As opções compatíveis no momento são `digital-goods` e `physical-goods`.
|
|
156
|
+
|
|
157
|
+
`beneficiaries`
|
|
158
|
+
|
|
159
|
+
matriz
|
|
160
|
+
|
|
161
|
+
**Obrigatório para mercadorias físicas enviadas.**
|
|
162
|
+
|
|
163
|
+
Uma matriz de beneficiários do pedido. O beneficiário é o destinatário designado para o envio dos produtos físicos do pedido. Contém os seguintes campos:
|
|
164
|
+
|
|
165
|
+
Observação: as informações sobre o beneficiário não são exibidas aos usuários, mas são necessárias por motivos legais e de conformidade.
|
|
166
|
+
|
|
167
|
+
String `name`
|
|
168
|
+
|
|
169
|
+
- **Obrigatório.** Nome do indivíduo ou empresa que recebeu os produtos físicos. Não pode ter mais de 200 caracteres
|
|
170
|
+
|
|
171
|
+
String `address_line1`
|
|
172
|
+
|
|
173
|
+
- **Obrigatório.** Endereço de entrega (número da porta/torre, nome da rua etc.). Não pode ter mais de 100 caracteres
|
|
174
|
+
|
|
175
|
+
String `address_line2`
|
|
176
|
+
|
|
177
|
+
- **Opcional.** Endereço de entrega (ponto de referência, área, entre outros). Não pode ter mais de 100 caracteres
|
|
178
|
+
|
|
179
|
+
String `city`
|
|
180
|
+
|
|
181
|
+
- **Obrigatório.** Nome da cidade.
|
|
182
|
+
|
|
183
|
+
String `state`
|
|
184
|
+
|
|
185
|
+
- **Obrigatório.** Nome do estado.
|
|
186
|
+
|
|
187
|
+
String `country`
|
|
188
|
+
|
|
189
|
+
- **Obrigatório.** Deve ser "Índia".
|
|
190
|
+
|
|
191
|
+
String `postal_code`
|
|
192
|
+
|
|
193
|
+
- **Obrigatório.** Código postal de seis dígitos do endereço de entrega.
|
|
194
|
+
|
|
195
|
+
`currency`
|
|
196
|
+
|
|
197
|
+
**Obrigatório.**
|
|
198
|
+
|
|
199
|
+
A moeda usada para o pedido. No momento, o único valor aceito é `INR`.
|
|
200
|
+
|
|
201
|
+
`total_amount`
|
|
202
|
+
|
|
203
|
+
objeto
|
|
204
|
+
|
|
205
|
+
**Obrigatório.**
|
|
206
|
+
|
|
207
|
+
O objeto `total_amount` contém os seguintes campos:
|
|
208
|
+
|
|
209
|
+
`offset` é um número inteiro
|
|
210
|
+
|
|
211
|
+
- **Obrigatório.** Deve ser `100` para `INR`.
|
|
212
|
+
|
|
213
|
+
`value` é um número inteiro
|
|
214
|
+
|
|
215
|
+
- **Obrigatório.** Número inteiro positivo que representa o valor do montante multiplicado pelo fator de ajuste. Por exemplo, ₹12,34 tem o valor 1234.
|
|
216
|
+
|
|
217
|
+
`total_amount.value` deve ser igual a `order.subtotal.value` + `order.tax.value` + `order.shipping.value` - `order.discount.value`.
|
|
218
|
+
|
|
219
|
+
`payment_settings`
|
|
220
|
+
|
|
221
|
+
objeto
|
|
222
|
+
|
|
223
|
+
**Obrigatório.**
|
|
224
|
+
|
|
225
|
+
Consulte [Objeto de configurações de pagamento](#paymentsettingsobject) para saber mais.
|
|
226
|
+
|
|
227
|
+
`order`
|
|
228
|
+
|
|
229
|
+
objeto
|
|
230
|
+
|
|
231
|
+
**Obrigatório.**
|
|
232
|
+
|
|
233
|
+
Consulte [Objeto de pedido](#ordobject) para saber mais.
|
|
234
|
+
|
|
235
|
+
#### Objeto de configurações de pagamento
|
|
236
|
+
|
|
237
|
+
Objeto
|
|
238
|
+
|
|
239
|
+
Descrição
|
|
240
|
+
|
|
241
|
+
`type`
|
|
242
|
+
|
|
243
|
+
string
|
|
244
|
+
|
|
245
|
+
**Obrigatório.**
|
|
246
|
+
|
|
247
|
+
Deve ser definido como **“payment\_gateway”**
|
|
248
|
+
|
|
249
|
+
`payment_gateway`
|
|
250
|
+
|
|
251
|
+
objeto
|
|
252
|
+
|
|
253
|
+
**Obrigatório.**
|
|
254
|
+
|
|
255
|
+
Um objeto que descreve as informações da conta de pagamento:
|
|
256
|
+
|
|
257
|
+
String `type`
|
|
258
|
+
|
|
259
|
+
- **Obrigatório.** O identificador único de um item do pedido. Defina como **“billdesk”**, **“razorpay”**, **“payu”** ou **zaakpay** se tiver vinculado o portal de pagamento BillDesk, Razorpay, PayU ou Zaakpay para aceitar pagamentos
|
|
260
|
+
|
|
261
|
+
String `configuration_name`
|
|
262
|
+
|
|
263
|
+
- **Obrigatório.** O nome da configuração de pagamento predefinida a ser usada neste pedido, que não deve exceder 60 caracteres. Esse valor deve corresponder a uma configuração de pagamento definida no Gerenciador do WhatsApp Business conforme exibido [aqui](/docs/whatsapp/on-premises/payments-api/payments-sg#before-you-start).
|
|
264
|
+
|
|
265
|
+
Quando `configuration_name` for inválido, o cliente não poderá pagar pelo pedido. Recomendamos que as empresas realizem testes abrangentes dessa configuração durante a fase de integração.
|
|
266
|
+
|
|
267
|
+
Objeto `billdesk/razorpay/payu/zaakpay`
|
|
268
|
+
|
|
269
|
+
- **Opcional.** Os comerciantes/parceiros que querem usar additional\_info1/7 (para BillDesk), "notes" e "receipt"(para Razorpay) e "UDF" (para PayU) e "extra1/2" (para Zaakpay) agora podem transmitir esses valores na mensagem de Detalhes do pedido, e nós usaremos esses campos para criar transações/pedidos nos respectivos PGs.
|
|
270
|
+
|
|
271
|
+
Para saber mais, consulte [Objeto UDF específico do portal de pagamento](#paymentsettingsudfobject).
|
|
272
|
+
|
|
273
|
+
#### Campos de BillDesk, RazorPay, PayU e Zaakpay
|
|
274
|
+
|
|
275
|
+
Agora, oferecemos suporte para que parceiros e comerciantes enviem os campos `notes`, `receipt` e `udf` na mensagem de detalhes do pedido e recebam esses dados de volta em sinais de pagamento. Aqui, veremos como os comerciantes podem enviar "additional\_info" para o BillDesk, "notes" e "receipt" para o Razorpay, "udf" para o PayU, "extra" para PGs do Zaakpay.
|
|
276
|
+
|
|
277
|
+
Objeto
|
|
278
|
+
|
|
279
|
+
Descrição
|
|
280
|
+
|
|
281
|
+
`notes`
|
|
282
|
+
|
|
283
|
+
objeto
|
|
284
|
+
|
|
285
|
+
**Opcional.**
|
|
286
|
+
|
|
287
|
+
- Oferece suporte apenas ao portal de pagamento Razorpay
|
|
288
|
+
|
|
289
|
+
O objeto pode ser pares de chave-valor com no máximo 15 chaves e cada valor limitado a 256 caracteres.
|
|
290
|
+
|
|
291
|
+
`receipt`
|
|
292
|
+
|
|
293
|
+
String
|
|
294
|
+
|
|
295
|
+
**Opcional.**
|
|
296
|
+
|
|
297
|
+
- Oferece suporte apenas ao portal de pagamento Razorpay
|
|
298
|
+
|
|
299
|
+
O número do recibo correspondente ao pedido, definido para sua referência interna. Suporte para número máximo de 40 caracteres, com comprimento mínimo maior que 0 caractere.
|
|
300
|
+
|
|
301
|
+
`udf1-4`
|
|
302
|
+
|
|
303
|
+
String
|
|
304
|
+
|
|
305
|
+
**Opcional.**
|
|
306
|
+
|
|
307
|
+
- Oferece suporte apenas ao portal de pagamento PayU
|
|
308
|
+
|
|
309
|
+
Os campos definidos pelo usuário (UDF, pela sigla em inglês) são usados para armazenar informações relacionadas a um pedido específico. Cada campo de UDF tem um limite máximo de 255 caracteres.
|
|
310
|
+
|
|
311
|
+
`extra1-2`
|
|
312
|
+
|
|
313
|
+
String
|
|
314
|
+
|
|
315
|
+
**Opcional.**
|
|
316
|
+
|
|
317
|
+
- Oferece suporte apenas ao portal de pagamento Zaakpay
|
|
318
|
+
|
|
319
|
+
Os campos definidos pelo usuário (extra) são usados para armazenar informações relacionadas a um pedido específico. Cada campo extra tem um limite máximo de 180 caracteres.
|
|
320
|
+
|
|
321
|
+
`additional_info1-7`
|
|
322
|
+
|
|
323
|
+
String
|
|
324
|
+
|
|
325
|
+
**Opcional.**
|
|
326
|
+
|
|
327
|
+
- Oferece suporte apenas ao portal de pagamento BillDesk
|
|
328
|
+
|
|
329
|
+
Os campos definidos pelo usuário (extra) são usados para armazenar informações relacionadas a um pedido específico. Cada campo extra tem um limite máximo de 120 caracteres.
|
|
330
|
+
|
|
331
|
+
#### Objeto de pedido
|
|
332
|
+
|
|
333
|
+
Objeto
|
|
334
|
+
|
|
335
|
+
Descrição
|
|
336
|
+
|
|
337
|
+
`status`
|
|
338
|
+
|
|
339
|
+
string
|
|
340
|
+
|
|
341
|
+
**Obrigatório.**
|
|
342
|
+
|
|
343
|
+
O único valor aceito na mensagem `order_details` é `pending`.
|
|
344
|
+
|
|
345
|
+
Em uma mensagem `order_status`, `status` pode ser: `pending`, `captured` ou `failed`.
|
|
346
|
+
|
|
347
|
+
String `type`
|
|
348
|
+
|
|
349
|
+
**Opcional.**
|
|
350
|
+
|
|
351
|
+
O único valor aceito é `quick_pay`. Quando o campo é transmitido, ocultamos o botão "Verificar e pagar" e exibimos apenas o botão "Pagar agora" no balão de detalhes do pedido.
|
|
352
|
+
|
|
353
|
+
`items`
|
|
354
|
+
|
|
355
|
+
objeto
|
|
356
|
+
|
|
357
|
+
**Obrigatório.**
|
|
358
|
+
|
|
359
|
+
Um objeto com a lista de itens do pedido, contendo os seguintes campos:
|
|
360
|
+
|
|
361
|
+
String `retailer_id`
|
|
362
|
+
|
|
363
|
+
- **Opcional.** A identificação de conteúdo de um item do pedido do seu catálogo.
|
|
364
|
+
|
|
365
|
+
String `name`
|
|
366
|
+
|
|
367
|
+
- **Obrigatório.** O nome do item que será exibido ao usuário. Não pode ter mais de 60 caracteres
|
|
368
|
+
|
|
369
|
+
Objeto `image`
|
|
370
|
+
|
|
371
|
+
- **Opcional.** Imagem personalizada do item que será exibida ao usuário. Consulte [Objeto de imagem de item](#item_image_object) para saber mais
|
|
372
|
+
|
|
373
|
+
O uso desse campo de imagem limitará a matriz de itens a um máximo de 10 itens e não poderá ser usado com `retailer_id` ou `catalog_id`.
|
|
374
|
+
|
|
375
|
+
Objeto `amount` com valor e fator de ajuste — consulte o campo de valor total acima
|
|
376
|
+
|
|
377
|
+
- **Obrigatório.** O preço por item
|
|
378
|
+
|
|
379
|
+
Objeto de quantia `sale_amount`
|
|
380
|
+
|
|
381
|
+
- **Opcional.** O preço com desconto de cada item. Esse valor deve ser menor que o original. Se for incluído, esse campo será usado para calcular o valor subtotal.
|
|
382
|
+
|
|
383
|
+
`quantity` é um número inteiro
|
|
384
|
+
|
|
385
|
+
- **Obrigatório.** O número de itens no pedido; este campo não pode conter valores decimais e deve ser um número inteiro.
|
|
386
|
+
|
|
387
|
+
String `country_of_origin`
|
|
388
|
+
|
|
389
|
+
- **Obrigatório** se `catalog_id` não estiver presente. O país de origem do produto
|
|
390
|
+
|
|
391
|
+
String `importer_name`
|
|
392
|
+
|
|
393
|
+
- **Obrigatório** se `catalog_id` não estiver presente. Nome da empresa importadora
|
|
394
|
+
|
|
395
|
+
String `importer_adress`
|
|
396
|
+
|
|
397
|
+
- **Obrigatório** se `catalog_id` não estiver presente. Endereço da empresa importadora
|
|
398
|
+
|
|
399
|
+
`subtotal`
|
|
400
|
+
|
|
401
|
+
objeto
|
|
402
|
+
|
|
403
|
+
**Obrigatório.**
|
|
404
|
+
|
|
405
|
+
O valor **deve ser igual** à soma de `order.amount.value` \* `order.amount.quantity`. Consulte a descrição de `total_amount` para ver explicações sobre os campos `offset` e `value`
|
|
406
|
+
|
|
407
|
+
Os seguintes campos fazem parte do objeto `subtotal`:
|
|
408
|
+
|
|
409
|
+
`offset` é um número inteiro
|
|
410
|
+
|
|
411
|
+
- **Obrigatório.** Deve ser `100` para `INR`
|
|
412
|
+
|
|
413
|
+
`value` é um número inteiro
|
|
414
|
+
|
|
415
|
+
- **Obrigatório.** Número inteiro positivo que representa o valor do montante multiplicado pelo fator de ajuste. Por exemplo, ₹12,34 tem o valor 1234
|
|
416
|
+
|
|
417
|
+
`tax`
|
|
418
|
+
|
|
419
|
+
objeto
|
|
420
|
+
|
|
421
|
+
**Obrigatório.**
|
|
422
|
+
|
|
423
|
+
As informações fiscais do pedido que contêm os seguintes campos:
|
|
424
|
+
|
|
425
|
+
`offset` é um número inteiro
|
|
426
|
+
|
|
427
|
+
- **Obrigatório.** Deve ser `100` para `INR`
|
|
428
|
+
|
|
429
|
+
`value` é um número inteiro
|
|
430
|
+
|
|
431
|
+
- **Obrigatório.** Número inteiro positivo que representa o valor do montante multiplicado pelo fator de ajuste. Por exemplo, ₹12,34 tem o valor 1234
|
|
432
|
+
|
|
433
|
+
String `description`
|
|
434
|
+
|
|
435
|
+
- **Opcional.** O limite máximo é de 60 caracteres
|
|
436
|
+
|
|
437
|
+
`shipping`
|
|
438
|
+
|
|
439
|
+
objeto
|
|
440
|
+
|
|
441
|
+
**Opcional.**
|
|
442
|
+
|
|
443
|
+
O custo de envio do pedido. O objeto contém os seguintes campos:
|
|
444
|
+
|
|
445
|
+
`offset` é um número inteiro
|
|
446
|
+
|
|
447
|
+
- **Obrigatório.** Deve ser `100` para `INR`
|
|
448
|
+
|
|
449
|
+
`value` é um número inteiro
|
|
450
|
+
|
|
451
|
+
- **Obrigatório.** Número inteiro positivo que representa o valor do montante multiplicado pelo fator de ajuste. Por exemplo, ₹12,34 tem o valor 1234
|
|
452
|
+
|
|
453
|
+
String `description`
|
|
454
|
+
|
|
455
|
+
- **Opcional.** O limite máximo é de 60 caracteres
|
|
456
|
+
|
|
457
|
+
`discount`
|
|
458
|
+
|
|
459
|
+
objeto
|
|
460
|
+
|
|
461
|
+
**Opcional.**
|
|
462
|
+
|
|
463
|
+
O desconto do pedido. O objeto contém os seguintes campos:
|
|
464
|
+
|
|
465
|
+
`offset` é um número inteiro
|
|
466
|
+
|
|
467
|
+
- **Obrigatório.** Deve ser `100` para `INR`
|
|
468
|
+
|
|
469
|
+
`value` é um número inteiro
|
|
470
|
+
|
|
471
|
+
- **Obrigatório.** Número inteiro positivo que representa o valor do montante multiplicado pelo fator de ajuste. Por exemplo, ₹12,34 tem o valor 1234
|
|
472
|
+
|
|
473
|
+
String `description`
|
|
474
|
+
|
|
475
|
+
- **Opcional.** O limite máximo é de 60 caracteres
|
|
476
|
+
|
|
477
|
+
String `discount_program_name`
|
|
478
|
+
|
|
479
|
+
- **Opcional.** Texto usado para definir pedidos om incentivos. Se o pedido incluir incentivos, o comerciante precisará definir essa informação. O limite máximo é de 60 caracteres
|
|
480
|
+
|
|
481
|
+
`catalog_id`
|
|
482
|
+
|
|
483
|
+
objeto
|
|
484
|
+
|
|
485
|
+
**Opcional.**
|
|
486
|
+
|
|
487
|
+
O identificador único do catálogo do Facebook usado pela empresa.
|
|
488
|
+
|
|
489
|
+
Se o campo não for fornecido, será necessário fornecer os seguintes campos dentro do objeto "items": `country_of_origin`, `importer_name` e `importer_address`
|
|
490
|
+
|
|
491
|
+
`expiration`
|
|
492
|
+
|
|
493
|
+
objeto
|
|
494
|
+
|
|
495
|
+
**Opcional.**
|
|
496
|
+
|
|
497
|
+
Validade do pedido. A empresa deve definir os seguintes campos no objeto:
|
|
498
|
+
|
|
499
|
+
String `timestamp` – registro de data e hora UTC em segundos do momento em que o pedido deve expirar. O limite mínimo é de 300 segundos
|
|
500
|
+
|
|
501
|
+
String `description` – texto que explica a validade. O limite máximo é de 120 caracteres.
|
|
502
|
+
|
|
503
|
+
#### Objeto de imagem de item
|
|
504
|
+
|
|
505
|
+
Objeto
|
|
506
|
+
|
|
507
|
+
Descrição
|
|
508
|
+
|
|
509
|
+
String `link`
|
|
510
|
+
|
|
511
|
+
**Obrigatório.** Um link para a imagem que será exibida ao usuário. Deve ser `image/jpeg` ou `image/png` e 8 bits, RGB ou RGBA. Segue os mesmos requisitos de imagem em [mídia](/documentation/business-messaging/whatsapp/business-phone-numbers/media#supported-media-types)
|
|
512
|
+
|
|
513
|
+
O valor `parameters` é um objeto JSON convertido em string.
|
|
514
|
+
|
|
515
|
+
No final do processo, o objeto interativo terá aparência semelhante a esta em uma integração baseada em catálogo no BillDesk:
|
|
516
|
+
|
|
517
|
+
```
|
|
518
|
+
{ "interactive": { "type": "order_details", "header": { "type": "image", "image": { "link": "http(s)://the-url", "provider": { "name": "provider-name" } } }, "body": { "text": "your-text-body-content" }, "footer": { "text": "your-text-footer-content" }, "action": { "name": "review_and_pay", "parameters": { "reference_id": "reference-id-value", "type": "digital-goods", "payment_settings": [ { "type": "payment_gateway", "payment_gateway": { "type": "billdesk", "configuration_name": "payment-config-id", "billdesk": { "additional_info1": "additional_info1-value", "additional_info2": "additional_info2-value", "additional_info3": "additional_info3-value", "additional_info4": "additional_info4-value", "additional_info5": "additional_info5-value", "additional_info6": "additional_info6-value", "additional_info7": "additional_info7-value", } } } ], "currency": "INR", "total_amount": { "value": 21000, "offset": 100 }, "order": { "status": "pending", "catalog_id": "the-catalog_id", "expiration": { "timestamp": "utc_timestamp_in_seconds", "description": "cancellation-explanation" }, "items": [ { "retailer_id": "1234567", "name": "Product name, for example bread", "amount": { "value": 10000, "offset": 100 }, "quantity": 1, "sale_amount": { "value": 100, "offset": 100 } } ], "subtotal": { "value": 20000, "offset": 100 }, "tax": { "value": 1000, "offset": 100, "description": "optional_text" }, "shipping": { "value": 1000, "offset": 100, "description": "optional_text" }, "discount": { "value": 1000, "offset": 100, "description": "optional_text", "discount_program_name": "optional_text" } } } } }}
|
|
519
|
+
```
|
|
520
|
+
|
|
521
|
+
O valor `parameters` é um objeto JSON convertido em string.
|
|
522
|
+
|
|
523
|
+
No final do processo, o objeto interativo terá aparência semelhante a esta em uma integração baseada em catálogo no RazorPay:
|
|
524
|
+
|
|
525
|
+
```
|
|
526
|
+
{ "interactive": { "type": "order_details", "header": { "type": "image", "image": { "link": "http(s)://the-url", "provider": { "name": "provider-name" } } }, "body": { "text": "your-text-body-content" }, "footer": { "text": "your-text-footer-content" }, "action": { "name": "review_and_pay", "parameters": { "reference_id": "reference-id-value", "type": "digital-goods", "payment_settings": [ { "type": "payment_gateway", "payment_gateway": { "type": "razorpay", "configuration_name": "payment-config-id", "razorpay": { "receipt": "receipt-value", "notes": { "key1": "value1" } } } } ], "currency": "INR", "total_amount": { "value": 21000, "offset": 100 }, "order": { "status": "pending", "catalog_id": "the-catalog_id", "expiration": { "timestamp": "utc_timestamp_in_seconds", "description": "cancellation-explanation" }, "items": [ { "retailer_id": "1234567", "name": "Product name, for example bread", "amount": { "value": 10000, "offset": 100 }, "quantity": 1, "sale_amount": { "value": 100, "offset": 100 } } ], "subtotal": { "value": 20000, "offset": 100 }, "tax": { "value": 1000, "offset": 100, "description": "optional_text" }, "shipping": { "value": 1000, "offset": 100, "description": "optional_text" }, "discount": { "value": 1000, "offset": 100, "description": "optional_text", "discount_program_name": "optional_text" } } } } }}
|
|
527
|
+
```
|
|
528
|
+
|
|
529
|
+
O valor `parameters` é um objeto JSON convertido em string.
|
|
530
|
+
|
|
531
|
+
Para uma integração não baseada em catálogo do PayU, ou seja, quando "catálogo-id" não está presente, um exemplo de carga é o seguinte:
|
|
532
|
+
|
|
533
|
+
```
|
|
534
|
+
{ "interactive": { "type": "order_details", "header": { "type": "image", "image": { "link": "your-media-url-link" } }, "body": { "text": "your-text-body-content" }, "footer": { "text": "your-text-footer-content" }, "action": { "name": "review_and_pay", "parameters": { "reference_id": "reference-id-value", "type": "digital-goods", "payment_settings": [ { "type": "payment_gateway", "payment_gateway": { "type": "payu", "configuration_name": "payment-config-id", "payu": { "udf1": "value1", "udf2": "value2", "udf3": "value3", "udf4": "value4" } } } ], "currency": "INR", "total_amount": { "value": 21000, "offset": 100 }, "order": { "status": "pending", "expiration": { "timestamp": "utc_timestamp_in_seconds", "description": "cancellation-explanation" }, "items": [ { "name": "Product name, for example bread", "amount": { "value": 10000, "offset": 100 }, "quantity": 1, "sale_amount": { "value": 100, "offset": 100 }, "country_of_origin": "country-of-origin", "importer_name": "name-of-importer-business", "importer_address": { "address_line1": "B8/733 nand nagri", "address_line2": "police station", "city": "East Delhi", "zone_code": "DL", "postal_code": "110093", "country_code": "IN" } }, { "name": "Product name, for example bread", "amount": { "value": 10000, "offset": 100 }, "quantity": 1, "sale_amount": { "value": 100, "offset": 100 }, "country_of_origin": "country-of-origin", "importer_name": "name-of-importer-business", "importer_address": { "address_line1": "B8/733 nand nagri", "address_line2": "police station", "city": "East Delhi", "zone_code": "DL", "postal_code": "110093", "country_code": "IN" } } ], "subtotal": { "value": 20000, "offset": 100 }, "tax": { "value": 1000, "offset": 100, "description": "optional_text" }, "shipping": { "value": 1000, "offset": 100, "description": "optional_text" }, "discount": { "value": 1000, "offset": 100, "description": "optional_text", "discount_program_name": "optional_text" } } } } }}
|
|
535
|
+
```
|
|
536
|
+
|
|
537
|
+
Para uma integração não baseada em catálogo do Zaakpay, ou seja, quando "catálogo-id" não está presente, um exemplo de carga é o seguinte:
|
|
538
|
+
|
|
539
|
+
```
|
|
540
|
+
{ "interactive": { "type": "order_details", "header": { "type": "image", "image": { "link": "your-media-url-link" } }, "body": { "text": "your-text-body-content" }, "footer": { "text": "your-text-footer-content" }, "action": { "name": "review_and_pay", "parameters": { "reference_id": "reference-id-value", "type": "digital-goods", "payment_settings": [ { "type": "payment_gateway", "payment_gateway": { "type": "zaakpay", "configuration_name": "payment-config-id", "zaakpay": { "extra1": "value1", "extra2": "value2" } } } ], "currency": "INR", "total_amount": { "value": 21000, "offset": 100 }, "order": { "status": "pending", "expiration": { "timestamp": "utc_timestamp_in_seconds", "description": "cancellation-explanation" }, "items": [ { "name": "Product name, for example bread", "amount": { "value": 10000, "offset": 100 }, "quantity": 1, "sale_amount": { "value": 100, "offset": 100 }, "country_of_origin": "country-of-origin", "importer_name": "name-of-importer-business", "importer_address": { "address_line1": "B8/733 nand nagri", "address_line2": "police station", "city": "East Delhi", "zone_code": "DL", "postal_code": "110093", "country_code": "IN" } }, { "name": "Product name, for example bread", "amount": { "value": 10000, "offset": 100 }, "quantity": 1, "sale_amount": { "value": 100, "offset": 100 }, "country_of_origin": "country-of-origin", "importer_name": "name-of-importer-business", "importer_address": { "address_line1": "B8/733 nand nagri", "address_line2": "police station", "city": "East Delhi", "zone_code": "DL", "postal_code": "110093", "country_code": "IN" } } ], "subtotal": { "value": 20000, "offset": 100 }, "tax": { "value": 1000, "offset": 100, "description": "optional_text" }, "shipping": { "value": 1000, "offset": 100, "description": "optional_text" }, "discount": { "value": 1000, "offset": 100, "description": "optional_text", "discount_program_name": "optional_text" } } } } }}
|
|
541
|
+
```
|
|
542
|
+
|
|
543
|
+
### Etapa 2: adicionar parâmetros de mensagem comuns
|
|
544
|
+
|
|
545
|
+
Assim que o objeto interativo estiver pronto, anexe os outros parâmetros que compõem uma mensagem: `recipient_type`, `to` e `type`. Lembre-se de definir `type` como `interactive`.
|
|
546
|
+
|
|
547
|
+
```
|
|
548
|
+
{ "messaging_product": "whatsapp", "recipient_type": "individual", "to": "PHONE_NUMBER", "type": "interactive", "interactive": { // interactive object here } }
|
|
549
|
+
```
|
|
550
|
+
|
|
551
|
+
Estes são os [parâmetros comuns a todos os tipos de mensagem](/documentation/business-messaging/whatsapp/messages/send-messages#requests).
|
|
552
|
+
|
|
553
|
+
### Etapa 3: fazer uma chamada POST ao ponto de extremidade de mensagens
|
|
554
|
+
|
|
555
|
+
Faça uma chamada POST para o ponto de extremidade [`/[PHONE_NUMBER_ID]/messages`](/documentation/business-messaging/whatsapp/reference/whatsapp-business-phone-number/message-api) com o objeto `JSON` criado. Caso a mensagem seja enviada com sucesso, você receberá a seguinte resposta:
|
|
556
|
+
|
|
557
|
+
```
|
|
558
|
+
{ "messaging_product": "whatsapp", "contacts": [ { "input": "[PHONE_NUMBER_ID]", "wa_id": "[PHONE_NUMBER_ID]" } ], "messages": [ { "id": "wamid.HBgLMTY1MDUwNzY1MjAVAgARGBI5QTNDQTVCM0Q0Q0Q2RTY3RTcA" } ]}
|
|
559
|
+
```
|
|
560
|
+
|
|
561
|
+
Para ver todos os outros erros que podem ser retornados e as orientações sobre como tratá-los, consulte [API de Nuvem do WhatsApp, Códigos de erro](/documentation/business-messaging/whatsapp/support/error-codes).
|
|
562
|
+
|
|
563
|
+
#### Experiência de produto
|
|
564
|
+
|
|
565
|
+
O cliente recebe uma mensagem `order_details` semelhante à exibida abaixo (esquerda). Ao clicar em "Analisar e pagar", a tela com os detalhes do pedido será aberta, conforme exibido abaixo (no meio). O cliente pode pagar o pedido usando o botão "Continuar", que abre uma folha inferior com as opções de pagamento (à direita).
|
|
566
|
+
|
|
567
|
+

|
|
568
|
+
|
|
569
|
+

|
|
570
|
+
|
|
571
|
+

|
|
572
|
+
|
|
573
|
+
### Etapa 4: receber um webhook sobre o status da transação
|
|
574
|
+
|
|
575
|
+
As empresas recebem atualizações por meio de [webhooks do WhatsApp](/docs/whatsapp/on-premises/guides/webhooks) quando o status da transação iniciada pelo usuário é alterado para um status do tipo "pagamento". Contém os seguintes campos:
|
|
576
|
+
|
|
577
|
+
Objeto
|
|
578
|
+
|
|
579
|
+
Descrição
|
|
580
|
+
|
|
581
|
+
`id`
|
|
582
|
+
|
|
583
|
+
string
|
|
584
|
+
|
|
585
|
+
**Obrigatório.**
|
|
586
|
+
|
|
587
|
+
Identificação do webhook para a notificação.
|
|
588
|
+
|
|
589
|
+
`recipient_id`
|
|
590
|
+
|
|
591
|
+
string
|
|
592
|
+
|
|
593
|
+
**Obrigatório.**
|
|
594
|
+
|
|
595
|
+
Identificação do WhatsApp do cliente.
|
|
596
|
+
|
|
597
|
+
`type`
|
|
598
|
+
|
|
599
|
+
string
|
|
600
|
+
|
|
601
|
+
**Obrigatório.**
|
|
602
|
+
|
|
603
|
+
Para webhooks de atualização de status de pagamento, o tipo é "payment".
|
|
604
|
+
|
|
605
|
+
`status`
|
|
606
|
+
|
|
607
|
+
string
|
|
608
|
+
|
|
609
|
+
**Obrigatório.**
|
|
610
|
+
|
|
611
|
+
`captured`/`pending`: `captured` – quando o pagamento é concluído com sucesso; `pending` quando o usuário tenta realizar a ação, mas ainda não recebeu o sinal de transações bem-sucedidas.
|
|
612
|
+
|
|
613
|
+
`payment`
|
|
614
|
+
|
|
615
|
+
objeto
|
|
616
|
+
|
|
617
|
+
**Obrigatório.**
|
|
618
|
+
|
|
619
|
+
Contém o seguinte campo:
|
|
620
|
+
String `reference_id`
|
|
621
|
+
|
|
622
|
+
- Identificação de referência única para o pedido enviado na mensagem `order_details`.
|
|
623
|
+
Objeto `amount`
|
|
624
|
+
- Tem campos de valor e deslocamento que correspondem ao valor total pago pelo usuário.
|
|
625
|
+
String `currency`
|
|
626
|
+
- a moeda é sempre INR.
|
|
627
|
+
Objeto `transaction` de tentativa de transação para o pagamento. O objeto de transação contém os seguintes campos:
|
|
628
|
+
- String `id`**Obrigatório.** A identificação do pedido no portal de pagamento alfanumérica.
|
|
629
|
+
- String `pg_transaction_id`**Opcional.** A identificação do pagamento no portal de pagamento alfanumérica.
|
|
630
|
+
- String `type`**Obrigatório.** O tipo de pagamento dessas transações. Apenas `billdesk`, `razorpay`, `payu` ou `zaakpay` têm suporte.
|
|
631
|
+
- String `status`**Obrigatório.** O status da transação. Pode ser `pending`, `success` ou `failed`.
|
|
632
|
+
- Número inteiro `created_timestamp`**Obrigatório.** O horário em que a transação foi criada, medido em segundos epoch.
|
|
633
|
+
- Número inteiro `updated_timestamp`**Obrigatório.** O horário da última atualização da transação em segundos epcoh.
|
|
634
|
+
- Objeto `method` (**Opcional.** As informações da forma de pagamento podem não estar disponíveis para pagamentos com falha)- String `type`**Obrigatório.** Descreve a forma de pagamento usada pelo consumidor para pagar o pedido. Pode ser `upi`, `card`, `wallet` ou `netbanking`.
|
|
635
|
+
- Objeto `error` ( **Opcional.** Os detalhes de erro de pagamento podem não estar disponíveis para todas as tentativas de pagamento.)- String `code`**Obrigatório.** Descreve o motivo da falha no pagamento que é gerado pelo portal de pagamento e a Meta retorna para os parceiros.- String `reason`**Obrigatório.** Descreve o motivo da falha no pagamento em texto sem formatação, que é gerado pelo portal de pagamento e a Meta retorna para os parceiros.
|
|
636
|
+
String `additional_info1-7`**Opcional.**
|
|
637
|
+
- Enviado apenas para o portal de pagamento Billdesk quando o valor é enviado na mensagem de detalhes do pedido. Cada uma das chaves additional\_info1-4 tem valores de string.
|
|
638
|
+
Objeto `notes` **Opcional.**
|
|
639
|
+
- Enviado apenas para o portal de pagamento Razorpay quando o valor é enviado na mensagem de detalhes do pedido. Contém o par de chave-valor transmitido na mensagem de detalhes do pedido.
|
|
640
|
+
String `receipt`**Opcional.**
|
|
641
|
+
- Enviado apenas para o portal de pagamento Razorpay quando o valor é enviado na mensagem de detalhes do pedido.
|
|
642
|
+
String `udf1-4`**Opcional.**
|
|
643
|
+
- Enviado apenas para o portal de pagamento Payu quando o valor é enviado na mensagem de detalhes do pedido. Cada uma das chaves udf1-4 tem valores de string.
|
|
644
|
+
|
|
645
|
+
|
|
646
|
+
String `extra1-2`**Opcional.**
|
|
647
|
+
|
|
648
|
+
- Enviado apenas para o portal de pagamento Zaakpay quando o valor é enviado na mensagem de detalhes do pedido. Cada uma das chaves extra1-2 tem valores de string.
|
|
649
|
+
Matriz `refunds`**Opcional.**
|
|
650
|
+
|
|
651
|
+
Lista de reembolsos para o pedido. Cada objeto de reembolso contém os seguintes campos:
|
|
652
|
+
|
|
653
|
+
- String `id`**Obrigatório.** A identificação alfanumérica do reembolso.- Objeto `amount`**Obrigatório.** O valor total do reembolso.- String `speed_processed`**Obrigatório.** Velocidade com que o reembolso foi processado. Pode ser `instant` ou `normal`.- String `status`**Obrigatório.** O status do reembolso. Pode ser `pending`, `success` ou `failed`.- Número inteiro `created_timestamp`**Obrigatório.** O horário em que o reembolso foi criado, medido em segundos epoch.- Número inteiro `updated_timestamp`**Obrigatório.** O horário da última atualização do reembolso em segundos epoch.
|
|
654
|
+
|
|
655
|
+
`timestamp`
|
|
656
|
+
|
|
657
|
+
string
|
|
658
|
+
|
|
659
|
+
**Obrigatório.**
|
|
660
|
+
|
|
661
|
+
Registro de data e hora do webhook.
|
|
662
|
+
|
|
663
|
+
Veja um exemplo de webhook de status do tipo `payment`:
|
|
664
|
+
|
|
665
|
+
```
|
|
666
|
+
{ "object": "whatsapp_business_account", "entry": [{ "id": "WHATSAPP-BUSINESS-ACCOUNT-ID", "changes": [{ "value": { "messaging_product": "whatsapp", "metadata": { "display_phone_number": "[PHONE_NUMBER]", "phone_number_id": "[PHONE_NUMBER_ID]" }, "contacts": [{...}], "errors": [{...}], "messages": [{...}], "statuses": [{ "id": "gBGGFlB5YjhvAgnhuF1qIUvCo7A", "recipient_id": "[PHONE_NUMBER]", "type": "payment", "status": "[TRANSACTION_STATUS]", "payment": { "reference_id": "[REFERENCE_ID]", "amount": { "value": 21000, "offset": 100 }, "transaction": { "id": "[PG-ORDER-ID]", "pg_transaction_id": "[PG-PAYMENT-ID]", "type": "billdesk/razorpay/payu/zaakpay", "status": "success/failed", "created_timestamp": "CREATED_TIMESTAMP", "updated_timestamp": "UPDATED_TIMESTAMP", "method": { "type": "upi/card/netbanking/wallet" }, "error": { "code": "pg-generated-error-code", "reason": "pg-generated-descriptive-reason" } }, "currency": "INR", "receipt": "receipt-value", "notes": { "key1": "value1", "key2": "value2" }, "udf1": "udf1-value", "udf2": "udf2-value", "udf3": "udf3-value", "udf4": "udf4-value", "additional_info1": "additional_info1-value", "additional_info2": "additional_info2-value", "additional_info3": "additional_info3-value", "additional_info4": "additional_info4-value", "additional_info5": "additional_info5-value", "additional_info6": "additional_info6-value", "additional_info7": "additional_info7-value", "refunds": [{ "id": "[REFUND-ID]", "amount": { "value": 100, "offset": 100 }, "speed_processed": "instant/normal", "status": "success", "created_timestamp": "CREATED_TIMESTAMP", "updated_timestamp": "UPDATED_TIMESTAMP", }], }, "timestamp": "notification_timestamp" }] }, "field": "messages" }] }]}
|
|
667
|
+
```
|
|
668
|
+
|
|
669
|
+
Para saber mais sobre outros status, consulte [Componentes, objeto de status](/docs/whatsapp/on-premises/webhooks/components#statuses-object).
|
|
670
|
+
|
|
671
|
+
### Etapa 5: confirmar o pagamento
|
|
672
|
+
|
|
673
|
+
Depois de receber o webhook de status do pagamento, ou a qualquer momento, a empresa pode consultar o status do pagamento referente ao pedido. Para tal, as empresas devem fazer uma chamada GET para o ponto de extremidade de pagamentos, conforme mostrado aqui:
|
|
674
|
+
|
|
675
|
+
```
|
|
676
|
+
GET <PHONE_NUMBER_ID>/payments/<PAYMENT_CONFIGURATION>/<REFERENCE_ID>
|
|
677
|
+
```
|
|
678
|
+
|
|
679
|
+
onde `payment_configuration` e `reference_id` são iguais ao que foi enviado na mensagem `order_details`.
|
|
680
|
+
|
|
681
|
+
As empresas devem esperar uma resposta na mesma sessão HTTP (não em uma notificação de webhook) que contenha os seguintes campos:
|
|
682
|
+
|
|
683
|
+
Campo
|
|
684
|
+
|
|
685
|
+
Descrição
|
|
686
|
+
|
|
687
|
+
`reference_id`
|
|
688
|
+
|
|
689
|
+
string
|
|
690
|
+
|
|
691
|
+
**Obrigatório.**
|
|
692
|
+
|
|
693
|
+
A identificação enviada pela empresa na mensagem `order_details`
|
|
694
|
+
|
|
695
|
+
`status`
|
|
696
|
+
|
|
697
|
+
string
|
|
698
|
+
|
|
699
|
+
**Obrigatório.**
|
|
700
|
+
|
|
701
|
+
O status do pagamento do pedido. Pode ser `pending` ou `captured`
|
|
702
|
+
|
|
703
|
+
Consulte a tabela abaixo para saber o que esses status significam.
|
|
704
|
+
|
|
705
|
+
`currency`
|
|
706
|
+
|
|
707
|
+
string
|
|
708
|
+
|
|
709
|
+
**Obrigatório.**
|
|
710
|
+
|
|
711
|
+
A moeda usada para o pagamento. No momento, o único valor aceito é `INR`.
|
|
712
|
+
|
|
713
|
+
`total_amount`
|
|
714
|
+
|
|
715
|
+
objeto
|
|
716
|
+
|
|
717
|
+
**Obrigatório.**
|
|
718
|
+
|
|
719
|
+
O valor total desse pagamento. Contém os seguintes campos:
|
|
720
|
+
|
|
721
|
+
`offset` é um número inteiro
|
|
722
|
+
|
|
723
|
+
- **Obrigatório.** Deve ser 100.
|
|
724
|
+
|
|
725
|
+
`value` é um número inteiro
|
|
726
|
+
|
|
727
|
+
- **Obrigatório.** Número inteiro positivo que representa o valor do montante multiplicado pelo fator de ajuste. Por exemplo, ₹12,34 tem o valor 1234.
|
|
728
|
+
|
|
729
|
+
`transactions`
|
|
730
|
+
|
|
731
|
+
matriz
|
|
732
|
+
|
|
733
|
+
**Obrigatório.**
|
|
734
|
+
|
|
735
|
+
A lista de transações para esse pagamento. Cada objeto contém os seguintes campos:
|
|
736
|
+
|
|
737
|
+
String `id`
|
|
738
|
+
|
|
739
|
+
- **Obrigatório.** A identificação do pedido no portal de pagamento alfanumérica.
|
|
740
|
+
|
|
741
|
+
String `pg_transaction_id`
|
|
742
|
+
|
|
743
|
+
- **Obrigatório.** A identificação do pagamento no portal de pagamento alfanumérica.
|
|
744
|
+
|
|
745
|
+
String `type`
|
|
746
|
+
|
|
747
|
+
- **Obrigatório.** O tipo de pagamento dessas transações. Apenas `billdesk`, `razorpay`, `payu` ou `zaakpay` têm suporte.
|
|
748
|
+
|
|
749
|
+
String `status`
|
|
750
|
+
|
|
751
|
+
- **Obrigatório.** O status da transação. Pode ser `pending`, `success` ou `failed`.
|
|
752
|
+
|
|
753
|
+
No máximo uma transação pode ter o status `success`.
|
|
754
|
+
|
|
755
|
+
Número inteiro `created_timestamp`
|
|
756
|
+
|
|
757
|
+
- **Obrigatório.** O horário em que a transação foi criada, medido em segundos epoch.
|
|
758
|
+
|
|
759
|
+
Número inteiro `updated_timestamp`
|
|
760
|
+
|
|
761
|
+
- **Obrigatório.** O horário da última atualização da transação em segundos epcoh.
|
|
762
|
+
|
|
763
|
+
Objeto `method`
|
|
764
|
+
|
|
765
|
+
**Opcional.** As informações da forma de pagamento podem não estar disponíveis para pagamentos com falha
|
|
766
|
+
|
|
767
|
+
- String `type`**Obrigatório.** Descreve a forma de pagamento usada pelo consumidor para pagar o pedido. Pode ser `upi`, `card`, `wallet` ou `netbanking`.
|
|
768
|
+
|
|
769
|
+
Objeto `error`
|
|
770
|
+
|
|
771
|
+
**Opcional.** Os detalhes de erro de pagamento podem não estar disponíveis para todas as tentativas de pagamento
|
|
772
|
+
|
|
773
|
+
- String `code`**Obrigatório.** Descreve o motivo da falha no pagamento que é gerado pelo portal de pagamento e a Meta retorna para os parceiros.- String `reason`**Obrigatório.** Descreve o motivo da falha no pagamento em texto sem formatação, que é gerado pelo portal de pagamento e a Meta retorna para os parceiros.
|
|
774
|
+
|
|
775
|
+
Matriz `refunds`
|
|
776
|
+
|
|
777
|
+
**Opcional.** Lista de reembolsos para o pedido. Cada objeto de reembolso contém os seguintes campos:
|
|
778
|
+
|
|
779
|
+
- String `id`**Obrigatório.** A identificação alfanumérica do reembolso.- Objeto `amount`**Obrigatório.** O valor total do reembolso.- String `speed_processed`**Obrigatório.** Velocidade com que o reembolso foi processado. Pode ser `instant` ou `normal`.- String `status`**Obrigatório.** O status do reembolso. Pode ser `pending`, `success` ou `failed`.- Número inteiro `created_timestamp`**Obrigatório.** O horário em que o reembolso foi criado, medido em segundos epoch.- Número inteiro `updated_timestamp`**Obrigatório.** O horário da última atualização do reembolso em segundos epoch.
|
|
780
|
+
|
|
781
|
+
`additional_info1-7`
|
|
782
|
+
|
|
783
|
+
string
|
|
784
|
+
|
|
785
|
+
**Opcional.**
|
|
786
|
+
|
|
787
|
+
Oferece suporte apenas ao PG do BillDesk, contém valores de string enviados como parte da mensagem de detalhes do pedido.
|
|
788
|
+
|
|
789
|
+
`receipt`
|
|
790
|
+
|
|
791
|
+
string
|
|
792
|
+
|
|
793
|
+
**Opcional.**
|
|
794
|
+
|
|
795
|
+
Oferece suporte apenas ao PG do Razorpay, contém o valor do recibo enviado como parte da mensagem de detalhes do pedido.
|
|
796
|
+
|
|
797
|
+
`notes`
|
|
798
|
+
|
|
799
|
+
objeto
|
|
800
|
+
|
|
801
|
+
**Opcional.**
|
|
802
|
+
|
|
803
|
+
Oferece suporte apenas ao PG do Razorpay, contém os pares de chave-valor enviados como parte da mensagem de detalhes do pedido.
|
|
804
|
+
|
|
805
|
+
`udf1-4`
|
|
806
|
+
|
|
807
|
+
string
|
|
808
|
+
|
|
809
|
+
**Opcional.**
|
|
810
|
+
|
|
811
|
+
Oferece suporte apenas ao PG do PayU, contém valores de string enviados como parte da mensagem de detalhes do pedido.
|
|
812
|
+
|
|
813
|
+
`extra1-2`
|
|
814
|
+
|
|
815
|
+
string
|
|
816
|
+
|
|
817
|
+
**Opcional.**
|
|
818
|
+
|
|
819
|
+
Oferece suporte apenas ao PG do Zaakpay, contém valores de string enviados como parte da mensagem de detalhes do pedido.
|
|
820
|
+
|
|
821
|
+
#### Status do pagamento
|
|
822
|
+
|
|
823
|
+
Status
|
|
824
|
+
|
|
825
|
+
Descrição
|
|
826
|
+
|
|
827
|
+
`pending`
|
|
828
|
+
|
|
829
|
+
O usuário iniciou o processo de pagamento e o objeto de pagamento foi criado
|
|
830
|
+
|
|
831
|
+
`captured`
|
|
832
|
+
|
|
833
|
+
O pagamento foi capturado
|
|
834
|
+
|
|
835
|
+
Veja um exemplo de resposta bem-sucedida:
|
|
836
|
+
|
|
837
|
+
```
|
|
838
|
+
{ "payments": [{ "reference_id": "reference-id-value", "status": "status-of-payment", "currency": "INR", "total_amount": { "value": 21000, "offset": 100 }, "transactions": [ { "id": "[PG-ORDER-ID]", "pg_transaction_id": "[PG-TXN-ID]", "type": "billdesk/razorpay/payu/zaakpay", "status": "success/failed", "created_timestamp": "CREATED_TIMESTAMP", "updated_timestamp": "UPDATED_TIMESTAMP", "method": { "type": "upi/card/netbanking/wallet" }, "error": { "code": "pg-generated-error-code", "reason": "pg-generated-descriptive-reason" }, "refunds": [ { "id": "[REFUND-ID]", "amount": { "value": 100, "offset": 100 }, "speed_processed": "instant/normal", "status": "success", "created_timestamp": "CREATED_TIMESTAMP", "updated_timestamp": "UPDATED_TIMESATMP", } ], } ], "receipt": "receipt-value", "notes": { "key1": "value1", "key2": "value2" }, "udf1": "udf1-value", "udf2": "udf2-value", "udf3": "udf3-value", "udf4": "udf4-value" "additional_info1": "additional_info1-value", "additional_info2": "additional_info2-value", "additional_info3": "additional_info3-value", "additional_info4": "additional_info4-value", "additional_info5": "additional_info5-value", "additional_info6": "additional_info6-value", "additional_info7": "additional_info7-value", }]}
|
|
839
|
+
```
|
|
840
|
+
|
|
841
|
+
Em caso de erro, a resposta será semelhante a uma resposta de erro para o ponto de extremidade `/v1/messages`. Para ver todos os erros que podem ser retornados e orientações sobre como lidar com eles, consulte [API Local do WhatsApp: Erros](/docs/whatsapp/on-premises/errors). Veja um exemplo de erro genérico:
|
|
842
|
+
|
|
843
|
+
```
|
|
844
|
+
{ "errors": [{ "code": 500, "title": "Generic error", "details": "System error. Please try again." }]}
|
|
845
|
+
```
|
|
846
|
+
|
|
847
|
+
### Etapa 6: atualizar o status do pedido
|
|
848
|
+
|
|
849
|
+
As empresas _devem_ enviar atualizações sobre o pedido usando a mensagem de `order_status` em vez de mensagem de texto, já que o status mais recente de um pedido exibido na página de detalhes é baseado apenas em mensagens de `order_status`.
|
|
850
|
+
|
|
851
|
+
Para enviar notificações de atualização sobre um pedido, use uma mensagem do tipo `interactive``order_status` conforme o exemplo abaixo.
|
|
852
|
+
|
|
853
|
+
```
|
|
854
|
+
{ "recipient_type": "individual", "to": "whatsapp-id", "type": "interactive", "interactive": { "type": "order_status", "body": { "text": "your-text-body-content" }, "action": { "name": "review_order", "parameters": { "reference_id": "reference-id-value", "order": { "status": "processing | partially_shipped | shipped | completed | canceled", "description": "optional-text" } } } }}
|
|
855
|
+
```
|
|
856
|
+
|
|
857
|
+
Esta tabela descreve os campos da mensagem interativa `order_status`:
|
|
858
|
+
|
|
859
|
+
Objeto
|
|
860
|
+
|
|
861
|
+
Descrição
|
|
862
|
+
|
|
863
|
+
`type`
|
|
864
|
+
|
|
865
|
+
string
|
|
866
|
+
|
|
867
|
+
**Obrigatório.** Deve ser "order\_status".
|
|
868
|
+
|
|
869
|
+
`body`
|
|
870
|
+
|
|
871
|
+
objeto
|
|
872
|
+
|
|
873
|
+
**Obrigatório.**
|
|
874
|
+
|
|
875
|
+
Um objeto com o corpo da mensagem. O objeto contém o seguinte campo:
|
|
876
|
+
|
|
877
|
+
String `text`
|
|
878
|
+
|
|
879
|
+
- **Obrigatório** se `body` estiver presente. O conteúdo da mensagem. Há compatibilidade com emojis e Markdown. O tamanho máximo é de 1.024 caracteres
|
|
880
|
+
|
|
881
|
+
`footer`
|
|
882
|
+
|
|
883
|
+
objeto
|
|
884
|
+
|
|
885
|
+
**Opcional.**
|
|
886
|
+
|
|
887
|
+
Um objeto com o rodapé da mensagem. O objeto contém o seguinte campo:
|
|
888
|
+
|
|
889
|
+
String `text`
|
|
890
|
+
|
|
891
|
+
- **Obrigatório** se `footer` estiver presente. O conteúdo do rodapé. É compatível com emojis, Markdown e links. O comprimento máximo é de 60 caracteres
|
|
892
|
+
|
|
893
|
+
`action`
|
|
894
|
+
|
|
895
|
+
objeto
|
|
896
|
+
|
|
897
|
+
**Obrigatório.**
|
|
898
|
+
|
|
899
|
+
Um objeto de ação que você deseja que o usuário execute após a leitura da mensagem. Esse objeto de ação contém os seguintes campos:
|
|
900
|
+
|
|
901
|
+
String `name`
|
|
902
|
+
|
|
903
|
+
- **Obrigatório.** Deve ser "review\_order".
|
|
904
|
+
|
|
905
|
+
Objeto `parameters`
|
|
906
|
+
|
|
907
|
+
- Para mais informações, consulte [Objeto de parâmetros](#paramobject-orderstatus).
|
|
908
|
+
|
|
909
|
+
O objeto `parameters` contém os seguintes campos:
|
|
910
|
+
|
|
911
|
+
Valor
|
|
912
|
+
|
|
913
|
+
Descrição
|
|
914
|
+
|
|
915
|
+
`reference_id`
|
|
916
|
+
|
|
917
|
+
string
|
|
918
|
+
|
|
919
|
+
**Obrigatório.**
|
|
920
|
+
|
|
921
|
+
A identificação enviada pela empresa na mensagem `order_details`
|
|
922
|
+
|
|
923
|
+
`order`
|
|
924
|
+
|
|
925
|
+
objeto
|
|
926
|
+
|
|
927
|
+
**Obrigatório.** Esse objeto contém os seguintes campos:
|
|
928
|
+
|
|
929
|
+
String `status`
|
|
930
|
+
|
|
931
|
+
- **Obrigatório.** O novo pedido `status`. Deve ser uma das opções: `processing`, `partially_shipped`, `shipped`, `completed`, `canceled`.
|
|
932
|
+
|
|
933
|
+
String `description`
|
|
934
|
+
|
|
935
|
+
- **Opcional.** Texto para compartilhar informações relacionadas ao status em `order_details`. Pode ser útil ao enviar o cancelamento. O limite máximo é de 120 caracteres.
|
|
936
|
+
|
|
937
|
+
A mensagem `order_status` apresenta dois novos erros que são resumidos abaixo.
|
|
938
|
+
|
|
939
|
+
Código de erro
|
|
940
|
+
|
|
941
|
+
Descrição
|
|
942
|
+
|
|
943
|
+
`2046` – Transição de status inválida
|
|
944
|
+
|
|
945
|
+
A transição de status do pedido não é permitida. Para saber mais, clique [aqui](/docs/whatsapp/on-premises/payments-api/p2m-lite#valid-order-status-transition).
|
|
946
|
+
|
|
947
|
+
`2047` – Não é possível cancelar o pedido
|
|
948
|
+
|
|
949
|
+
Não é possível cancelar o pedido, pois o usuário já o pagou. Para saber mais, clique [aqui](/docs/whatsapp/on-premises/payments-api/p2m-lite#canceling-order).
|
|
950
|
+
|
|
951
|
+
Para saber mais sobre outros erros que podem ser retornados e como lidar com eles, consulte [API Local do WhatsApp, Erros](/docs/whatsapp/on-premises/errors).
|
|
952
|
+
|
|
953
|
+
#### Experiência de produto
|
|
954
|
+
|
|
955
|
+
Os clientes recebem cada atualização `order_status` como uma mensagem separada no tópico de conversa, que faz referência à mensagem `order_details` original conforme mostrado abaixo (à esquerda). A página de detalhes do pedido sempre mostra o status válido mais recente comunicado ao cliente usando a mensagem `order_status` conforme mostrado abaixo (à direita).
|
|
956
|
+
|
|
957
|
+

|
|
958
|
+
|
|
959
|
+

|
|
960
|
+
|
|
961
|
+
#### Status e transições de pedidos com suporte
|
|
962
|
+
|
|
963
|
+
No momento, aceitamos os seguintes valores de status do pedido:
|
|
964
|
+
|
|
965
|
+
Valor
|
|
966
|
+
|
|
967
|
+
Descrição
|
|
968
|
+
|
|
969
|
+
`pending`
|
|
970
|
+
|
|
971
|
+
O usuário ainda não fez o pagamento
|
|
972
|
+
|
|
973
|
+
`processing`
|
|
974
|
+
|
|
975
|
+
Pagamento do usuário autorizado, o comerciante/parceiro está atendendo ao pedido, realizando o serviço, entre outros
|
|
976
|
+
|
|
977
|
+
`partially-shipped`
|
|
978
|
+
|
|
979
|
+
Uma parte dos produtos do pedido foi enviada pelo comerciante
|
|
980
|
+
|
|
981
|
+
`shipped`
|
|
982
|
+
|
|
983
|
+
Todos os produtos do pedido foram enviados pelo comerciante
|
|
984
|
+
|
|
985
|
+
`completed`
|
|
986
|
+
|
|
987
|
+
O pedido foi concluído, e nenhuma outra ação é esperada do usuário ou do parceiro/comerciante
|
|
988
|
+
|
|
989
|
+
`canceled`
|
|
990
|
+
|
|
991
|
+
O parceiro/comerciante quer cancelar a mensagem `order_details` do pedido/fatura. A atualização de status falhará se já houver um pagamento `successful` ou `pending` para esta mensagem `order_details`
|
|
992
|
+
|
|
993
|
+
As transições de status do pedido são restritas para garantir a consistência da experiência do consumidor. As transições de status permitidas estão resumidas abaixo:
|
|
994
|
+
|
|
995
|
+
- O status inicial de um pedido é sempre `pending`, que é enviado na mensagem `order_details`.- `canceled` e `completed` são o status do terminal e não podem ser atualizados para qualquer outro status.- O status `pending` pode mudar para qualquer um dos outros, incluindo `processing`, `shipped` e `partially-shipped`.- `processing`, `shipped` e `partially-shipped` são status equivalentes e podem alternar entre si ou para um dos status terminal.
|
|
996
|
+
|
|
997
|
+

|
|
998
|
+
|
|
999
|
+
Ao enviar uma mensagem `order_status` com uma transição inválida, você receberá um webhook de erro com o código de erro `2046` e a mensagem "New order status was not correctly transitioned" ("Houve falha na transição do novo status do pedido").
|
|
1000
|
+
|
|
1001
|
+
#### Cancelar um pedido
|
|
1002
|
+
|
|
1003
|
+
É possível `canceled` um pedido enviando uma mensagem `order_status` com o status `canceled`. O cliente não pode pagar por um pedido cancelado. O cliente recebe uma mensagem `order_status`, a página de detalhes do pedido é atualizada para mostrar que o pedido foi cancelado e o botão "Continuar" é removido. O texto _opcional_ exibido abaixo de "Pedido cancelado" na página de detalhes do pedido pode ser especificado usando o campo `description` na mensagem `order_status`.
|
|
1004
|
+
|
|
1005
|
+
Os pedidos só poderão ser cancelados se o usuário ainda não tiver feito o pagamento. Se o usuário tiver feito o pagamento e a empresa enviar uma `order_status` com o status `canceled`, você receberá um webhook de erro com o código de erro `2047` e a mensagem "Não foi possível alterar o status do pedido para 'cancelado'".
|
|
1006
|
+
|
|
1007
|
+
### Etapa 7: reconciliar pagamentos
|
|
1008
|
+
|
|
1009
|
+
O WhatsApp não oferece suporte para reconciliações de pagamento. As empresas devem usar a conta do portal de pagamento para reconciliar os pagamentos usando o `reference_id` fornecido nas mensagens `order_details` e o `id` das transações retornadas como parte da consulta de pesquisa de pagamento.
|
|
1010
|
+
|
|
1011
|
+
### Etapa 8: reembolsos
|
|
1012
|
+
|
|
1013
|
+
A empresa pode iniciar um reembolso para um pedido. Para tal, as empresas devem fazer uma chamada POST para o ponto de extremidade `/[PHONE_NUMBER_ID]/payments_refund` com o seguinte objeto `JSON`:
|
|
1014
|
+
|
|
1015
|
+
```
|
|
1016
|
+
{ "reference_id": "reference-id-value", "speed": "normal", "payment_config_id": "payment-config-id", "amount": { "currency": "INR", "value": "100", "offset": "100" }}
|
|
1017
|
+
```
|
|
1018
|
+
|
|
1019
|
+
A tabela a seguir descreve os campos do objeto de solicitação do ponto de extremidade de reembolsos:
|
|
1020
|
+
|
|
1021
|
+
Campo
|
|
1022
|
+
|
|
1023
|
+
Descrição
|
|
1024
|
+
|
|
1025
|
+
`reference_id`
|
|
1026
|
+
|
|
1027
|
+
string
|
|
1028
|
+
|
|
1029
|
+
**Obrigatório.**
|
|
1030
|
+
|
|
1031
|
+
Identificação de referência única para o pedido enviado na mensagem `order_details`.
|
|
1032
|
+
|
|
1033
|
+
`speed`
|
|
1034
|
+
|
|
1035
|
+
string
|
|
1036
|
+
|
|
1037
|
+
**Opcional.**
|
|
1038
|
+
|
|
1039
|
+
Velocidade pela qual o reembolso deve ser processado. Pode ser `instant` ou `normal`.
|
|
1040
|
+
|
|
1041
|
+
`payment_config_id`
|
|
1042
|
+
|
|
1043
|
+
string
|
|
1044
|
+
|
|
1045
|
+
**Obrigatório.**
|
|
1046
|
+
|
|
1047
|
+
A configuração de pagamento do pedido enviada na mensagem `order_details`.
|
|
1048
|
+
|
|
1049
|
+
`amount`
|
|
1050
|
+
|
|
1051
|
+
objeto
|
|
1052
|
+
|
|
1053
|
+
**Obrigatório.**
|
|
1054
|
+
|
|
1055
|
+
O objeto `amount` contém os seguintes campos:
|
|
1056
|
+
|
|
1057
|
+
String `offset`
|
|
1058
|
+
|
|
1059
|
+
- **Obrigatório.** Deve ser `100` para `INR`.
|
|
1060
|
+
|
|
1061
|
+
String `value`
|
|
1062
|
+
|
|
1063
|
+
- **Obrigatório.** Número inteiro positivo que representa o valor do montante multiplicado pelo fator de ajuste. Por exemplo, ₹12,34 tem o valor 1234.
|
|
1064
|
+
|
|
1065
|
+
String `currency`
|
|
1066
|
+
|
|
1067
|
+
- **Obrigatório.** A moeda usada para o reembolso. No momento, o único valor aceito é INR.
|
|
1068
|
+
|
|
1069
|
+
As empresas devem esperar uma resposta na mesma sessão HTTP (não em uma notificação de webhook) que contenha os seguintes campos:
|
|
1070
|
+
|
|
1071
|
+
Campo
|
|
1072
|
+
|
|
1073
|
+
Descrição
|
|
1074
|
+
|
|
1075
|
+
`id`
|
|
1076
|
+
|
|
1077
|
+
string
|
|
1078
|
+
|
|
1079
|
+
**Obrigatório.**
|
|
1080
|
+
|
|
1081
|
+
A identificação única que representa o reembolso iniciado.
|
|
1082
|
+
|
|
1083
|
+
`status`
|
|
1084
|
+
|
|
1085
|
+
string
|
|
1086
|
+
|
|
1087
|
+
**Obrigatório.**
|
|
1088
|
+
|
|
1089
|
+
O status do reembolso. Pode ser `pending`, `failed` ou `completed`
|
|
1090
|
+
|
|
1091
|
+
`speed_processed`
|
|
1092
|
+
|
|
1093
|
+
string
|
|
1094
|
+
|
|
1095
|
+
**Obrigatório.**
|
|
1096
|
+
|
|
1097
|
+
Velocidade com que o reembolso foi processado. Pode ser `instant` ou `normal`. Os PGs são os principais árbitros do modo de velocidade em que o reembolso será realizado. Isso pode NÃO corresponder sempre ao que foi incluído nos parâmetros da solicitação.
|
|
1098
|
+
|
|
1099
|
+
Veja um exemplo de resposta bem-sucedida:
|
|
1100
|
+
|
|
1101
|
+
```
|
|
1102
|
+
{ "id": "refund-id", "status": "pending", "speed_processed": "normal"}
|
|
1103
|
+
```
|
|
1104
|
+
|
|
1105
|
+
## Forma de pagamento via UPI preferida do comerciante
|
|
1106
|
+
|
|
1107
|
+
Agora, os comerciantes podem especificar até `one` app de pagamento da UPI para ser exibido no fluxo de finalização da compra. O app de pagamento preferido do comerciante aparecerá no topo da lista de apps da UPI disponíveis na tela "Escolher forma de pagamento". Para ativar esse recurso, é necessário que os parceiros especifiquem o app-id externo na mensagem order details ou order-invoice.
|
|
1108
|
+
|
|
1109
|
+
Observação: esse recurso está disponível em apps para consumidores na versão 2.24.21.0 e posteriores
|
|
1110
|
+
|
|
1111
|
+
### Atualizações na carga de detalhes do pedido
|
|
1112
|
+
|
|
1113
|
+
```
|
|
1114
|
+
{ "messaging_product": "whatsapp", "interactive": { "action": { "name": "review_and_pay", "parameters": { "payment_settings": [ { "type": "payment_gateway", "payment_gateway": { "preferred_payment_methods": [ { "method": "Application-ID" } ] } } ], "order": .. } } }}
|
|
1115
|
+
```
|
|
1116
|
+
|
|
1117
|
+
### Lista de apps compatíveis:
|
|
1118
|
+
|
|
1119
|
+
App da UPI
|
|
1120
|
+
|
|
1121
|
+
Identificação do app a ser transmitido na carga de detalhes do pedido
|
|
1122
|
+
|
|
1123
|
+
Google Pay
|
|
1124
|
+
|
|
1125
|
+
gpay
|
|
1126
|
+
|
|
1127
|
+
PhonePe
|
|
1128
|
+
|
|
1129
|
+
phonepe
|
|
1130
|
+
|
|
1131
|
+
PayTm
|
|
1132
|
+
|
|
1133
|
+
paytm
|
|
1134
|
+
|
|
1135
|
+
BHIM
|
|
1136
|
+
|
|
1137
|
+
bhim
|
|
1138
|
+
|
|
1139
|
+
Amazon Pay
|
|
1140
|
+
|
|
1141
|
+
amazonpay
|
|
1142
|
+
|
|
1143
|
+
CRED
|
|
1144
|
+
|
|
1145
|
+
cred
|
|
1146
|
+
|
|
1147
|
+
Mobikwik
|
|
1148
|
+
|
|
1149
|
+
mobikwik
|
|
1150
|
+
|
|
1151
|
+
## Restringir opções de pagamento disponíveis
|
|
1152
|
+
|
|
1153
|
+
Os comerciantes podem especificar quais opções de pagamento serão exibidas no fluxo de finalização da compra entre UPI e opções da web. Isso permitirá que os comerciantes habilitem apenas a UPI ou o cartão de crédito (qualquer opção de pagamento disponível) para aceitar pagamentos de faturas.
|
|
1154
|
+
|
|
1155
|
+
Observação: esse recurso está disponível em apps para consumidores na versão 2.24.22.4 e posteriores
|
|
1156
|
+
|
|
1157
|
+
### Atualizações na carga de detalhes do pedido
|
|
1158
|
+
|
|
1159
|
+
```
|
|
1160
|
+
{ "messaging_product": "whatsapp", "interactive": { "action": { "name": "review_and_pay", "parameters": { "payment_settings": [ { "type": "payment_gateway", "payment_gateway": { "enabled_payment_options": ["upi"/"web"] }, } ], "order": ... } } }}
|
|
1161
|
+
```
|
|
1162
|
+
|
|
1163
|
+
### Lista de opções de pagamento
|
|
1164
|
+
|
|
1165
|
+
Opção habilitada
|
|
1166
|
+
|
|
1167
|
+
Experiência no fluxo de finalização da compra
|
|
1168
|
+
|
|
1169
|
+
upi
|
|
1170
|
+
|
|
1171
|
+
Apenas apps de UPI são exibidos no fluxo de finalização da compra
|
|
1172
|
+
|
|
1173
|
+
web
|
|
1174
|
+
|
|
1175
|
+
A página do portal de pagamento é carregada, e as opções de pagamento configuradas na conta do portal do comerciante serão exibidas no fluxo de finalização da compra.
|
|
1176
|
+
|
|
1177
|
+
Alguns portais de pagamento permitem a personalização das opções de pagamento exibidas no link de pagamento ou no fluxo de finalização da compra baseado na web. Entre em contato com o portal de pagamento para restringir as opções de pagamento no link ou página da web.
|
|
1178
|
+
|
|
1179
|
+
## Validação de terceiros com os portais de pagamento Razorpay e PayU
|
|
1180
|
+
|
|
1181
|
+
Agora, oferecemos suporte para TPV no RazorPay e no PayU. Isso permite que os comerciantes especifiquem as contas de consumidores para as quais os pedidos precisam ser pagos. Como as informações bancárias do consumidor são sensíveis, trabalhe com os portais de pagamento para obter a chave de criptografia pública e transmitir as informações de criptografia como parte da mensagem de detalhes do pedido.
|
|
1182
|
+
|
|
1183
|
+
Para usar esse recurso que está em fase alfa de testes, entre em contato com a equipe de pagamentos da Meta: whatsappindia-bizpayments-support@meta.com
|
|
1184
|
+
|
|
1185
|
+
### Atualizações na carga de detalhes do pedido para dar suporte a TPV para comerciantes do Razorpay
|
|
1186
|
+
|
|
1187
|
+
```
|
|
1188
|
+
{ "messaging_product": "whatsapp", "interactive": { "action": { "name": "review_and_pay", "parameters": { "payment_settings": [ { "type": "razorpay", "razorpay": { "encrypted_payment_gateway_data": "encrypted-data" } } ], "order": {} } } }}
|
|
1189
|
+
```
|
|
1190
|
+
|
|
1191
|
+
O valor bruto antes da criptografia deve ficar assim:
|
|
1192
|
+
|
|
1193
|
+
```
|
|
1194
|
+
{ "bank_account": { "account_number": "account-no", "name": "consumer-cbs-name", "ifsc": "ifsc-code" }}
|
|
1195
|
+
```
|
|
1196
|
+
|
|
1197
|
+
### Atualizações na carga de detalhes do pedido para dar suporte a TPV para comerciantes do PayU
|
|
1198
|
+
|
|
1199
|
+
```
|
|
1200
|
+
{ "messaging_product": "whatsapp", "interactive": { "action": { "name": "review_and_pay", "parameters": { "payment_settings": [ { "type": "payu", "payu": { "encrypted_payment_gateway_data": "encrypted-data" } } ], "order": {} } } }}
|
|
1201
|
+
```
|
|
1202
|
+
|
|
1203
|
+
O valor bruto antes da criptografia deve ficar assim:
|
|
1204
|
+
|
|
1205
|
+
```
|
|
1206
|
+
{ "beneficiaryDetail" : { "beneficiaryAccountNumber" : "account_number1|account_number2", "ifscCode" : "ifsc1|ifsc2", }}
|
|
1207
|
+
```
|
|
1208
|
+
|
|
1209
|
+
Trabalhe com as equipes da Meta e do portal de pagamento (RazorPay ou PayU) para habilitar esse recurso, já que ainda estamos na fase de testes alfa.
|
|
1210
|
+
|
|
1211
|
+
## Considerações sobre segurança
|
|
1212
|
+
|
|
1213
|
+
As empresas devem cumprir os requisitos obrigatórios e de segurança locais na Índia. Elas não devem confiar apenas no status da transação fornecido no webhook e devem usar a API de pesquisa de pagamento para recuperar os status diretamente do WhatsApp. As empresas sempre devem validar os dados nas respostas da API ou webhooks para se protegerem contra ataques de SSRF.
|
|
1214
|
+
|
|
1215
|
+
## Lista de verificação para comerciantes integrados
|
|
1216
|
+
|
|
1217
|
+
- Garanta que a mensagem `order_status` seja enviada ao consumidor para informá-lo sobre as atualizações de um pedido após o recebimento das atualizações de transação correspondentes.
|
|
1218
|
+
- Garanta que o comerciante esteja verificado e que o contato WABA esteja marcado com o selo de verificação.
|
|
1219
|
+
- Confirme se a WABA está associada ao nível adequado de mensagens iniciadas pelo comerciante (1 mil, 10 mil ou 100 mil por dia)
|
|
1220
|
+
- O comerciante deve listar as informações de suporte ao cliente na tela de perfil caso o consumidor queira relatar problemas.
|
|
1221
|
+
- Migre para "payment\_settings" em vez de "payment\_type" e "payment\_configuration". Essa é a forma recomendada e permite o acesso a recursos como campos de "notes" e "udf". Para ver um exemplo, [visualize as cargas acima](#step-1).
|
|
1222
|
+
|
|
1223
|
+
|
|
1224
|
+
Você achou esta página útil?
|
|
1225
|
+
|
|
1226
|
+

|
|
1227
|
+
|
|
1228
|
+

|