defmodule WeChat.Requester.Pay do
@moduledoc """
默认的请求客户端(微信支付)
"""
alias WeChat.Pay
alias Tesla.Middleware
@adapter_options [pool_timeout: 5_000, receive_timeout: 5_000]
def new(client) do
name = WeChat.Pay.finch_name(client)
Tesla.client(
[
{Middleware.BaseUrl, "https://api.mch.weixin.qq.com"},
{Middleware.Headers, [{"accept", "application/json"}, {"user-agent", "Tesla"}]},
Middleware.EncodeJson,
{Pay.AuthorizationMiddleware, client},
{Pay.VerifySignatureMiddleware, client},
Middleware.Logger
],
{Tesla.Adapter.Finch, [{:name, name} | @adapter_options]}
)
end
@doc false
def first_time_download_certificates_client(client) do
# 第一次下载平台证书 跳过验签: https://github.com/wechatpay-apiv3/CertificateDownloader#如何第一次下载证书
Tesla.client(
[
{Middleware.BaseUrl, "https://api.mch.weixin.qq.com"},
{Middleware.Headers, [{"accept", "application/json"}, {"user-agent", "Tesla"}]},
Middleware.EncodeJson,
{Pay.AuthorizationMiddleware, client},
Middleware.DecodeJson,
Middleware.Logger
],
{Tesla.Adapter.Finch, [{:name, WeChat.Finch} | @adapter_options]}
)
end
end