# java项目 **Repository Path**: zhang_hou/java-project ## Basic Information - **Project Name**: java项目 - **Description**: No description available - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-01-21 - **Last Updated**: 2025-01-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 如果取消订单进行退款的时候,微信退款报失败了,请问这个时候订单状态怎么变化?是保持支付成功还是设置为已取消? # tb_adopted_tree_order表的id,是微信支付交易记录表tb_weixin_trade_cp的outTradeNo package com.wechat.pay.java.service.partnerpayments.nativepay package com.wechat.pay.java.service.payments.nativepay; 这俩包下面都有个NativePayService,上面的是服务商 下面是普通直连商户 计微信支付相关的表结构时,我们可以考虑以下几个表来记录支付流程和退款情况: # 下面关于订单支付相关的表指的是认养树的订单: 1、订单表(tb_adopted_tree_order):用于记录支付订单的基本信息,例如订单号、用户ID、支付金额、支付状态等。 字段 类型 描述 id INT 订单ID order_number VARCHAR(255) 订单号 user_id INT 用户ID amount DECIMAL(10,2) 支付金额 status INT 支付状态 (0:未支付, 1:已支付, 2:已退款) created_at DATETIME 创建时间 updated_at DATETIME 更新时间 2、支付记录表(tb_weixin_trade_cp):用于记录每次支付的详细信息,包括支付方式、支付成功时间等。 字段 类型 描述 id INT 支付记录ID order_id INT 订单ID payment_method VARCHAR(255) 支付方式 transaction_id VARCHAR(255) 微信支付交易ID payment_time DATETIME 支付成功时间 created_at DATETIME 创建时间 updated_at DATETIME 更新时间 3、退款记录表(tb_order_return):用于记录每次退款的详细信息,包括退款金额、退款状态等。 字段 类型 描述 id INT 退款记录ID order_id INT 订单ID refund_number VARCHAR(255) 退款单号 refund_amount DECIMAL(10,2) 退款金额 refund_status INT 退款状态 (0:未退款, 1:已退款) created_at DATETIME 创建时间 updated_at DATETIME 更新时间 # 下面关于订单支付相关的表指的是APP里面用户购买商品的订单: 先创建tb_order, 然后创建tb_team_buy 然后创建tb_team_buy_order,OrderId就是tb_order表的id,teamBuyId(关联拼团id)是tb_team_buy表id tb_order_pay --订单支付详情 tb_order_return --订单退款表 tb_order_logistics ----订单物流详情表 做过微信开发的同学,多多少少都会涉及到用户的唯一标示的问题。由于微信牢牢把控着用户的信息,因此当你需要在微信平台中获取用户的标示信息,必然要通过微信的平台接口来获取 wx.login(Object object)这个接口,它返回了一个code值,表示用户登录凭证(有效期五分钟),光有code还是不行,继续在文档中找,发现这个code是和appid,secret,一起访问微信的接口,然后可以得到openId和unionid 表示用户在你的当前应用中的唯一标示,比如小程序,微信公众号等,这些都算是一个应用,如果你有多个应用,同一个用户的openId可能并不相同 借用微信官方文档中的话来说,如果开发者拥有多个移动应用、网站应用、和公众帐号(包括小程序),可通过 UnionID 来区分用户的唯一性,因为只要是同一个微信开放平台帐号下的移动应用、网站应用和公众帐号(包括小程序),用户的 UnionID 是唯一的。换句话说,同一用户,对同一个微信开放平台下的不同应用,unionid是相同的 同一个用户,在你的多个应用中,openid可能都不相同;但是,unionid一定会相同的。所以,如果你有多个小程序或者微信公众号,需要确定是否为同一个用户的时候,就需要unionid来确定。 tb_asset_count资产统计表 tb_asset_detail资产详情表 真正可以提现的账户就是RMB账户。 假如飞飞你是创始人,假如你现在的账户明细分别为: 云茶籽:50000 消费金红包:30000 茶油卡:100 余额:50 假设你现在推荐芳姐认养10棵树,做普通会员,那你的账户变化为:(我推荐A认养了1颗油茶树,我可以获得¥225的奖励,解冻¥75云茶籽) 云茶籽:49250 消费金红包:30000 茶油卡:100 余额:3050 每棵树225现金奖励(10课)+750云茶籽释放的 假设你现在推荐芳姐认养10棵树,做创始人,那你的账户变化为:(我推荐创始人A认养了1颗油茶树,我可以获得¥225的奖励,解冻¥225云茶籽) 云茶籽:47750 消费金红包:30000 茶油卡:100 余额:4550 推荐A创始人认养油茶,他每认养1棵油茶树,推荐奖励225元现金,同时释放225云茶籽,要求最低20棵,那就是推荐奖励4500元,同时释放4500云茶籽,加起来余额账户内,会增加9000元,云茶籽账户会减少4500 假设现在我认养10颗油茶树,我可以获得75×10云茶籽,获得750×10消费金红包,获得4×10张茶油卡;但是如果我认养的油茶树低于10棵树,就只能获得750×认养数量的消费金红包,获得4×认养数量的茶油卡 一、认养树订单 认养树订单成功支付会进行回调,服务端收到回调之后: 1、写“微信支付交易记录表tb_weixin_trade_cp”记录 2、更新“订单表tb_adopted_tree_order”交易状态为已支付 (1)若赠送的云茶籽orderYunChaSeed>0: a、假如是在2024年1月1日之前认养的,更新或者新增资产统计表里的余额remainder=remainder+orderYunChaSeed,交易类型=ADOPTED_TREE,资产类型=YUN_CHA_SEED,新增资产明细表tb_asset_detail记录 b、假如是在2024年1月1日之后认养的,更新或者新增资产统计表里的余额remainder=remainder+orderYunChaSeed,交易类型=ADOPTED_TREE,资产类型=NEW_YUN_CHA_SEED,新增资产明细表tb_asset_detail记录 (2)若赠送的茶油卡orderTeaOilCard>0: a、更新或者新增资产统计表里的余额remainder=remainder+orderYunChaSeed,交易类型=ADOPTED_OIL_CARD,资产类型=TEA_OIL_CARD,新增资产明细表tb_asset_detail记录 (3)若赠送的消费金红包orderConsumerGoldRedEnvelope>0: a、更新或者新增资产统计表里的余额remainder=remainder+orderYunChaSeed,交易类型=ADOPTED_CONSUMER_GOLD_RED_ENVELOPE,资产类型=CONSUMER_GOLD_RED_ENVELOPE,新增资产明细表tb_asset_detail记录 3、支付成功认养后,更新会员表tb_member,将芯禾会员升级为家园天使,更新认养总的数量 4、(非导入用户)若用户是创始人&&认养总数>创始人首次购买数量20&&存在上级推荐人,给推荐人分配资产奖励(认养者是创始人,且有推荐人) a、更新推荐人脱离关系前的认养数量disengageNo=订单表tb_adopted_tree_order的amount b、解除会员的推荐关系member.setParentCode(null); c、查询推荐人的“云茶籽YUN_CHA_SEED”账户剩余remainder 1、若剩余的云茶籽YUN_CHA_SEED资产>=配置的推荐创始人解冻云茶籽2250,余额够解冻的 更新或者新增资产统计表里的余额remainder=remainder-2250,交易类型=RECOMMEND_FOUNDER_THAWING,资产类型=YUN_CHA_SEED,新增资产明细表tb_asset_detail记录 更新或者新增资产统计表里的人民币余额remainder=remainder+2250,交易类型=RECOMMEND_FOUNDER_THAWING,资产类型=RMB,新增资产明细表tb_asset_detail记录 2、若剩余的云茶籽YUN_CHA_SEED资产(假设1000)<配置的推荐创始人解冻云茶籽2250,余额不够解冻的,YUN_CHA_SEED余额有多少解冻多少,再看看NEW_YUN_CHA_SEED有没有剩余的 更新或者新增资产统计表里的余额remainder=remainder-1000,交易类型=RECOMMEND_FOUNDER_THAWING,资产类型=YUN_CHA_SEED,新增资产明细表tb_asset_detail记录 更新或者新增资产统计表里的人民币余额remainder=remainder+1000,交易类型=RECOMMEND_FOUNDER_THAWING,资产类型=RMB,新增资产明细表tb_asset_detail记录 还差1250对吧。那就再看一下云茶籽NEW_YUN_CHA_SEED资产有没有剩余的: a、若剩余的云茶籽NEW_YUN_CHA_SEED资产>=1250,余额够解冻的 更新或者新增资产统计表里的余额remainder=remainder-1250,交易类型=RECOMMEND_FOUNDER_THAWING,资产类型=NEW_YUN_CHA_SEED,新增资产明细表tb_asset_detail记录 更新或者新增资产统计表里的人民币余额remainder=remainder+1250,交易类型=RECOMMEND_FOUNDER_THAWING,资产类型=RMB,新增资产明细表tb_asset_detail记录 b、若剩余的云茶籽NEW_YUN_CHA_SEED资产(假设1000)<1250,余额不够解冻的,NEW_YUN_CHA_SEED余额有多少解冻多少 更新或者新增资产统计表里的余额remainder=remainder-1000,交易类型=RECOMMEND_FOUNDER_THAWING,资产类型=NEW_YUN_CHA_SEED,新增资产明细表tb_asset_detail记录 更新或者新增资产统计表里的人民币余额remainder=remainder+1000,交易类型=RECOMMEND_FOUNDER_THAWING,资产类型=RMB,新增资产明细表tb_asset_detail记录 5、认养者是普通会员,且有推荐人 a、查询推荐人的“云茶籽YUN_CHA_SEED”账户剩余remainder 1、若剩余的云茶籽YUN_CHA_SEED资产>=配置的推荐普通会员解冻云茶籽75,余额够解冻的 更新或者新增资产统计表里的余额remainder=remainder-75,交易类型=TWO_THAW_YUN_CHA_SEED,资产类型=YUN_CHA_SEED,新增资产明细表tb_asset_detail记录 更新或者新增资产统计表里的人民币余额remainder=remainder+75,交易类型=TWO_THAW_YUN_CHA_SEED,资产类型=RMB,新增资产明细表tb_asset_detail记录 2、若剩余的云茶籽YUN_CHA_SEED资产(假设50)<配置的推荐普通会员解冻云茶籽75,余额不够解冻的,YUN_CHA_SEED余额有多少解冻多少,再看看NEW_YUN_CHA_SEED有没有剩余的 更新或者新增资产统计表里的余额remainder=remainder-50,交易类型=TWO_THAW_YUN_CHA_SEED,资产类型=YUN_CHA_SEED,新增资产明细表tb_asset_detail记录 更新或者新增资产统计表里的人民币余额remainder=remainder+50,交易类型=TWO_THAW_YUN_CHA_SEED,资产类型=RMB,新增资产明细表tb_asset_detail记录 还差25对吧。那就再看一下云茶籽NEW_YUN_CHA_SEED资产有没有剩余的: a、若剩余的云茶籽NEW_YUN_CHA_SEED资产>=25,余额够解冻的 更新或者新增资产统计表里的余额remainder=remainder-25,交易类型=TWO_THAW_YUN_CHA_SEED,资产类型=NEW_YUN_CHA_SEED,新增资产明细表tb_asset_detail记录 更新或者新增资产统计表里的人民币余额remainder=remainder+25,交易类型=TWO_THAW_YUN_CHA_SEED,资产类型=RMB,新增资产明细表tb_asset_detail记录 b、若剩余的云茶籽NEW_YUN_CHA_SEED资产(假设10)<25,余额不够解冻的,NEW_YUN_CHA_SEED余额有多少解冻多少 更新或者新增资产统计表里的余额remainder=remainder-10,交易类型=TWO_THAW_YUN_CHA_SEED,资产类型=NEW_YUN_CHA_SEED,新增资产明细表tb_asset_detail记录 更新或者新增资产统计表里的人民币余额remainder=remainder+10,交易类型=TWO_THAW_YUN_CHA_SEED,资产类型=RMB,新增资产明细表tb_asset_detail记录 b、推荐人现金红包奖励225 更新或者新增资产统计表里的人民币余额remainder=remainder+225,交易类型=TWO_THAW_REWARD,资产类型=RMB,新增资产明细表tb_asset_detail记录 c、间接推荐人奖励。查询间接推荐人的“云茶籽YUN_CHA_SEED”账户剩余remainder 1、若剩余的云茶籽YUN_CHA_SEED资产>=配置的间接推荐人解冻云茶籽45,余额够解冻的 更新或者新增资产统计表里的余额remainder=remainder-45,交易类型=THREE_THAW_YUN_CHA_SEED,资产类型=YUN_CHA_SEED,新增资产明细表tb_asset_detail记录 更新或者新增资产统计表里的人民币余额remainder=remainder+45,交易类型=THREE_THAW_YUN_CHA_SEED,资产类型=RMB,新增资产明细表tb_asset_detail记录 2、若剩余的云茶籽YUN_CHA_SEED资产(假设20)<配置的推荐普通会员解冻云茶籽45,余额不够解冻的,YUN_CHA_SEED余额有多少解冻多少,再看看NEW_YUN_CHA_SEED有没有剩余的 更新或者新增资产统计表里的余额remainder=remainder-20,交易类型=THREE_THAW_YUN_CHA_SEED,资产类型=YUN_CHA_SEED,新增资产明细表tb_asset_detail记录 更新或者新增资产统计表里的人民币余额remainder=remainder+20,交易类型=THREE_THAW_YUN_CHA_SEED,资产类型=RMB,新增资产明细表tb_asset_detail记录 还差25对吧。那就再看一下云茶籽NEW_YUN_CHA_SEED资产有没有剩余的: a、若剩余的云茶籽NEW_YUN_CHA_SEED资产>=25,余额够解冻的 更新或者新增资产统计表里的余额remainder=remainder-25,交易类型=THREE_THAW_YUN_CHA_SEED,资产类型=NEW_YUN_CHA_SEED,新增资产明细表tb_asset_detail记录 更新或者新增资产统计表里的人民币余额remainder=remainder+25,交易类型=THREE_THAW_YUN_CHA_SEED,资产类型=RMB,新增资产明细表tb_asset_detail记录 b、若剩余的云茶籽NEW_YUN_CHA_SEED资产(假设10)<25,余额不够解冻的,NEW_YUN_CHA_SEED余额有多少解冻多少 更新或者新增资产统计表里的余额remainder=remainder-10,交易类型=THREE_THAW_YUN_CHA_SEED,资产类型=NEW_YUN_CHA_SEED,新增资产明细表tb_asset_detail记录 更新或者新增资产统计表里的人民币余额remainder=remainder+10,交易类型=THREE_THAW_YUN_CHA_SEED,资产类型=RMB,新增资产明细表tb_asset_detail记录 d、间接推荐人现金红包奖励105 更新或者新增资产统计表里的人民币余额remainder=remainder+105,交易类型=THREE_THAW_REWARD,资产类型=RMB,新增资产明细表tb_asset_detail记录 tip:认养树订单不允许退款,因为很多奖励金有的都已经定时发放到账户了,购买app里面的商品可以退款 二、app商品订单 商品订单成功支付会进行回调,服务端收到回调之后: 1、更新订单表tb_order的状态为“已支付” 2、更新商品订单项详情表tb_order_item的状态为“已支付” 3、若拼团订单存在, a、更新组团购买详情表tb_team_buy的支付人数+1 若支付人数=拼图所需人数: 将组团购买详情表tb_team_buy的状态更新为“组团成功”,将拼团订单详情表tb_team_buy_order状态由“拼团中”改为“拼团成功” 若支付人数!=拼图所需人数: 将组团购买详情表tb_team_buy的状态更新为“组团中” 4、新增订单支付详情表tb_order_pay记录 商品订单退款支付会进行回调,服务端收到回调之后: 保存订单退款: 1、新增订单退款详情表记录 2、更新商品订单项详情表状态为“申请售后” 3、更新订单表状态为“售后” tb_goods --商品表 tb_seckill_goods --秒杀商品表 tb_team_goods --拼团商品表 添加购物车逻辑: 1、往tb_order_item(商品订单项详情表)存记录 订单类型为COMMON("普通订单") SECKILL("秒杀订单") EAM("拼团订单")中的一个 状态为SHOP_CART"购物车" 订单id没值,因为这个时候还只是购物车,并没有形成订单 2、添加立即购买时,状态为SAVED"保存"