Minor modifications made to the billing service handlers to improve data interpretation and error processing. The 'getLineItemTypeById' function now uses 'item.variant' for more accurate line item type identification. Unnecessary 'Crypto' object instantiation has been removed in 'createHmac', while improved formatting applied to the error logging within the billing webhook.
29 lines
668 B
TypeScript
29 lines
668 B
TypeScript
function bufferToHex(buffer: ArrayBuffer) {
|
|
return Array.from(new Uint8Array(buffer))
|
|
.map((b) => b.toString(16).padStart(2, '0'))
|
|
.join('');
|
|
}
|
|
|
|
export async function createHmac({ key, data }: { key: string; data: string }) {
|
|
const encoder = new TextEncoder();
|
|
const encodedKey = encoder.encode(key);
|
|
const encodedData = encoder.encode(data);
|
|
|
|
const hmacKey = await crypto.subtle.importKey(
|
|
'raw',
|
|
encodedKey,
|
|
{
|
|
name: 'HMAC',
|
|
hash: 'SHA-256',
|
|
},
|
|
true,
|
|
['sign', 'verify'],
|
|
);
|
|
|
|
const signature = await crypto.subtle.sign('HMAC', hmacKey, encodedData);
|
|
|
|
const hex = bufferToHex(signature);
|
|
|
|
return { hex };
|
|
}
|