defmodule Mix.Tasks.Kopokopo.TestPayment do @moduledoc """ Sends a Kopo Kopo STK Push test prompt. mix kopokopo.test_payment mix kopokopo.test_payment 0740769596 10 """ use Mix.Task @shortdoc "Sends a Kopo Kopo STK Push test prompt" @impl Mix.Task def run(args) do Mix.Task.run("app.start") {phone, amount} = case args do [] -> {"0740769596", "1"} [phone] -> {phone, "1"} [phone, amount | _] -> {phone, amount} end Mix.shell().info("Sending Kopo Kopo STK Push test prompt to #{phone} for KES #{amount}...") case KopoKopo.test_prompt(phone, amount) do {:ok, %{location: location, reference: reference}} -> Mix.shell().info("Prompt sent.") Mix.shell().info("Reference: #{reference}") Mix.shell().info("Status URL: #{location}") {:error, reason} -> Mix.raise("Kopo Kopo test prompt failed: #{inspect(reason)}") end end end