- From: Dew0Tgx <notifications@github.com>
- Date: Tue, 15 Jun 2021 05:10:47 -0700
- To: w3c/payment-request <payment-request@noreply.github.com>
- Cc: Subscribed <subscribed@noreply.github.com>
- Message-ID: <w3c/payment-request/issues/705/861444937@github.com>
async function doPaymentRequest() { const request = new PaymentRequest(methodData, details, options); const response = await request.show(); const validator = new Validator(); // user code // collect any errors from response const { shippingAddressErrors, payerErrors, paymentMethodErrors, // <- needs exploration. } = await validator.validateResponse(response); // Ok, we got bad input... let's get the user to fix those! if (shippingAddressErrors || payerErrors || paymentMethodErrors) { const promisesToFixThings = []; // let's make sure the shipping address is fixed if (shippingAddressErrors) { const promiseToFixAddress = new Promise(resolve => { // Browser keeps calling this until promise resolves. response.onpaymentaddresschange = async ev => { const promiseToValidate = validator.validateShippingAddress(response); ev.updateWith(promiseToValidate); // we could abort here via try/catch const errors = await promiseToValidate; if (!errors) { resolve(); // yay! Address is fixed! } }; }); promisesToFixThings.push(promiseToFixAddress); } if (payerErrors) { // As above for payer errors } response.retry({ shippingAddressErrors, payerErrors }); await Promise.all(promisesToFixThings); } await response.complete("success"); } - [x] - doPaymentRequest();[ async function doPaymentRequest() { const request = new PaymentRequest(methodData, details, options); const response = await request.show(); const validator = new Validator(); // user code // collect any errors from response const { shippingAddressErrors, payerErrors, paymentMethodErrors, // <- needs exploration. } = await validator.validateResponse(response); // Ok, we got bad input... let's get the user to fix those! if (shippingAddressErrors || payerErrors || paymentMethodErrors) { const promisesToFixThings = []; // let's make sure the shipping address is fixed if (shippingAddressErrors) { const promiseToFixAddress = new Promise(resolve => { // Browser keeps calling this until promise resolves. response.onpaymentaddresschange = async ev => { const promiseToValidate = validator.validateShippingAddress(response); ev.updateWith(promiseToValidate); // we could abort here via try/catch const errors = await promiseToValidate; if (!errors) { resolve(); // yay! Address is fixed! } }; }); promisesToFixThings.push(promiseToFixAddress); } if (payerErrors) { // As above for payer errors } response.retry({ shippingAddressErrors, payerErrors }); await Promise.all(promisesToFixThings); } await response.complete("success"); } doPaymentRequest();]() -- You are receiving this because you are subscribed to this thread. Reply to this email directly or view it on GitHub: https://github.com/w3c/payment-request/issues/705#issuecomment-861444937
Received on Tuesday, 15 June 2021 12:11:41 UTC