Liking cljdoc? Tell your friends :D

clj-wxpay

clojure版本的微信支付sdk。基于官方sdk做的包装,通过一个函数可灵活地使用官方文档涉及到的API。

安装

增加 [huzhengquan/clj-wxpay "3.0.9.0"]project.cljdependencies 之中。

使用方法

(require '[clj-wxpay.core :as wxpay])

参数

(wxpay/request cmd params & config)
  • cmd 对应官方文档API列表中的接口链接后半部分,如"pay/unifiedorder""secapi/pay/refund"
  • params 为请求参数,参考官方文档中的请求参数部分
  • config 为配置项,包括cert?connectTimeoutMsreadTimeoutMssandbox?sign_type

安全项

appidmch_idkey是必有项,通过系统属性来配置(System/setProperty)。

官方文档中的appidmch_idkeynonce_strsignsign_type参数可在第2个参数params内容中忽略。

内部配置系统属性

(System/setProperty "clj.wxpay.appid" "xxx")
(System/setProperty "clj.wxpay.mch_id" "xxx")
(System/setProperty "clj.wxpay.key" "xxx") 
(System/setProperty "clj.wxpay.cert_path" "xxx") ; 证书文件路径
(System/setProperty "clj.wxpay.http_connect_timeout_ms" "12000") ; 缺省时为6000
(System/setProperty "clj.wxpay.http_read_timeout_ms" "12000") ; 缺省时为8000
(System/setProperty "clj.wxpay.sandbox" "true") ; 缺省时为false

JVM 命令行配置

java -jar -Dclj.wxpay.appid=xxx -Dclj.wxpay.mch_id=xxx -Dclj.wxpay.key=xxx -Dclj.wxpay.cert_path=xxx app.jar

证书

secapi/pay/refund(申请退款)接口要求使用API证书。注意使用无需证书的api时不要携带:cert参数。

(wxpay/request "secapi/pay/refund"
  {"transaction_id" "xxx", "out_refund_no" "xxx", "total_fee" "100", "refund_fee" "100"}
  :cert? true)

config参数

  • :cert? 是否需要证书
  • :connectTimeoutMs 连接超时时间,单位是毫秒,默认6000
  • :readTimeoutMs 读数据超时时间,单位是毫秒,默认8000
  • sandbox? 仿真系统,默认false
  • sign_type 签名类型,默认"MD5"

响应

无异常情况下,接口响应类型为HashMap。数据结构可以参考官方的文档。

微信支付官方开发文档

如查询对帐单失败时响应内容:

{"return_msg" "No Bill Exist", "error_code" "20002", "return_code" "FAIL"}
; 或
{"return_msg" "ok", "error_code" "SUCCESS", "data": "xxx"}

API使用示例

(require '[clj-wxpay.core :as wxpay])

; 查询订单
(wxpay/request "pay/orderquery" {"transaction_id" "xxx"})

; 在仿真系统中测试
(wxpay/request "pay/orderquery" {"transaction_id" "xxx"} :sandbox? true)

; 使用指定超时配置
(wxpay/request "pay/orderquery" {"transaction_id" "xxx"} :connectTimeoutMs 1000 :readTimeoutMs 1000)

Can you improve this documentation?Edit on GitHub

cljdoc is a website building & hosting documentation for Clojure/Script libraries

× close