Shopware API & PayPal CardFields

Okay für all jene die über Google auf diesen Beitrag stoßen.
So funktionierts:

  1. PayPal CardFields über die PayPal SDK rendern
  2. die CreateOrder Methode der PayPal SDK muss /paypal/express/create-order aufrufen
    z.B (ob „product: „acdc“ sein muss oder nicht, weiß ich leider nicht“)
const response = await apiClient.invoke(
          'payPalCreateOrder post /paypal/express/create-order',
          {
            body: {
              product: 'acdc',
            },
          },
        )
        return response.data.token
  1. Der Response von 2 ist die orderID von PayPal.
  2. in onApprove von PayPal rufen createOrder von Shopware auf sowie handlePayment im Anschluss.
    z.B
order.value = await createOrder({
    orderId,
  })
  const finishUrl = `${window.location.origin}/${locale.value}/checkout/order/${order.value.id}/paid`
  const errorUrl = `${window.location.origin}/${locale.value}/checkout/order/${order.value.id}/failed`
  const handledPaymentResponse = await apiClient.invoke(
    'handlePayment post /handle-payment',
    {
      query: {
        orderId: order.value.id,
        finishUrl,
      },
      body: {
        orderId: order.value.id,
        product: 'acdc',
        paypalOrderId: orderId,
      },
    },
  )
  1. Danach muss die Transaktion in PayPal noch bestätigt bzw. „captured“ werden. Wir haben uns eine eigene Caputre Payment Backend Route geschaffen die das erledigt.
  2. Der Response vomm Handlepayment aus SChritt 4 gibt eine „Finalize Transaction“ URL zurück. Die rufen wir mit einem GET Request auf.
  3. Erledigt und die Bestellung sollte als Bezahlt markiert sein.