forked from wechatpay-apiv3/wechatpay-go
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
3 changed files
with
67 additions
and
5 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -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/[email protected]` 升级依赖。 | ||
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/[email protected].1 | ||
go get -u github.com/wechatpay-apiv3/[email protected].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/[email protected].1 | ||
go get -u github.com/wechatpay-apiv3/wechatpay-go/cmd/[email protected].2 | ||
``` | ||
然后执行 `wechatpay_download_certs` 即可下载平台证书到当前目录 | ||
```shell | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters