@qrph/qrph
Version:
Library for parsing and encoding QRPH strings.
46 lines • 1.54 kB
JavaScript
import { constants, encodeEMVQR } from "@qrph/emv-qr";
const pointOfInitiationMethodMap = {
static: "11",
dynamic: "12",
};
export const encodeQRPH = (data) => {
const root = {
[constants.ID.IDPointOfInitiationMethod]: pointOfInitiationMethodMap[data.pointOfInitiationMethod],
[constants.ID.IDMerchantCategoryCode]: data.merchantCategoryCode,
[constants.ID.IDTransactionCurrency]: data.transactionCurrency,
[constants.ID.IDCountryCode]: data.countryCode,
[constants.ID.IDMerchantName]: data.merchantName,
[constants.ID.IDMerchantCity]: data.merchantCity,
};
if (data.transactionAmount) {
root[constants.ID.IDTransactionAmount] = data.transactionAmount;
}
if (data.postalCode) {
root[constants.ID.IDPostalCode] = data.postalCode;
}
const recipient = {
"00": data.recipient.type,
"01": data.recipient.bankCode,
"03": data.recipient.accountNumber,
};
const recipientKey = data.recipient.type === "com.p2pqrpay" ? "27" : "28";
return {
...data._raw,
...root,
[recipientKey]: {
...data._raw[recipientKey],
...recipient,
},
};
};
/**
* Encode a QRPH data object to a string to be used in a QR code.
*
* @param data - The QRPH data object to encode.
* @returns The encoded QRPH string.
*/
export const encodeQRPHToText = (data) => {
const emvQRData = encodeQRPH(data);
return encodeEMVQR(emvQRData);
};
//# sourceMappingURL=encodeQRPH.js.map