Med Repejos JavaScript API kan ni bygga egna knappar och flöden för engångsgåvor och ändå använda Apple Pay eller Google Pay. API:et bygger på en checkout short code och fungerar direkt i webbläsaren.
Obs: Det går bara att använda API:et med en engångscheckout som har Apple Pay och Google Pay aktiverat.
checkout_short_code.
paymentMethods
och aktivera eller visa/göm knapparna för respektive betalmetod.
initiateOneTimeDonation.
<button id="donate_apple_pay_button">Donera 100 kr med Apple Pay</button>
<button id="donate_google_pay_button">Donera 100 kr med Google Pay</button>
<script src="https://app.repejo.se/assets/repejo.js"></script>
<script>
(async () => {
const session = await window.Repejo.createSession("DIN_SHORT_CODE");
const donateApplePayButton = document.getElementById("donate_apple_pay_button");
const donateGooglePayButton = document.getElementById("donate_google_pay_button");
session.on("paymentMethods", (methods) => {
const paymentMethods = Array.isArray(methods) ? methods : [];
donateApplePayButton.disabled = !paymentMethods.includes("apple_pay");
donateGooglePayButton.disabled = !paymentMethods.includes("google_pay");
});
async function donate(method) {
const result = await session.initiateOneTimeDonation({
amount: 10000,
label: "Donation 100 SEK",
currency: "sek",
country: "SE",
payment_method: method
});
console.log(result);
}
donateApplePayButton.addEventListener("click", () => donate("apple_pay"));
donateGooglePayButton.addEventListener("click", () => donate("google_pay"));
})();
</script>
type RepejoPaymentMethod = "apple_pay" | "google_pay";
// Alla fält är valfria. Utelämnade eller tomma fält skickas inte.
type RepejoPayerDetails = {
name?: string;
phone_number?: string;
email?: string;
};
type InitiateOneTimeDonationOptions = {
// Belopp i ore (minsta valutanheten), t.ex. 1000 = 10 SEK
amount: number;
label: string;
currency: "sek";
country: "SE";
payment_method: RepejoPaymentMethod;
payer?: RepejoPayerDetails;
};
type OneTimeDonation = {
amount: number;
currency: string;
country: string;
};
// errors mappar fältnamn ("name" | "phone_number" | "email") till ett
// lokaliserat meddelande. När detta returneras har betalrutan aldrig
// öppnats och ingenting har debiterats.
type RepejoValidationError = {
type: "validation_error";
errors: Record<string, string>;
};
type InitiateOneTimeDonationResult =
| "cancelled"
| Error
| OneTimeDonation
| RepejoValidationError;
initiateOneTimeDonation(
options: InitiateOneTimeDonationOptions
): Promise<InitiateOneTimeDonationResult>;
Skicka med ett valfritt payer-objekt till
initiateOneTimeDonation
för att koppla namn, telefonnummer och e-post till gåvan. Uppgifterna
knyts till givarposten så att handläggare kan identifiera och kontakta
givaren i efterhand.
name, phone_number, email) är valfria.
Exemplet nedan är komplett och kan kopieras rakt av — det definierar både fälten och avläsningen:
<input id="payer_name" placeholder="Namn" />
<input id="payer_phone" placeholder="Mobilnummer" />
<input id="payer_email" type="email" placeholder="E-postadress" />
<div id="payer_errors"></div>
<button id="donate_button" disabled>Donera 100 kr</button>
<script src="https://app.repejo.se/assets/repejo.js"></script>
<script>
(async () => {
const session = await window.Repejo.createSession("DIN_SHORT_CODE");
const button = document.getElementById("donate_button");
const errors = document.getElementById("payer_errors");
session.on("paymentMethods", (methods) => {
const list = Array.isArray(methods) ? methods : [];
button.disabled = !list.includes("apple_pay");
});
button.addEventListener("click", async () => {
const result = await session.initiateOneTimeDonation({
amount: 10000,
label: "Donation 100 SEK",
currency: "sek",
country: "SE",
payment_method: "apple_pay",
payer: {
name: document.getElementById("payer_name").value,
phone_number: document.getElementById("payer_phone").value,
email: document.getElementById("payer_email").value
}
});
if (result && result.type === "validation_error") {
errors.textContent = Object.values(result.errors).join(" · ");
}
});
})();
</script>
Ogiltiga uppgifter returneras som ett
validation_error
utan att betalrutan öppnas (se Felhantering). För
telefonnummer gäller formaten som beskrivs under Telefonnummerformat.
initiateOneTimeDonation
kan returnera ett
validation_error
där errors
mappar
fältnamn (name, phone_number, email) till ett
lokaliserat felmeddelande. När detta returneras har betalrutan aldrig
öppnats och ingenting har debiterats — visa
meddelandena för givaren och låt dem rätta uppgifterna.
"cancelled" —
givaren stängde Apple Pay-/Google Pay-rutan.
Error —
ett generellt fel eller ett betalfel från Stripe.
RepejoValidationError
— ogiltiga givaruppgifter (se ovan).
OneTimeDonation
— gåvan genomfördes.
Telefonnummer tolkas som svenska som standard. Dessa format accepteras: 0701234567,
+46701234567
och 46701234567.
Nummer från andra länder måste
innehålla
landskod. Numret måste vara ett mobilnummer
— fasta
nummer avvisas. Ogiltiga nummer ger ett
validation_error
med errors.phone_number.
E-postadressen trimmas på blanksteg. Fritextfält (namn och e-post) får vara högst 500 tecken.
Vid testning kan ni använda Repejos testmiljö som host, dvs. https://test.repejo.se.
const session = await window.Repejo.createSession(
"DIN_SHORT_CODE",
"https://test.repejo.se"
);