lib/mix/tasks/sample/payment/create.ex

defmodule Mix.Tasks.Sample.Payment.Create do
  @moduledoc """
  Creates a payment using the credentials at `Mix.TaskHelper.set_sample_config/0`
  """

  def run(_) do
    request = %Craftgate.Request.CreatePaymentRequest{
      price: Decimal.new("100.0"),
      paid_price: Decimal.new("100.0"),
      wallet_price: Decimal.new("0.0"),
      installment: 1,
      conversation_id: "456d1297-908e-4bd6-a13b-4be31a6e47d5",
      currency: Craftgate.Model.Currency.try(),
      payment_group: Craftgate.Model.PaymentGroup.listing_or_subscription(),
      card: %Craftgate.Request.Dto.Card{
        card_holder_name: "Haluk Demir",
        card_number: "5258640000000001",
        expire_year: "2044",
        expire_month: "07",
        cvc: "000"
      },
      items: [
        %Craftgate.Request.Dto.PaymentItem{
          name: "Item 1",
          price: Decimal.new("30.0"),
          external_id: "123d1297-839e-4bd6-a13b-4be31a6e12a8"
        },
        %Craftgate.Request.Dto.PaymentItem{
          name: "Item 2",
          price: Decimal.new("50.0"),
          external_id: "789d1297-839e-4bd6-a13b-4be31a6e13f7"
        },
        %Craftgate.Request.Dto.PaymentItem{
          name: "Item 3",
          price: Decimal.new("20.0"),
          external_id: "3a1d1297-839e-4bd6-a13b-4be31a6e18e6"
        }
      ]
    }

    Mix.TaskHelper.set_sample_config()

    {:ok, result} = Craftgate.Adapter.PaymentAdapter.create_payment(request)

    IO.inspect(result)
  end
end