Yes I concern myself of the size of a QR-code when XDR is added within it. That's why I stress using the callback method when possible to pull the data over wire when possible. It seems so far it's not a problem when used in long URL links as demonstrated in stellar.org laboratory format that I also use in my apps.
As far as examples of what's needed in escrow I have detailed documentation in the readme of https://github.com/sacarlson/OpenCart_stellar_plugin of the format I used to setup escrow transactions using both the branch of stargazer wallet and my_wallet in both URL link and QR-code to perform escrow transactions with the OpenCart store plugin.
In short just what's added on top of dzham's json format in OpenCart plugin:
"escrow":{"publicId":"GAVUFP3ZYPZUI2WBSFAGRMDWUWK2UDCPD4ODIIADOILQKB4GI3APVGIF","email":"funtracker.site.bank@gmail.com","expire_ts":1490574272,"expire_dt":"2017-03-27","status":"0","fee":522.475,"callback":"http://b.funtracker.site/store/?route=extension/payment/stellar_net/submit_escrow&"}},"version":"3.0"}}
added Escrow Data break down:
publicId: GAVUFP... // this is the 3rd party escrow agents publicID that becomes a signer in the escrow contract
email: funtracker.site.bank@gmail.com // the email contact info for the 3rd party escrow agent above
expire_ts: 1490574272 // timestamp of expire time when the store can recover it's funds with no reponse from the buyer.
expire_dt: the above time stamp in date format just for reference by humans not really used in the protocol, as the contract is down to the second
status: 0 // I don't even remember what this status is for I'll have to look it up as I think the above order_status is used in most cases, this might provide detailed error messages if problems happen in the escrow handshake at some point or stages in escrow post processing.
fee: this is the escrow service fee in XLM that is sent to the 3rd party escrow agent, this fee is optional depending on what the 3rd party wants to charge.
callback: this is the URL callback address that the wallet will submit the escrow transaction package to after the customer confirms payment from the wallet.
version: 3.0 // this is the present protocol version 3.0 indicating escrow verison 3 that we are now using. As new methods of escrow and other transaction types are created this value will change that will change what data is required and how handshaking will be handled.
This format is not only documented but implemented in working prototype with 2 wallets and the OpenCart plugin.
I too am hoping that at some point some standards are used where at least 3 wallets use the same format for basic functionality. At this point almost every wallet and app if it has URL or QR-code input seems to go and create a new format.
Don't forget some of the other already implemented URL/QR-code input/output formats we now have. So many formats I can't even name them all but I will try to list each app I know of that has input and or output here.
stellar.org apps and web apps with custom input/output qr-code or URL link in:
https://Stellarterm.com
https://lupoex.com/
Stargazer
Centaurus
https://sacarlson.github.io/my_wallet
https://www.stellar.org/laboratory
OpenCart Plugin
http://www.funtracker.site/chart/index.html
https://www.funtracker.site/qr_decode/index.html
Just think if they all shared the same format from the start or at some point in the future. At this point do we just make sure that any of the above formats work on all future apps?