From 8c3621e3b43300648db7911cb28fb715ecadd1f9 Mon Sep 17 00:00:00 2001 From: Peter Todd Date: Mon, 21 Oct 2013 01:01:01 -0400 Subject: Archive Revision as of 12:30, 29 August 2013 https://en.bitcoin.it/w/index.php?title=BIP_0073&oldid=40584 --- bip-0073.mediawiki | 83 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 bip-0073.mediawiki (limited to 'bip-0073.mediawiki') diff --git a/bip-0073.mediawiki b/bip-0073.mediawiki new file mode 100644 index 0000000..07add74 --- /dev/null +++ b/bip-0073.mediawiki @@ -0,0 +1,83 @@ +{{bip}} + +
+  BIP: 73
+  Title: Use "Accept" header for response type negotiation with Payment Request URLs 
+  Author: Stephen Pair 
+  Status: Draft
+  Type: Standards Track
+  Created: 27-08-2013
+
+ +==Abstract== + +This BIP describes an enhancement to the payment protocol ([[BIP 0070|BIP 70]]) +that addresses the need for short URLs when scanning from QR codes. It +generalizes the specification for the behavior of a payment request URL in a +way that allows the client and server to negotiate the content of the +response using the HTTP Accept: header field. Specifically, the client +can indicate to the server whether it prefers to receive a bitcoin URI or +a payment request. + +Implementation of this BIP does not require full payment request ([[BIP 0070|BIP 70]]) support. + +==Motivation== + +The payment protocol augments the bitcoin: uri scheme with an additional +"payment" parameter that specifies a URL where a payment request can be +downloaded. This creates long URIs that, when rendered as a QR code, have +a high information density. Dense QR codes can be difficult to scan resulting +in a more frustrating user experience. The goal is to create a standard that +would allow QR scanning wallets to use less dense QR codes. It also makes +general purpose QR code scanners more usable with bitcoin accepting +websites. + +==Specification== + +QR scanning wallets will consider a non bitcoin URI scanned from a QR code to +be an end point where either a bitcoin URI or a payment request can be obtained. + +A wallet client uses the Accept: HTTP header to specify whether it can accept +a payment request, a URI, or both. A media type of text/uri-list specifies that +the client accepts a bitcoin URI. A media type of application/bitcoin-paymentrequest +specifies that the client can process a payment request. In the absence of an +Accept: header, the server is expected to respond with text/html suitable for +rendering in a browser. An HTML response will ensure that QR codes scanned +by non Bitcoin wallet QR scanners are useful (they could render an HTML page +with a payment link that when clicked would open a wallet on the device). + +It is not required that the client and server support the full semantics of an +HTTP Accept header. If application/bitcoin-paymentrequest is specified in the +header, the server should send a payment request regardless of anything else +specified in the Accept header. If text/uri-list is specified (but not +application/bitcoin-paymentrequest), a valid Bitcoin URI should be returned. If +neither is specified, the server can return an HTML page. When a uri-list is returned +only the first item in the list is used (and expected to be a bitcoin URI), any additional +URIs should be ignored. + +==Compatibility== + +Only QR scanning wallets that implement this BIP will be able to process QR +codes containing payment request URLs. There are two possible workarounds for QR +scanning wallets that do not implement this BIP: 1) the server gives the user an +option to change the QR code to a bitcoin: URI or 2) the user scans the code with +a generic QR code scanner. + +In the second scenario, if the server responds with a webpage containing a link +to a bitcoin URI, the user can complete the payment by clicking that link provided +the user has a wallet installed on their device and it supports bitcoin URIs. If the +wallet/device does not have support for bitcoin URIs, the user can fall back on +address copy/paste. + +This BIP should be fully compatible with BIP 70 assuming it is required that wallets +implementing BIP 70 make use of the Accept: HTTP header when retrieving a +payment request. + +==Examples== +The first image below is of a bitcoin URI with an amount and payment request +specified (note, this is a fairly minimal URI as it does not contain a +label and the request URL is of moderate size). The second image is a QR +code with only the payment request url specified. + +[[File:BIP_0073a.png]]     [[File:BIP_0073b.png]] +[[Category:BIP]] -- cgit v1.2.3