当前位置: 首页 > news >正文

苏州网站建设书生亿级流量网站架构

苏州网站建设书生,亿级流量网站架构,淘宝网站建设策划报告,公司做网站推广这里要准备好几个东西: 一个支付成功过后的回调 还有一个下单的接口 一旦进入这个下单界面,就要去调下单的接口的,用 post, 这个 接口你自己写,可以写在后端中,也可以放到 nextjs 的 api 中。 首先说的是这个下单…

在这里插入图片描述
这里要准备好几个东西:

一个支付成功过后的回调

还有一个下单的接口

一旦进入这个下单界面,就要去调下单的接口的,用 post,

这个 接口你自己写,可以写在后端中,也可以放到 nextjs 的 api 中。

首先说的是这个下单接口

可以这样写:

import { NextRequest, NextResponse } from "next/server";
const stripe = require("stripe")(process.env.STRIPE_SECRET_KEY);export async function POST(request: NextRequest) {try {const { amount } = await request.json();const paymentIntent = await stripe.paymentIntents.create({amount: amount,currency: "usd",automatic_payment_methods: { enabled: true },});return NextResponse.json({ clientSecret: paymentIntent.client_secret });} catch (error) {console.error("Internal Error:", error);// Handle other errors (e.g., network issues, parsing errors)return NextResponse.json({ error: `Internal Server Error: ${error}` },{ status: 500 });}
}

这个东西一般是放后端,因为有个 secrets key,原则 nextjs 的 api 也算是后端。

要传入的参数呢,只有一个是金额,一个是 secret key ,

返回的信息是给前端用的,一个 client secret key.

可以理解为一个通用凭证。

前端怎么利用这个 key 。

    const { error } = await stripe.confirmPayment({elements,clientSecret,confirmParams: {return_url: `http://www.localhost:3000/payment-success?amount=${amount}`,},});

这个 elements 是 stripe 自带的,要利用到里面的一些组件,比如你开了 wechat 就要自动显示。

而不是自己写页面。

clientSecret 这个 client key 就是从后端返回的。

大约就是这样简单,最后这个 return url 中的。

我不太清楚,这样的话,还需要 webhook 吗,还需要去验证。

整个表单的代码我放一下:

"use client";import React, { useEffect, useState } from "react";
import {useStripe,useElements,PaymentElement,
} from "@stripe/react-stripe-js";
import convertToSubcurrency from "@/lib/convertToSubcurrency";const CheckoutPage = ({ amount }: { amount: number }) => {const stripe = useStripe();const elements = useElements();const [errorMessage, setErrorMessage] = useState<string>();const [clientSecret, setClientSecret] = useState("");const [loading, setLoading] = useState(false);useEffect(() => {fetch("/api/create-payment-intent", {method: "POST",headers: {"Content-Type": "application/json",},body: JSON.stringify({ amount: convertToSubcurrency(amount) }),}).then((res) => res.json()).then((data) => setClientSecret(data.clientSecret));}, [amount]);const handleSubmit = async (event: React.FormEvent<HTMLFormElement>) => {event.preventDefault();setLoading(true);if (!stripe || !elements) {return;}const { error: submitError } = await elements.submit();if (submitError) {setErrorMessage(submitError.message);setLoading(false);return;}const { error } = await stripe.confirmPayment({elements,clientSecret,confirmParams: {return_url: `http://www.localhost:3000/payment-success?amount=${amount}`,},});if (error) {// This point is only reached if there's an immediate error when// confirming the payment. Show the error to your customer (for example, payment details incomplete)setErrorMessage(error.message);} else {// The payment UI automatically closes with a success animation.// Your customer is redirected to your `return_url`.}setLoading(false);};if (!clientSecret || !stripe || !elements) {return (<div className="flex items-center justify-center"><divclassName="inline-block h-8 w-8 animate-spin rounded-full border-4 border-solid border-current border-e-transparent align-[-0.125em] text-surface motion-reduce:animate-[spin_1.5s_linear_infinite] dark:text-white"role="status"><span className="!absolute !-m-px !h-px !w-px !overflow-hidden !whitespace-nowrap !border-0 !p-0 ![clip:rect(0,0,0,0)]">Loading...</span></div></div>);}return (<form onSubmit={handleSubmit} className="bg-white p-2 rounded-md">{clientSecret && <PaymentElement />}{errorMessage && <div>{errorMessage}</div>}<buttondisabled={!stripe || loading}className="text-white w-full p-5 bg-black mt-2 rounded-md font-bold disabled:opacity-50 disabled:animate-pulse">{!loading ? `Pay $${amount}` : "Processing..."}</button></form>);
};export default CheckoutPage;
http://www.yayakq.cn/news/703733/

相关文章:

  • 网站上线做什么音乐网页制作素材
  • 猪八戒设计网站如何做兼职上海营销型网站建站
  • 长沙高新区建设局网站网站制作工作室专业公司
  • 河南平价的seo整站优化定制网站建设需要材料
  • 漂亮的数据型网站在线crm在线oa免费
  • 如何建立网站详细流程app开发流程大致包括
  • 电子商务网站建设及其相关法律问题开通招聘网站如何做分录
  • 企业站网站建设一个主机建多少个网站
  • 做网站来钱快手机ppt制作软件
  • 网站开发网上悼念最吸引人的营销广告词
  • 可以做驾校推广的网站网站后台修改图片
  • 网站开发算法高端旅游网站制作
  • 专做奢侈品的网站网站策划书怎么做的美观
  • 网站弹窗是怎么做的文章分享网站模版
  • 外贸网站优化免费渠道o2o网站咋建设
  • 顺德品牌网站建设公司如何免费做网站推广的
  • 网站项目策划书方案成都网站建设-中国互联
  • 公司建设网站费用会计分录全屋定制软件
  • 网站做关键词排名ui设计素材网站有哪些
  • 重庆手机网站建设公司解释网站为什么这样做
  • 网站怎么做页面解析跳转微信公众平台小程序助手
  • 绥化网站建设兼职WordPress如何清空评论
  • 无锡网站的优化学编程课对孩子有什么好处
  • 网站建设教程 第十课 cf战队网站制作教程和源码怎能建设个人网站
  • 网站首页被k多久恢复福建建设执业资格官网
  • 题库网站开发软件技术的就业前景
  • 做时时的网站创作平台有哪些
  • discuz 企业网站网站搭建与服务器配置
  • 顺企网赣州网站建设厦门做网站多少钱
  • 建设银行银监会官方网站怎样免费开网店