From 7f4c8bb7d410e7542ba389c9b1944d0c9414819c Mon Sep 17 00:00:00 2001 From: TQCasey <494294315@qq.com> Date: Tue, 28 Jul 2026 15:52:19 +0800 Subject: [PATCH] amazonpay --- docs/ipay 排期.md | 117 +++++++++++++++++++++++++++++++++++++++++ docs/目前的问题.log | 39 ++++++++++++++ package.json | 2 +- screens/HomeScreen.tsx | 23 ++------ upi.html | 2 +- 5 files changed, 163 insertions(+), 20 deletions(-) create mode 100644 docs/ipay 排期.md create mode 100644 docs/目前的问题.log diff --git a/docs/ipay 排期.md b/docs/ipay 排期.md new file mode 100644 index 0000000..c23329d --- /dev/null +++ b/docs/ipay 排期.md @@ -0,0 +1,117 @@ +# IPay 近期需求排期 + +## P0 - 超级优先级 + +### 1. 收银台功能 +- 实现新版收银台。 +- 参考 AA 收银台方案。 +- 参考 APK: + - dd1.com + +### 2. DeepLink + 透传能力 +- 实现 DeepLink 唤起能力。 +- 支持参数透传。 +- 与 Queue(Que)系统联调对接。 + +--- + +## P1 - 紧急需求 + +### 1. H5 版本 IPay +- 开发并上线 H5 版本 IPay。 + +### 2. 运营重绑权限 +- 为运营角色增加「发送重绑」权限。 +- 支持后台直接触发重绑流程。 + +### 3. PhonePe Business 卡配对状态修复 +- 支持将 PhonePe Business 卡恢复为「未绑定 / 无卡」状态。 +- 方便重新配对和异常处理。 + +--- + +## P2 - 高优先级 + +### 1. 流水保存机制优化 +数据库保存流水规则: + +- 前 30 分钟: + - 每 10 分钟保存一次。 + +- 30 分钟后: + - 每 30 分钟保存一次。 + +目的: +- 降低存储压力。 +- 保留关键操作轨迹。 +- 满足问题追溯需求。 + +### 2. 用户钱包开放 +- 支持针对指定用户开放钱包功能。 +- 后续支持精细化配置。 + +### 3. 用户代理模式配置 +支持针对指定用户设置代理模式。 + +配置项: + +- 当前代理模式 +- 生效时间 +- 冷却时间(持续时长) + +规则: + +- `-1` 表示永久生效 +- 支持用户级配置覆盖 +- 支持系统默认配置 +- 未配置用户使用全局默认配置 + +--- + +## P3 - 产品与运营优化 + +### 1. 官方频道建设 +- 建立官方频道运营体系。 +- 提升用户触达能力。 +- 用于公告、活动、维护通知等场景。 + +### 2. 错误提示文案优化 +目标: + +- 减少用户困惑 +- 减少运营沟通成本 +- 提高问题定位效率 + +要求: + +- 提示信息明确具体 +- 不使用模糊文案 +- 告知用户原因及处理方式 + +示例: + +❌ 当前操作失败 + +✅ 当前钱包已离线,请等待设备重新上线后重试 + +❌ 提交失败 + +✅ 当前订单状态已变更,请刷新页面后重新提交 + +❌ 系统异常 + +✅ 当前代理连接失败,请检查代理配置或联系运营处理 + +--- + +# 备注 + +当前阶段重点: + +1. 收银台 +2. DeepLink + 透传 +3. H5 版本 IPay +4. 重绑权限 +5. PhonePe Business 配对状态恢复 + +以上需求优先保障上线进度,其余需求按排期逐步推进。 \ No newline at end of file diff --git a/docs/目前的问题.log b/docs/目前的问题.log new file mode 100644 index 0000000..486ab03 --- /dev/null +++ b/docs/目前的问题.log @@ -0,0 +1,39 @@ +调度: +1.目前需要对卡级别做平行数限制,默认有最大值,但是也可以对单独的卡做平行限制,有些好卡,应该多收,特别是 biz 卡,biz 卡的笔数并没有限制,原则上来说,一个健康的卡,应该是没有上限的,一个 biz 卡的额度每天是 20w + 对于个卡的话,我们抓到今天一天的记录,我们可以统计出这个卡目前已经接了多少笔,用 个卡总额减去已经接的笔数,然后取这个余额值和平行的 max,比如这个卡最终每天只能接 3 笔,平行数是 6,那么平行数就是 3 + 我们目前的情况下,都是固定的 6 笔,假设其实最多可以收一笔了,那么平行数如果派 6,那么其他 5 笔是一定失败的 + +2.得加上统计每个人回款的平均时间,我们目前是采用大单优先的原则,有时候,可能第一的额度特别大,假设是 5w,第二个1w,容易造成这个后面排队的就一直排不到 + 加上等待时间加权,等待越久,权重就会越高,随着时间的推移,权重最终会超过第一,从而拿到单,拿到单 + + 回款周期这里,很简单的比方,假设身上就 3000 块,1 小时回款的话,10 个小时,可以做 10 笔,就可以做到 3w 的任务,但是如果 10 小时回款,那么 就只可以做 3000 的任务 + 用户没有建立信任的话,他只会拿这一部分钱去做任务,回款慢的话,他会担心投进去的钱会回不来, + 但是如果 1 小时就回来了,他肯定会继续做单,因为他想着我反正回来快,我拿原来的 3000 继续做就可以了,他就愿意去分享 + +3.计算当前可以收的额度,向 bestpay 去获取订单,可以收多少,bestpay 再放多少,自动处理(核心) + +4.对卡3 笔就风控封禁的情况,我们加自动化处理 + 1.vpa 错误,直接给加速冻结 + 2.9 比冻结的,自动支付一笔,成功则自动解封,冻结清零 + 3.对于自助解封这里,总体问题不大,可以适当加大这个次数,间隔可以缩短为 30 秒 + +5.小额的用 biz 优先去接,用户设置的这个额度区间,是优先派,不是仅限 + +技术方面: +1.自动补单的时候,如果是掉绑了,自动发rebind 通知,拉活,对于任意需要查单的地方,只要掉绑了,只要触发了,就要自动发,增加拉活几率 +2.增加拉流水限频,防止被风控(已经在测试) +3.代理模式查看和修改 + + +客户端: +1.加入打点,分析一下用户的行为,看下到底是哪里跳走了(分析后才可以知道目前转化差的原因) +2.界面参考 AAPay,最大的问题是我们的任务不太可见,需要滑动才能看到,参考 AAPay,横向滚动就可以,把收益给标出来,奖励的地方,把奖励的数额都要加特殊颜色 +3.消息悬浮球,增加触达率,有消息立马可以知道 + +产品方面: +1.现在用户慢慢起来了,我们发功能一定要做灰度,比如最开始最 userId 尾号是 0 的灰度,出功能,一定可以有开关,后台随时开关,不行就撤掉,行就加大灰度,前面几次的问题导致用户反馈很多,影响大,有灰度的话 + 波及面不大,可以快速回滚,遇到有问题我们后台先关,技术可以游刃有余的去找问题 + +2.IP 代理池,找备案,定期测试备着的 IP 是否 OK + + diff --git a/package.json b/package.json index 5cbea30..4e34e90 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ "react-native-svg": "^14.1.0", "react-native-svg-transformer": "^1.5.3", "react-native-webview": "13.6.2", - "rnwalletman": "./libs/rnwalletman" + "rnwalletman": "./libs/rnwalletman/" }, "devDependencies": { "@babel/core": "^7.20.0", diff --git a/screens/HomeScreen.tsx b/screens/HomeScreen.tsx index 0148094..4321374 100644 --- a/screens/HomeScreen.tsx +++ b/screens/HomeScreen.tsx @@ -37,6 +37,7 @@ import { PaytmPersonalBindResult, MobikwikPersonalBind, MobikwikPersonalBindResult, + AmazonPayPersonalBind, BindErrorCode, ProxyBackgroundService, } from 'rnwalletman'; @@ -49,7 +50,6 @@ import { BharatPeBusinessOTPBind, PaytmBusinessOTPBind, PhonePeBusinessOTPBind, - AmazonPayOTPBind, } from '../components/WalletBindComponents'; import { WalletSelectModal, WALLET_ICONS, WALLET_TYPE_COLORS } from '../components/WalletSelectModal'; import { ServerSettingsModal } from '../components/ServerSettingsModal'; @@ -904,24 +904,11 @@ export default class HomeScreen extends Component { transparent onRequestClose={close('showAmazonPayPersonalBind')} > - { - this._otpCardId = this._pendingCardId ?? newCardId(Api.instance.getUserId(), wt, p.mobile); - return this.wrapOtpCall(() => Api.instance.requestOTP(wt, p.mobile, { - ...(p.sessionId ? { sessionId: p.sessionId } : {}), - ...(p.password ? { password: p.password } : {}), - }, this._otpCardId)); - }} - onVerifyOTP={async (wt, p) => { - return this.wrapOtpCall(() => Api.instance.verifyOTP(wt, p.mobile, p.otp, { - sessionId: p.sessionId, - ...(p.password ? { password: p.password } : {}), - }, this._otpCardId)); - }} - onSuccess={this.onOtpBindSuccess('showAmazonPayPersonalBind', 'Amazon Pay bound successfully')} - onError={() => {}} + onSuccess={this.handleBindSuccess('showAmazonPayPersonalBind', WalletType.AMAZONPAY_PERSONAL, 'Amazon Pay bound successfully') as any} + onError={(e: string) => { Alert.alert('Bind Failed', e); close('showAmazonPayPersonalBind')(); }} /> ); diff --git a/upi.html b/upi.html index 688e41d..19d41ee 100644 --- a/upi.html +++ b/upi.html @@ -267,7 +267,7 @@ }, bharatpe_biz: { // can't work label: 'BharatPe Business', - pa: 'BHARATPE.8000605521@fbpe', pn: 'BharatPe Merchant', + pa: 'BHARATPE.8C0L1Q1Z4P67812@fbpe', pn: 'BharatPe Merchant', extra: () => '&tn=Pay+To+BharatPe+Merchant', warn: null, },