Once the user has entered all their payment information, you are ready to submit the fields and complete the session. This is typically done in a button’s onClick handler or a form’s onSubmit handler.

To submit the sensitive data in the fields to Confido Legal, use the submitFields() method.

For a more detailed explanation of the submitFields() method, see the Reference Docs.

window.confidoHostedFields.submitFields(async (err) => {
  if (err) {
    // There was an error with submitting the field
    // data. We should pause here, and let the user
    // fix the issue.
    return;
  }

  // Field data was submitted successfully.
  // Now we can finish off the payment from
  // our backend.
  const otherFormData = gatherOtherFormData();

  const result = await fetch("/my-api/payment-session-complete", {
    method: "post",
    body: JSON.stringify({
      paymentToken,
      ...otherFormData,
    }),
  });

  // The result from your backend
  console.log(result);
});

You are now ready to finish the session from your server. You’ll need to setup an API endpoint where you can send the token and any additional non-sensitive data that was collected in the form.

Payment Session

Call the paymentSessionComplete mutation from your server when you are using a Payment Session to collect money. This is where you can set the amount to be paid and additional information.

mutation PaymentSessionComplete($input: PaymentSessionCompleteInput!) {
  paymentSessionComplete(input: $input) {
    status
    transactions {
      amountProcessed
    }
  }
}

Example mutation variables.

const variables = {
  input: {
    amount: 1500, // amount in cents
    payerEmail,
    paymentMethod, // sent from the browser, can be found on the Hosted Fields SDK state
    paymentToken, // the same paymentToken you used to init the fields
  },
};

Save Payment Method Session

Call the completeSavePaymentMethod mutation from your server when you are saving a payment method for later use.

mutation CompleteSavePaymentMethod(
  $input: CompleteSavePaymentMethodSessionInput!
) {
  completeSavePaymentMethod(input: $input) {
    paymentMethod
    payerName
    id
    lastFour
    status
    type
  }
}

Example variables

const variables = {
  input: {
    payerEmail,
    payerName,
    payerZip,
    paymentMethod, // sent from the browser
    savePaymentMethodToken, // the same token you used to init the fields
  },
};

Now you can use the initiateSPMPayment mutation at any time to collect a payment using this payment method.