Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up

wechat sdk for vapor

License

NotificationsYou must be signed in to change notification settings

vapor-china/wechat

Repository files navigation

Build StatusSwiftSwiftXcodeXcodeMIT

Wechat 是一个基于vapor4的微信SDK。支持 macOS, Ubuntu。

English 📔

安装

Swift Package Manager

要使用苹果的 Swift Package Manager 集成,将以下内容作为依赖添加到你的Package.swift

.package(url:"https://github.com/vapor-china/wechat.git", from:"2.0.0")

这里是一个PackageDescription 实例:

// swift-tools-version:5.2import PackageDescriptionletpackage=Package(    name:"MyPackage",    products:[.library(            name:"MyPackage",            targets:["MyPackage"]),],    dependencies:[        // 💧 A server-side Swift web framework..package(url:"https://github.com/vapor/vapor.git", from:"4.0.0-rc"),.package(url:"https://github.com/vapor/fluent.git", from:"4.0.0-rc"),.package(url:"https://github.com/vapor/fluent-mysql-driver.git", from:"4.0.0-rc"),.package(url:"https://github.com/vapor-china/wechat.git", from:"2.0.0")],    targets:[.target(name:"App", dependencies:[.product(name:"Fluent",package:"fluent"),.product(name:"FluentMySQLDriver",package:"fluent-mysql-driver"),.product(name:"Vapor",package:"vapor"),.product(name:"Wechat",package:"wechat")]),.target(name:"Run", dependencies:["App"]),.testTarget(name:"AppTests", dependencies:[.target(name:"App"),.product(name:"XCTVapor",package:"vapor"),])])

使用

注入wechat

letmch=WechatConfiguare.MCH(mchId:"you mchId", secret:"your mch secret") // 如果不需要使用微信支付,这个可以设为nilletwechatConfig=tryWechatConfiguare(appId:"your appid", appSecret:"your app secret", mch: mch)        app.wechat.use(wechatConfig)

微信授权

获取 access token

try req.wechat.fetchUserAccessToken(code)

获取用户信息

try req.wechat.getUserInfo(access: atk, openId: openid)

通过code直接获取用户信息示例

try req.wechat.fetchUserAccessToken(code).flatMapThrowing({(tokenModel)iniflet errmsg= tokenModel.isErrMsg{throwRespError(err:.normal, msg: errmsg)}guardlet atk= tokenModel.accessTokenelse{throwRespError(err:.normal, msg:"access token is not exists")}guardlet openid= tokenModel.openIdelse{throwRespError(err:.normal, msg:"openid is not exists")}returntry req.wechat.getUserInfo(access: atk, openId: openid).encodeResponse(for: req)}).flatMap{ $0}

刷新 access token

try req.wechat.refresh(access: token)

验证access token是否有效

        req.wechat.valid(access: token, openId: openId)

支付相关

支付预下单

letparam=WxPayUnifiedOrderPramas(outTradeNo:"macos\(Int(Date().timeIntervalSince1970))", body:"vapor test", totalFee:1, spbillCreateIp:"127.0.0.1", notifyUrl:"http://notify.objcoding.com/notify", tradeType:.app)                 returntry req.wechat.unified(order: param)

查询支付结果

letparam=WxPayOrderQueryPramas(outTradeNo:"your out trade no")try req.wechat.query(order: param)

关闭订单

letparam=WxPayCloseOrderParams(outTradeNo:"your out trade no")try req.wechat.close(order: param)

退款

letparam=WxPayRefundOrderParams(outTradeNo:"out trade no", outRefundNo:" out refund no", totalFee:1, refundFee:1, refundFeeType:"", refundDesc:"", refundAccount:"", notifyUrl:"http://notify.objcoding.com/notify")try req.wechat.refund(order: param)

支付回调解析处理

router请写post请求

letres=try req.wechat.payCallback()    ······if res.isTransactionSuccess{returnWxPayCallbackReturn.OK.encodeResponse(for: req)}else{returnWxPayCallbackReturn.NotOK(errMsg:"msg").encodeResponse(for: req)}

License

Wechat is released under an MIT license. SeeLicense.md for more information.


[8]ページ先頭

©2009-2025 Movatter.jp