React Native 支付宝支付模块,支持Android平台,提供完整的支付流程管理、事件回调机制、沙箱/正式环境切换、错误处理和格式化,以及TypeScript类型支持。集成简便,使用灵活,适用于需要接入支付宝App支付功能的React Native应用。
- ✅ 支付宝App支付功能(沙箱/正式环境)
- ✅ 完整的支付结果处理和状态管理
- ✅ 多种回调方式支持(Promise和事件)
- ✅ TypeScript类型支持
- ✅ 错误处理与格式化
npm install react-native-alipay-payment --save模块内置满足运行的权限,额外权限请自行添加
如果遇到AndroidManifest合并冲突,在应用的AndroidManifest.xml中添加:
<!-- 解决支付宝SDK合并冲突 -->
<activity
android:name="com.alipay.sdk.app.H5PayActivity"
tools:replace="android:configChanges">
</activity>
<activity
android:name="com.alipay.sdk.app.H5AuthActivity"
tools:replace="android:configChanges">
</activity>import AlipayPayment from 'react-native-alipay-payment';
// 服务端生成的订单字符串
const orderInfo = 'app_id=2021000000000000&biz_content=...';
// 发起支付
AlipayPayment.payWithResult(orderInfo)
.then(result => {
if (result.success) {
console.log('支付成功!');
} else if (result.cancelled) {
console.log('用户取消支付');
} else {
console.log('支付失败:', result.message);
}
})
.catch(error => console.error('支付异常:', error));//开启debug输出
AlipayPayment.setDebugMode(true);
// 开启沙箱模式(开发测试用)
await AlipayPayment.setSandboxMode(true);
// 检查支付宝是否安装
const installed = await AlipayPayment.isAlipayInstalled();
if (!installed) {
// 提示用户安装支付宝
}import { PaymentService } from 'react-native-alipay-payment/lib/src/AlipayService';
// 初始化支付服务
const paymentService = new PaymentService(true); // true表示使用沙箱环境
// 初始化并支付
const payOrder = async () => {
try {
// 初始化环境
await paymentService.initialize();
// 使用订单字符串支付(订单字符串需从服务器获取)
const orderString = '...'; // 完整的支付宝订单参数字符串
const result = await paymentService.payWithOrderString(orderString);
console.log('支付结果:', result.success ? '成功' : '失败');
} catch (error) {
console.error('支付异常:', error);
}
};
// 使用事件监听方式接收支付结果
paymentService.addPaymentCallback(result => {
console.log('支付结果事件:', result);
});| 方法 | 描述 | 参数 | 返回值 |
|---|---|---|---|
pay(orderInfo) |
原始支付方法 | orderInfo: string |
Promise<AlipayPayResult> |
payWithResult(orderInfo) |
格式化结果的支付方法 | orderInfo: string |
Promise<AlipayFormattedResult> |
setSandboxMode(enabled) |
设置沙箱模式 | enabled: boolean |
Promise<boolean> |
isSandboxEnabled() |
获取沙箱模式状态 | - | Promise<boolean> |
resetPaymentState() |
重置支付状态 | - | Promise<boolean> |
isAlipayInstalled() |
检查支付宝是否安装 | - | Promise<boolean> |
getAlipayVersion() |
获取支付宝SDK版本 | - | Promise<string> |
| 方法 | 描述 | 参数 | 返回值 |
|---|---|---|---|
isPaymentSuccess(resultStatus) |
检查支付是否成功 | resultStatus: string |
boolean |
isPaymentProcessing(resultStatus) |
检查支付是否处理中 | resultStatus: string |
boolean |
isPaymentCancelled(resultStatus) |
检查支付是否取消 | resultStatus: string |
boolean |
getPaymentMessage(resultStatus) |
获取支付结果消息 | resultStatus: string |
string |
formatPayResult(payResult) |
格式化支付结果 | payResult: Object |
Object |
validateOrderInfo(orderInfo) |
验证订单信息 | orderInfo: string |
{isValid: boolean, missingFields: string[]} |
| 方法 | 描述 | 参数 | 返回值 |
|---|---|---|---|
constructor(useSandbox) |
构造函数 | useSandbox: boolean = false |
- |
initialize() |
初始化支付环境 | - | Promise<boolean> |
payWithOrderString(orderString, callback?) |
使用订单字符串支付 | orderString: string, callback?: Function |
Promise<PaymentResponse> |
addPaymentCallback(callback) |
添加支付回调 | callback: Function |
void |
removePaymentCallback(callback) |
移除支付回调 | callback: Function |
void |
removeEventListener() |
移除事件监听器 | - | void |
cleanup() |
清理资源 | - | void |
| 方法 | 描述 | 参数 | 返回值 |
|---|---|---|---|
setDebugMode(enabled) |
设置调试模式 | enabled: boolean |
Promise<boolean> |
getDebugInfo() |
获取调试信息 | - | Promise<AlipayDebugInfo> |
logDebugInfo(level, message) |
记录调试日志 | level: string, message: string |
Promise<boolean> |
9000: 支付成功8000: 处理中4000: 支付失败6001: 用户取消6002: 网络错误6004: 未知错误
- 无法唤起支付宝:确认支付宝已安装,检查订单参数格式
- 支付结果回调问题:使用PaymentService的事件监听
- 状态异常:调用
resetPaymentState()重置状态 - 清单合并冲突:在AndroidManifest.xml中添加tools:replace配置
-
1.1.4:
- 移除了PaymentService中的服务端交互功能
- 简化了PaymentService构造函数
- 增强了事件监听机制,支持事件回调方式获取支付结果
- 修复ActivityEventListener处理问题
- 提高支付结果回调可靠性
- 添加内置权限请求功能
-
1.1.3:
- 添加了resetPaymentStateInternal()方法统一重置状态
- 在所有回调路径中确保状态重置
- 增加日志记录便于调试
-
1.1.2:
- 修复consummap重复使用问题
- 修复回调闪退问题
-
1.1.1:
- 新增isSandboxEnabled API
- 更新示例代码
- 正式环境必须使用真实商户信息和签名
- 支付参数应由服务器生成,确保安全性
- 支付结果应与服务器进行二次确认
MIT