zhibo/android-app/后端接口TODO清单-支付集成.md

200 lines
4.5 KiB
Markdown
Raw Normal View History

# 后端接口 TODO 清单 - 支付集成模块
## 支付SDK集成说明
**文件**: `RoomDetailActivity.java`
### 需要集成的支付方式
1. 微信支付
2. 支付宝支付
3. 其他支付方式(可选)
## 1. 创建支付订单
**接口路径**: `POST /api/payment/create`
**请求参数**:
```json
{
"userId": "string",
"orderType": "recharge",
"amount": "number",
"coinAmount": "number",
"paymentMethod": "wechat|alipay",
"rechargeOptionId": "string"
}
```
**返回数据**:
```json
{
"code": 200,
"data": {
"orderId": "string",
"orderNo": "string",
"amount": "number",
"paymentParams": {
"appId": "string",
"partnerId": "string",
"prepayId": "string",
"packageValue": "string",
"nonceStr": "string",
"timeStamp": "string",
"sign": "string"
}
}
}
```
## 2. 查询支付状态
**接口路径**: `GET /api/payment/status/{orderId}`
**请求参数**: orderId (路径参数)
**返回数据**:
```json
{
"code": 200,
"data": {
"orderId": "string",
"status": "pending|success|failed|cancelled",
"paidAt": "number",
"amount": "number"
}
}
```
## 3. 支付回调通知
**接口路径**: `POST /api/payment/callback/wechat``/api/payment/callback/alipay`
**说明**:
- 此接口由支付平台调用,不是前端调用
- 用于接收支付成功的异步通知
- 支付成功后更新订单状态和用户金币余额
## 4. 获取支付历史
**接口路径**: `GET /api/payment/history`
**请求参数**:
- userId: 用户ID从token中获取
- page (可选): 页码
- pageSize (可选): 每页数量
**返回数据**:
```json
{
"code": 200,
"data": [
{
"orderId": "string",
"orderNo": "string",
"amount": "number",
"coinAmount": "number",
"status": "string",
"paymentMethod": "string",
"createdAt": "number",
"paidAt": "number"
}
]
}
```
## 微信支付集成步骤
### 1. 添加依赖
```gradle
implementation 'com.tencent.mm.opensdk:wechat-sdk-android:6.8.0'
```
### 2. 配置微信支付
- 在微信开放平台注册应用
- 获取 AppID 和 AppSecret
- 配置支付回调URL
### 3. 调用支付
```java
// 1. 创建支付订单,获取支付参数
// 2. 调用微信支付SDK
IWXAPI api = WXAPIFactory.createWXAPI(context, APP_ID);
PayReq request = new PayReq();
request.appId = paymentParams.getAppId();
request.partnerId = paymentParams.getPartnerId();
request.prepayId = paymentParams.getPrepayId();
request.packageValue = paymentParams.getPackageValue();
request.nonceStr = paymentParams.getNonceStr();
request.timeStamp = paymentParams.getTimeStamp();
request.sign = paymentParams.getSign();
api.sendReq(request);
```
### 4. 处理支付结果
```java
// 在 WXPayEntryActivity 中接收支付结果
@Override
public void onResp(BaseResp resp) {
if (resp.getType() == ConstantsAPI.COMMAND_PAY_BY_WX) {
if (resp.errCode == 0) {
// 支付成功
// 查询订单状态确认
} else if (resp.errCode == -2) {
// 用户取消
} else {
// 支付失败
}
}
}
```
## 支付宝支付集成步骤
### 1. 添加依赖
```gradle
implementation 'com.alipay.sdk:alipaysdk-android:15.8.11'
```
### 2. 配置支付宝
- 在支付宝开放平台注册应用
- 获取 AppID 和私钥
- 配置支付回调URL
### 3. 调用支付
```java
// 1. 创建支付订单获取支付参数orderInfo
// 2. 调用支付宝SDK
PayTask alipay = new PayTask(activity);
Map<String, String> result = alipay.payV2(orderInfo, true);
```
### 4. 处理支付结果
```java
// 解析支付结果
String resultStatus = result.get("resultStatus");
if (TextUtils.equals(resultStatus, "9000")) {
// 支付成功
// 查询订单状态确认
} else if (TextUtils.equals(resultStatus, "6001")) {
// 用户取消
} else {
// 支付失败
}
```
## 支付流程
### 充值流程
1. 用户选择充值金额
2. 选择支付方式(微信/支付宝)
3. 调用创建支付订单接口
4. 获取支付参数
5. 调用支付SDK发起支付
6. 用户完成支付
7. 接收支付结果回调
8. 查询订单状态确认支付成功
9. 更新用户金币余额
10. 显示充值成功提示
### 安全建议
1. 支付参数签名验证
2. 订单金额二次验证
3. 防止重复支付
4. 支付超时处理
5. 异常订单处理
### 错误处理
- 网络错误: 提示用户重试
- 支付取消: 关闭支付页面
- 支付失败: 显示失败原因,允许重试
- 订单查询失败: 提示联系客服