diff --git a/CHANGELOG.md b/CHANGELOG.md index aede9ae..decf496 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,23 @@ # Changelog +## [0.2.2] - 2021-07-09 + +### Added + ++ 微信支付境内退款(refunddomestic)接口SDK + +### Changed + ++ `BREAKING CHANGE` 将现有接口SDK中的整型参数统一为`int64`。受影响接口包括: +
+ Click to expand! + + + payments/app + + payments/h5 + + payments/jsapi + + payments/native +
+ ## [0.2.1] - 2021-06-25 ### Added diff --git a/README.md b/README.md index bdc300e..44e0f5f 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ ## 版本信息 -版本号:`v0.2.1` +版本号:`v0.2.2` 版本功能: 1. 支持微信支付 API v3 请求签名与应答验签能力的 HTTP Client: `core.Client`,该 HTTP Client 在执行请求时将自动携带身份认证信息,并检查应答的微信支付签名。 @@ -13,11 +13,55 @@ - 微信核心支付4种常用支付接口(JSAPI支付, APP支付,H5支付,Native支付)的SDK。特别的,为【JSAPI支付】与【APP支付】提供了自动构建拉起支付所需签名的接口。 - 微信支付4种文件上传接口的SDK - 微信支付证书下载接口的SDK + - 微信支付境内退款接口的SDK - 更多API跟进中 兼容性: 本版本为测试版本,因为接口重命名/代码结构调整等原因,与之前版本存在不兼容的情况。 +### 重大更新(Breaking Change) +版本 `v0.2.2` 中我们包含了一个重大更新内容:将现有接口SDK中的整型参数统一为`int64`。 +这一行为的目的是规范SDK中对整型参数的实现,避免因为未来可能的`int32 -> int64`的字段升级导致大规模兼容性问题。 + +此次升级会导致 `payments` 下4个API接口的SDK的兼容性问题,建议开发者以如下方式对自己的代码进行更新。 +#### SDK整型参数统一为`int64`代码修复步骤 +##### 1. 升级依赖 +1. 在你的模块目录下执行 `go get -u github.com/wechatpay-apiv3/wechatpay-go@v0.2.2` 升级依赖。 +2. (正常情况下该步骤会自动完成)修改模块 `go.mod` 文件中依赖的 `github.com/wechatpay-apiv3/wechatpay-go` 至 `v0.2.2`版本。 +##### 2. 定位需要修改的代码 +在项目根目录下执行`go build ./...`可以递归检查代码中的编译错误,即可快速定位到需要修改的代码。 +##### 3. 对请求构建代码进行更新 +对于请求 `payments` 接口的数据,可以在设置参数时使用`int64(xxx)`进行类型转换。当然也可以将请求链路上的类型从`int32`更新为`int64`。 +```go +req := jsapi.PrepayRequest{} +// 升级前 +req.Amount = &jsapi.Amount{ + Currency: core.String("CNY"), + Total: &totalInt32, +} +// 升级后 +totalInt64 := int64(totalInt32) +req.Amount = &jsapi.Amount{ + Currency: core.String("CNY"), + Total: &totalInt64, +} +``` +##### 4. 对应答处理代码进行更新 +对于应答结果的处理,我们不建议将返回结果中的`int64`强制类型转换为`int32`,而是建议将后续处理链路中的类型从`int32`更新为`int64`。 +这样变更可能会更复杂,但是安全性更好,避免因为数据溢出导致错误。 +```go +// 升级前 +func GetTransactionTotal(resp *payments.Transaction) int32 { + return *resp.Amount.Total +} +// 升级后 +func GetTransactionTotal(resp *payments.Transaction) int64 { + return *resp.Amount.Total +} +``` +##### 5. 更新你的测试用例代码并测试 +如果你有针对 `payments` 编写测试用例,你可能需要对测试用例代码进行更新,并重新测试确保一切正常。 + ## 快速开始 ### 安装 #### 1、使用 Go Modules 管理你的项目(如果项目目录下存在`go.mod`文件的话说明你的项目已经使用 Go Modules 进行管理) @@ -30,14 +74,14 @@ go mod init 在 `go.mod` 文件中加入对本SDK的依赖: ``` require ( - github.com/wechatpay-apiv3/wechatpay-go v0.2.1 + github.com/wechatpay-apiv3/wechatpay-go v0.2.2 ) ``` 并使用`go mod tidy`进行下载。 也可以直接在项目目录中执行: ```shell -go get -u github.com/wechatpay-apiv3/wechatpay-go@v0.2.1 +go get -u github.com/wechatpay-apiv3/wechatpay-go@v0.2.2 ``` 来自动完成`go.mod`的修改与SDK的下载。 @@ -420,7 +464,7 @@ func NewCustomClient(ctx context.Context, mchID string) (*core.Client, error) { 首先使用 `go` 指令下载命令行工具 ```shell -go get -u github.com/wechatpay-apiv3/wechatpay-go/cmd/wechatpay_download_certs@v0.2.1 +go get -u github.com/wechatpay-apiv3/wechatpay-go/cmd/wechatpay_download_certs@v0.2.2 ``` 然后执行 `wechatpay_download_certs` 即可下载平台证书到当前目录 ```shell diff --git a/core/consts/const.go b/core/consts/const.go index e29faa9..896bc52 100644 --- a/core/consts/const.go +++ b/core/consts/const.go @@ -11,7 +11,7 @@ const ( // SDK 相关信息 const ( - Version = "0.2.1" // SDK 版本 + Version = "0.2.2" // SDK 版本 UserAgentFormat = "WechatPay-Go/%s (%s) GO/%s" // UserAgent中的信息 )