ExWechatpay. VirtualPay
(ex_wechatpay v0.4.0)
View Source
虚拟支付主入口模块
提供微信虚拟支付的完整 API:
- sign: 生成支付签名(组装 signData + 计算所有签名)
- query_balance: 查询代币余额
- query_order: 查询订单状态
- refund: 发起退款
- notify_deliver: 通知发货
- code2session: 用 code 换 session_key + openid
此模块是 VirtualPay 子系统的门面,内部委托给 Client/Signature/Callback 等子模块。
Summary
Functions
@spec code2session( keyword(), String.t() ) :: {:ok, map()} | {:error, ExWechatpay.Exception.t()}
用 code 换 session_key + openid
@spec notify_deliver(keyword(), String.t(), String.t()) :: {:ok, map()} | {:error, ExWechatpay.Exception.t()}
通知发货
@spec query_balance(keyword(), String.t(), String.t()) :: {:ok, map()} | {:error, ExWechatpay.Exception.t()}
查询代币余额
@spec query_order(keyword(), String.t(), String.t()) :: {:ok, map()} | {:error, ExWechatpay.Exception.t()}
查询订单状态
@spec refund(keyword(), String.t(), String.t(), integer()) :: {:ok, map()} | {:error, ExWechatpay.Exception.t()}
发起退款
@spec sign(keyword(), keyword()) :: {:ok, map()} | {:error, ExWechatpay.Exception.t()}
生成支付签名
组装 signData 并计算所有签名,返回前端 wx.requestVirtualPayment 所需的全部数据。
参数
config- 配置(包含 appid, secret, virtual_pay 子键)args- 参数:product_id- 道具 ID,如 "vip_six_week":out_trade_no- 商户订单号:code- wx.login() 获取的 code:goods_price- 价格(分):buy_quantity- 购买数量(默认 1):attach- 自定义透传字段(默认 "ex_wechatpay")
返回值
{:ok, map()}- 成功,包含 sign_data, sign_data_str, pay_sig, signature, session_key, openid{:error, Exception.t()}- 失败
重要
sign_data_str必须原样传给前端,前端不能再 JSON.stringifypay_sig已包含 "requestVirtualPayment&" 前缀