如何实现沙箱支付

 const getpay = (price: string) => {
    setInterval(() => {
      axios
        .get("http://localhost:3000/payprice/getpay", { params: { price } })
        .then((res) => {
          console.log(res);
          if (res.data.code === 0) {
            alert(res.data.msg);
          } else {
            switch (res.data.type) {
              case "WAIT_BUYER_PAY":
                return alert("交易创建,等待买家付款");
                break;
              case "TRADE_CLOSED":
                return alert("未付款交易超时关闭,或支付完成后全额退款");
                break;
              case "TRADE_SUCCESS":
                return alert("交易支付成功");
                break;

              default:
                break;
            }
          }
        });
    }, 3000);
  };

前端编写接口使用定时器支付通过返回的状态码确定支付状态

后端使用的是用MongoDB编写后端接口

  async payprice(ctx) {
    const { price } = ctx.request.query;
    const bizContent = {
      out_trade_no: price,
      product_code: "FAST_INSTANT_TRADE_PAY",
      subject: "abc",
      body: "234",
      total_amount: "0.01",
    };
    const result = alipaySdk.pageExec("alipay.trade.page.pay", {
      method: "GET",
      bizContent,
      returnUrl: "http://127.0.0.1:5173/home/pay",
    });
    ctx.body = {
      code: 200,
      msg: "支付成功",
      result,
    };
  }
  async getpay(ctx) {
    const { price } = ctx.request.query;
    const bizContent = {
      out_trade_no: price,
    };
    const result = alipaySdk.pageExec("alipay.trade.query", {
      method: "GET",
      bizContent,
      returnUrl: "http://127.0.0.1:5173/home/pay",
    });
    let { data } = await axios.get(result);
    console.log(data);
    switch (data.alipay_trade_query_response.code) {
      case "10000":
        switch (data.alipay_trade_query_response.trade_status) {
          case "WAIT_BUYER_PAY":
            return (ctx.body = {
              code: 1,
              type: "WAIT_BUYER_PAY",
              msg: "交易创建,等待买家付款",
            });
            break;
          case "TRADE_CLOSED":
            return (ctx.body = {
              code: 1,
              type: "TRADE_CLOSED",
              msg: "未付款交易超时关闭,或支付完成后全额退款",
            });
            break;
          case "TRADE_SUCCESS":
            return (ctx.body = {
              code: 1,
              type: "TRADE_SUCCESS",
              msg: "交易支付成功",
            });
            break;
          case "TRADE_FINISHED":
            return (ctx.body = {
              code: 1,
              type: "TRADE_FINISHED",
              msg: "交易结束,不可退款",
            });
            break;
          default:
            ctx.body={
               code: 0,
              msg: "交易失败",
            }
            break;
        }
        break;

      default:
          ctx.body={
               code: 0,
              msg: "交易创件,等待买家付款",
            }
        break;
    }
  }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值