mirror of
https://github.com/vercel/commerce.git
synced 2025-06-07 16:56:59 +00:00
Use example payment method plugin for demo site
Signed-off-by: Chloe <pinkcloudvnn@gmail.com>
This commit is contained in:
parent
0f199bba0e
commit
80f2b72ef8
@ -3,4 +3,3 @@ COMMERCE_PROVIDER=@vercel/commerce-opencommerce
|
|||||||
OPENCOMMERCE_STOREFRONT_API_URL=
|
OPENCOMMERCE_STOREFRONT_API_URL=
|
||||||
OPENCOMMERCE_PRIMARY_SHOP_ID=
|
OPENCOMMERCE_PRIMARY_SHOP_ID=
|
||||||
OPENCOMMERCE_IMAGE_DOMAIN=
|
OPENCOMMERCE_IMAGE_DOMAIN=
|
||||||
OPENCOMMERCE_STRIPE_API_KEY=
|
|
@ -1,16 +1,9 @@
|
|||||||
import Stripe from 'stripe'
|
|
||||||
|
|
||||||
import type { CardFields } from '../../../types/customer/card'
|
|
||||||
import { LineItem } from '../../../types/cart'
|
import { LineItem } from '../../../types/cart'
|
||||||
import placeOrder from '../../mutations/place-order'
|
import placeOrder from '../../mutations/place-order'
|
||||||
import setEmailOnAnonymousCart from '../../mutations/set-email-on-anonymous-cart'
|
import setEmailOnAnonymousCart from '../../mutations/set-email-on-anonymous-cart'
|
||||||
import getCartCookie from '../../utils/get-cart-cookie'
|
import getCartCookie from '../../utils/get-cart-cookie'
|
||||||
import type { CheckoutEndpoint } from '.'
|
import type { CheckoutEndpoint } from '.'
|
||||||
|
|
||||||
const stripe = new Stripe(process.env.OPENCOMMERCE_STRIPE_API_KEY as string, {
|
|
||||||
apiVersion: '2020-08-27',
|
|
||||||
})
|
|
||||||
|
|
||||||
const submitCheckout: CheckoutEndpoint['handlers']['submitCheckout'] = async ({
|
const submitCheckout: CheckoutEndpoint['handlers']['submitCheckout'] = async ({
|
||||||
res,
|
res,
|
||||||
body: { item, cartId },
|
body: { item, cartId },
|
||||||
@ -27,37 +20,13 @@ const submitCheckout: CheckoutEndpoint['handlers']['submitCheckout'] = async ({
|
|||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
const card = item.card as CardFields
|
|
||||||
|
|
||||||
const pm = await stripe.paymentMethods.create({
|
|
||||||
type: 'card',
|
|
||||||
card: {
|
|
||||||
number: card.cardNumber,
|
|
||||||
exp_month: Number(card.cardExpireDate.split('/')[0]),
|
|
||||||
exp_year: Number(card.cardExpireDate.split('/')[1]),
|
|
||||||
cvc: card.cardCvc,
|
|
||||||
},
|
|
||||||
} as Stripe.PaymentMethodCreateParams)
|
|
||||||
|
|
||||||
const result = await stripe.paymentIntents.create({
|
|
||||||
confirm: true,
|
|
||||||
amount: Math.round(item.checkout.cart.checkout.summary.total.amount * 100),
|
|
||||||
currency: item.checkout.cart.currency.code,
|
|
||||||
capture_method: 'manual',
|
|
||||||
metadata: {
|
|
||||||
integration_check: 'accept_a_payment',
|
|
||||||
},
|
|
||||||
payment_method: pm.id,
|
|
||||||
})
|
|
||||||
|
|
||||||
if (result.status === 'succeeded' || result.status === 'requires_capture') {
|
|
||||||
const { data } = await fetch(placeOrder, {
|
const { data } = await fetch(placeOrder, {
|
||||||
variables: {
|
variables: {
|
||||||
input: {
|
input: {
|
||||||
payments: {
|
payments: {
|
||||||
data: { stripePaymentIntentId: result.id },
|
data: { fullName: 'Open Commerce Demo Site' },
|
||||||
amount: item.checkout.cart.checkout.summary.total.amount,
|
amount: item.checkout.cart.checkout.summary.total.amount,
|
||||||
method: 'stripe_payment_intent',
|
method: 'iou_example',
|
||||||
},
|
},
|
||||||
order: {
|
order: {
|
||||||
cartId,
|
cartId,
|
||||||
@ -89,7 +58,7 @@ const submitCheckout: CheckoutEndpoint['handlers']['submitCheckout'] = async ({
|
|||||||
getCartCookie(cartCookie),
|
getCartCookie(cartCookie),
|
||||||
getCartCookie(anonymousCartTokenCookie),
|
getCartCookie(anonymousCartTokenCookie),
|
||||||
])
|
])
|
||||||
}
|
|
||||||
res.status(200).json({ data: null, errors: [] })
|
res.status(200).json({ data: null, errors: [] })
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -53,7 +53,6 @@ NEXT_PUBLIC_COMMERCEJS_DEPLOYMENT_URL=
|
|||||||
OPENCOMMERCE_STOREFRONT_API_URL=
|
OPENCOMMERCE_STOREFRONT_API_URL=
|
||||||
OPENCOMMERCE_PRIMARY_SHOP_ID=
|
OPENCOMMERCE_PRIMARY_SHOP_ID=
|
||||||
OPENCOMMERCE_IMAGE_DOMAIN=
|
OPENCOMMERCE_IMAGE_DOMAIN=
|
||||||
OPENCOMMERCE_STRIPE_API_KEY=
|
|
||||||
|
|
||||||
SFCC_CLIENT_ID=
|
SFCC_CLIENT_ID=
|
||||||
SFCC_CLIENT_SECRET=
|
SFCC_CLIENT_SECRET=
|
||||||
|
@ -68,7 +68,6 @@ const PaymentMethodView: FC = () => {
|
|||||||
name="cardNumber"
|
name="cardNumber"
|
||||||
className={s.input}
|
className={s.input}
|
||||||
defaultValue={cardFields.cardNumber}
|
defaultValue={cardFields.cardNumber}
|
||||||
required
|
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div className={cn(s.fieldset, 'col-span-3')}>
|
<div className={cn(s.fieldset, 'col-span-3')}>
|
||||||
@ -78,7 +77,6 @@ const PaymentMethodView: FC = () => {
|
|||||||
className={s.input}
|
className={s.input}
|
||||||
placeholder="MM/YY"
|
placeholder="MM/YY"
|
||||||
defaultValue={cardFields.cardExpireDate}
|
defaultValue={cardFields.cardExpireDate}
|
||||||
required
|
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div className={cn(s.fieldset, 'col-span-2')}>
|
<div className={cn(s.fieldset, 'col-span-2')}>
|
||||||
@ -87,7 +85,6 @@ const PaymentMethodView: FC = () => {
|
|||||||
name="cardCvc"
|
name="cardCvc"
|
||||||
className={s.input}
|
className={s.input}
|
||||||
defaultValue={cardFields.cardCvc}
|
defaultValue={cardFields.cardCvc}
|
||||||
required
|
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user