|
|
发表于 2023-6-16 20:43:37
|
显示全部楼层
- try {
- if (req.body?.channel && req.body?.channel === 'alipay') {
- const { body, out_trade_no, trade_status, trade_no } = req.body;
- // 获取订单信息根据回调订单号查询
- const orderInfo = await models_1.orderModel.getOrderInfo(out_trade_no);
- // 判断订单不存在 或者 点点多状态是未支付直接返回结束
- if (!orderInfo || (orderInfo.trade_status !== 'TRADE_AWAIT' && orderInfo.trade_status !== 'WAIT_BUYER_PAY')) {
- res.json('fail');
- return;
- }
- const { payment_id, user_id, product_id } = JSON.parse(body);
- // 校验签名
- const isCheck = await checkNotifySign(payment_id, req.body, req.body?.channel);
- if (!isCheck) {
- res.json('fail');
- return;
- }
- //在支付宝的业务通知中,只有交易通知状态为 TRADE_SUCCESS 或 TRADE_FINISHED 时,支付宝才会认定为买家付款成功。
- //如果签约的产品支持退款,并且对应的产品默认支持能收到 TRADE_SUCCESS 或 TRADE_FINISHED 状态,该笔交易会先收到 TRADE_SUCCESS 交易状态,然后默认12个月该笔交易会再次收到 TRADE_FINISHED 状态。实际该笔交易只支付了一次,切勿认为该笔交易支付两次。
- if (trade_status !== 'TRADE_SUCCESS') {
- // 修改订单信息
- await models_1.orderModel.editOrder({
- id: out_trade_no,
- trade_status,
- trade_no,
- notify_info: JSON.stringify(req.body)
- });
- res.json('success');
- return;
- }
- const modifyResult = await batchModify({
- order_id: out_trade_no,
- trade_status,
- trade_no,
- notify_info: JSON.stringify(req.body),
- user_id,
- product_id
- });
- if (!modifyResult) {
- res.json('fail');
- return;
- }
- }
- if (req.query?.channel && req.query?.channel === 'yipay') {
- const { out_trade_no, trade_status, trade_no } = req.query;
- const orderInfo = await models_1.orderModel.getOrderInfo(out_trade_no);
- if (!orderInfo || orderInfo.trade_status !== 'WAIT_BUYER_PAY') {
- res.json('fail');
- return;
- }
- const { payment_id, user_id, product_id } = JSON.parse(decodeURIComponent(req.query?.param));
- const isCheck = await checkNotifySign(payment_id, req.query, req.query?.channel);
- if (!isCheck) {
- res.json('fail');
- return;
- }
- const modifyResult = await batchModify({
- order_id: out_trade_no,
- trade_status,
- trade_no,
- notify_info: JSON.stringify(req.query),
- user_id,
- product_id
- });
- if (!modifyResult) {
- res.json('fail');
- return;
- }
- }
- }
复制代码
- {
- title: '订单状态',
- dataIndex: 'trade_status',
- width: 180,
- render: (_, data) => {
- const status: { [key: string]: { [key: string]: string } } = {
- TRADE_AWAIT: {
- color: 'orange',
- text: '等待支付'
- },
- WAIT_BUYER_PAY: {
- color: 'orange',
- text: '等待支付'
- },
- TRADE_SUCCESS: {
- color: 'green',
- text: '支付成功'
- },
- TRADE_CLOSED: {
- color: 'red',
- text: '订单关闭'
- },
- TRADE_FINISHED: {
- color: 'purple',
- text: '订单完毕'
- }
- }
- return <Tag color={status[data.trade_status].color}>{status[data.trade_status].text}</Tag>
- }
- },
复制代码
试试看 我自己改了下。。我这边是因为当面付创建订单了有回调。之前的代码是支付宝有回调就支付成功了。代码里面没判断回调状态 然后就一直未付款 |
|