Skip to content

Commit

Permalink
version: 更新 v0.2.2 版本及文档
Browse files Browse the repository at this point in the history
  • Loading branch information
EmmetZC committed Jul 9, 2021
1 parent 6ca6987 commit 5520a1e
Show file tree
Hide file tree
Showing 3 changed files with 67 additions and 5 deletions.
18 changes: 18 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,23 @@
# Changelog

## [0.2.2] - 2021-07-09

### Added

+ 微信支付境内退款(refunddomestic)接口SDK

### Changed

+ `BREAKING CHANGE` 将现有接口SDK中的整型参数统一为`int64`。受影响接口包括:
<details>
<summary>Click to expand!</summary>

+ payments/app
+ payments/h5
+ payments/jsapi
+ payments/native
</details>

## [0.2.1] - 2021-06-25

### Added
Expand Down
52 changes: 48 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

## 版本信息

版本号:`v0.2.1`
版本号:`v0.2.2`

版本功能:
1. 支持微信支付 API v3 请求签名与应答验签能力的 HTTP Client: `core.Client`,该 HTTP Client 在执行请求时将自动携带身份认证信息,并检查应答的微信支付签名。
Expand All @@ -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 进行管理)
Expand All @@ -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的下载。

Expand Down Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion core/consts/const.go
Original file line number Diff line number Diff line change
Expand Up @@ -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中的信息
)

Expand Down

0 comments on commit 5520a1e

Please sign in to comment.