ExWechatpay.VirtualPay.Callback (ex_wechatpay v0.4.0)

View Source

虚拟支付回调解析工具

提供微信虚拟支付的回调通知解析函数:

  • parse_deliver: 解析发货通知
  • parse_refund: 解析退款通知
  • success_response: 返回成功响应 JSON

回调无签名验证,仅做 JSON 解析 + 字段名容错(大小写)。

Summary

Functions

解析发货回调通知

解析退款回调通知

返回成功响应 JSON

Functions

parse_deliver(body_or_params)

@spec parse_deliver(String.t() | map()) ::
  {:ok, map()} | {:error, ExWechatpay.Exception.t()}

解析发货回调通知

微信发货通知字段名大小写可能不一致,此函数做容错处理。

参数

  • body_or_params - 请求体字符串或已解析的 map

返回值

  • {:ok, map()} - 解析成功,包含 openid, out_trade_no, product_id
  • {:error, Exception.t()} - 解析失败

示例

iex> parse_deliver(~s({"OpenId":"xxx","OutTradeNo":"VP123","GoodsInfo":{"ProductId":"vip_six_week"}}))
{:ok, %{openid: "xxx", out_trade_no: "VP123", product_id: "vip_six_week"}}

parse_refund(body_or_params)

@spec parse_refund(String.t() | map()) ::
  {:ok, map()} | {:error, ExWechatpay.Exception.t()}

解析退款回调通知

参数

  • body_or_params - 请求体字符串或已解析的 map

返回值

  • {:ok, map()} - 解析成功,包含 openid, wx_refund_id, refund_fee, ret_code
  • {:error, Exception.t()} - 解析失败

success_response()

@spec success_response() :: map()

返回成功响应 JSON

微信回调要求返回固定格式的成功响应。

返回值

  • map() - %{"ErrCode" => 0, "ErrMsg" => "success"}