lib/wechat/requester/pay.ex

defmodule WeChat.Requester.Pay do
  @moduledoc """
  默认的请求客户端(微信支付)
  """

  alias Tesla.Middleware.{BaseUrl, Headers, Logger, JSON}

  @middleware [
    {BaseUrl, "https://api.mch.weixin.qq.com"},
    {Headers, [{"accept", "application/json"}, {"user-agent", "Tesla"}]},
    Logger,
    JSON
  ]
  @adapter_options [pool_timeout: 5_000, receive_timeout: 5_000]

  def new(client, name, serial_no) do
    authorization_middleware =
      {WeChat.Pay.Authorization,
       mch_id: client.mch_id(), private_key: client.private_key(), serial_no: serial_no}

    Tesla.client(
      @middleware ++ [authorization_middleware],
      {Tesla.Adapter.Finch, [{:name, name} | @adapter_options]}
    )
  end
end