From 68854034d2a406f9b86467253e753a57ee6fcc0e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcos=20Rodriguez=20Ve=CC=81lez?= Date: Mon, 25 Feb 2019 15:11:32 -0500 Subject: [PATCH] FIX: Handle BitPay BIP70 scenarios where schema isnt present. --- bip70/bip70.js | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/bip70/bip70.js b/bip70/bip70.js index b39834a4..daec0ce4 100644 --- a/bip70/bip70.js +++ b/bip70/bip70.js @@ -20,9 +20,14 @@ export default class BitcoinBIP70TransactionDecode { static decode(data) { return new Promise(async (resolve, reject) => { try { - const url = data.match(/bitcoin:\?r=https?:\/\/\S+/gi); + let url; + if (data.match(/bitcoin:\?r=https?:\/\/\S+/gi)) { + url = data.toString().split('bitcoin:?r=')[1]; + } else if (data.startsWith('https://bitpay.com/i/') || data.startsWith('https://www.bitpay.com/i/')) { + url = data.toString(); + } const api = new Frisbee({ - baseURI: url.toString().split('bitcoin:?r=')[1], + baseURI: url, headers: { Accept: 'application/payment-request', }, @@ -69,6 +74,6 @@ export default class BitcoinBIP70TransactionDecode { } static matchesPaymentURL(data) { - return data !== null && data.match(/bitcoin:\?r=https?:\/\/\S+/gi) !== null; + return data !== null && (data.match(/bitcoin:\?r=https?:\/\/\S+/gi) !== null || data.startsWith('https://bitpay.com/i/') || data.startsWith('https://www.bitpay.com/i/')); } }