PAYJS微信支付Golang SDK完整使用指南

【免费下载链接】payjs 个人支付收款解决方案PayJS的Golang版本SDK 【免费下载链接】payjs 项目地址: https://gitcode.com/gh_mirrors/pa/payjs

PAYJS微信支付个人接口Golang SDK为开发者提供了便捷的支付集成解决方案。通过该SDK,个人开发者可以轻松接入微信支付功能,无需复杂的商户资质审核流程。

项目简介

PAYJS是一个为微信支付商户提供SaaS服务的平台,确保了支付接口的正规性、安全性及稳定性。该Golang版本SDK封装了PAYJS的核心API,提供了简单易用的接口调用方式。

环境要求与安装

系统要求

  • Golang 1.13及以上版本
  • 有效的PAYJS商户账号

安装方法

go get github.com/qingwg/payjs

基础配置

在使用SDK之前,需要进行基本的配置初始化:

import "github.com/qingwg/payjs"

payjsConfig := &payjs.Config{
    Key:       "PayJS的通信密钥",
    MchID:     "PayJS的商户号",
    NotifyUrl: "异步通知的路由",
}
Pay = payjs.New(payjsConfig)

核心支付功能

扫码支付

扫码支付是最常用的支付方式之一,适用于PC端网站支付场景。

PayNative := Pay.GetNative()
response, err := PayNative.Create(totalFee, body, outTradeNo, attach, payType)

支付流程说明:

  1. 商户系统调用SDK生成支付二维码
  2. 用户使用微信扫描二维码完成支付
  3. 支付结果通过异步通知返回商户系统

付款码支付

付款码支付适用于线下实体店等场景,用户展示付款码,商户扫描完成支付。

PayMicropay := Pay.GetMicropay()
response, err := PayMicropay.Create(totalFee, body, outTradeNo, attach, authCode)

注意事项:

  • 在需要等待用户输入密码的情况下,接口可能返回状态码0
  • 需要通过订单检查接口确认最终支付状态
  • 订单在30秒后未支付将自动超时

收银台支付

收银台支付提供统一的支付页面,支持多种支付方式。

PayCashier := Pay.GetCashier()
requestUrl, err := PayCashier.GetRequestUrl(totalFee, body, outTradeNo, attach, callbackUrl, auto, hide)

JSAPI支付

JSAPI支付适用于在微信内置浏览器中发起的支付。

PayJS := Pay.GetJs()
response, err := PayJS.Create(totalFee, body, outTradeNo, attach, openid)

小程序支付

小程序支付提供两种解决方案:

方案一:使用小程序消息结合收银台模式 方案二:跳转到PAYJS小程序完成支付

PayMiniApp := Pay.GetMiniApp()
response, err := PayMiniApp.GetOrderInfo(totalFee, body, outTradeNo, attach, nonce)

人脸支付

人脸支付通过面部识别技术完成支付验证。

PayFacepay := Pay.GetFacepay()
response, err := PayFacepay.Create(totalFee, body, outTradeNo, attach, openid, faceCode)

订单管理

订单查询

通过订单查询接口可以获取订单的详细信息。

PayOrder := Pay.GetOrder()
response, err := PayOrder.Check(payjsOrderID)

订单关闭

对于未支付的订单,可以通过关闭接口取消订单。

response, err := PayOrder.Close(payjsOrderID)

订单撤销

订单撤销主要针对异常订单,如人脸支付场景中的问题订单。

response, err := PayOrder.Reverse(payjsOrderID)

订单退款

对于已支付的订单,可以通过退款接口进行退款操作。

response, err := PayOrder.Refund(payjsOrderID)

异步通知处理

异步通知是支付成功后的重要回调机制,需要正确处理以确保数据一致性。

PayNotify := Pay.GetNotify(request, responseWriter)

PayNotify.SetMessageHandler(func(msg notify.Message) {
    // 处理支付成功回调逻辑
})

err := PayNotify.Serve()

用户管理

获取用户OpenID

通过浏览器跳转方式获取用户OpenID:

PayUser := Pay.GetUser()
url, err := PayUser.GetUserOpenIDUrl(callbackUrl)

获取用户资料

获取用户的详细信息,包括昵称、头像等。

response, err := PayUser.GetUserOpenInfo(openid)

商户信息

获取商户的基本信息和配置。

PayMch := Pay.GetMch()
response, err := PayMch.GetMchInfo()

实用工具

银行编码查询

通过银行简写查询完整的银行名称信息。

PayBank := Pay.GetBank()
response, err := PayBank.GetBankInfo(bank)

IP地址列表

获取异步通知服务器的IP地址列表,用于安全验证。

PayIP := Pay.GetIP()
response, err := PayIP.GetIPList()

安全注意事项

  1. 敏感信息保护

    • 商户号和通信密钥需要妥善保管
    • 建议使用环境变量或配置文件存储
  2. 签名验证

    • 所有接口调用都需要进行签名验证
    • 确保签名算法的正确实现
  3. 异步通知验证

    • 验证通知来源的IP地址
    • 校验签名确保数据完整性

常见问题处理

签名验证问题

当前SDK在部分接口存在签名验证bug,如JSAPI支付、用户资料获取等接口。在等待修复期间,相关接口已临时取消验证报错。

订单状态处理

对于付款码支付等需要等待用户输入的支付方式,需要通过轮询订单状态接口确认最终支付结果。

最佳实践建议

  1. 错误处理

    • 对所有API调用进行错误处理
    • 记录详细的支付日志便于排查问题
  2. 数据一致性

    • 确保订单号的唯一性
    • 正确处理重复通知的情况
  3. 性能优化

    • 合理设置超时时间
    • 避免频繁的订单状态查询

通过本指南,您可以快速掌握PAYJS微信支付Golang SDK的使用方法,为您的项目集成安全可靠的支付功能。

【免费下载链接】payjs 个人支付收款解决方案PayJS的Golang版本SDK 【免费下载链接】payjs 项目地址: https://gitcode.com/gh_mirrors/pa/payjs

Logo

这里是“一人公司”的成长家园。我们提供从产品曝光、技术变现到法律财税的全栈内容,并连接云服务、办公空间等稀缺资源,助你专注创造,无忧运营。

更多推荐