微信支付/WechatPay SDK in Elixir

该SDK提供了一种简单的方式来与微信支付API进行交互。它包括了部分微信支付API,包括付款、退款、查询订单等。

Online Document

安装


将SDK添加到你的mix.exs文件中:

def deps do
[
{:ex_wechatpay, "~> 0.1"}
]
end

运行mix deps.get来安装SDK。

Usage


在使用该SDK之前,应当提前准备好如下配置:

假设配置如下:

// test_data
{
"appid": "wxefd6b2150cac",
"mchid": "1611167",
"notify_url": "https://www.example.com",
"apiv3_key": "A21AjklasMDKNmA1232D91281230",
"client_serial_no": "1C984734F30327FD63C46DA5386C086104",
"client_key": "-----BEGIN PRIVATE KEY-----.....-----END PRIVATE KEY-----\n",
"client_cert": "-----BEGIN CERTIFICATE-----.....-----END CERTIFICATE-----\n",
"wx_pubs": [
{
"wechatpay-serial": "35CE31ED8F4A5037C51B5ADA03265E72",
"public_key": "-----BEGIN PUBLIC KEY-----.....-----END PUBLIC KEY-----\n"
}
]
}

使用客户端前,先初始化一个client实例:

iex> test_data = File.read!("test.json") |> Jason.decode!()
iex> client =
ExWechatpay.Client.new(
appid: test_data["appid"],
mchid: test_data["mchid"],
notify_url: test_data["notify_url"],
apiv3_key: test_data["apiv3_key"],
client_serial_no: test_data["client_serial_no"],
client_key: test_data["client_key"],
client_cert: test_data["client_cert"],
wx_pubs:
test_data["wx_pubs"] |> Enum.map(fn x -> {x["wechatpay-serial"], x["public_key"]} end)
)

再启动SDK实例即可使用:

iex> wechat = ExWechatpay.new(client: client)
iex> ExWechatpay.start_link(wechat: wechat)
iex> ExWechatpay.get_certificates(wechat, verify: false) # 首次获取微信平台证书列表时可设置不验证
{
:ok,
%{
"data" => [
%{
"certificate" => "-----BEGIN CERTIFICATE-----\nMIID3DCCAsSgAwIBAgIUNc4x7Y9KULkw...\n-----END CERTIFICATE-----",
"effective_time" => "2021-06-23T14:09:22+08:00",
"encrypt_certificate" => %{
"algorithm" => "AEAD_AES_256_GCM",
"associated_data" => "certificate",
"ciphertext" => "BoiqBLxeEtXMAmD7pm+...w==",
"nonce" => "2862867afb33"
},
"expire_time" => "2026-06-22T14:09:22+08:00",
"serial_no" => "35CE31ED8F4A50B930FF8D37C51B5ADA03265E72"
}
]
}
}

功能列表:

许可证


该SDK基于MIT许可证发布。有关更多信息,请参见LICENSE文件。

联系方式


如果你有任何问题或反馈,请发送电子邮件至tt67wq@outlook.com或者发起issue。