Workflow 教學 | 從頭教你製作萬能掃碼

這些信息部分網上都可以搜到。

  • 淘寶:taobao://
  • 微博:weibo://qrcode
  • 微信:weixin://scanqrcode
  • 支付寶:alipayqr://platformapi/startapp?saId=10000007
  • 豆瓣:douban://
  • 京東:openApp.jdMobile://virtual?params={參數}
  • 2. 研究調用機制

    示例中分為一次掃碼是如何實現的呢?

    一次掃碼像是淘寶、支付寶和豆瓣,App本身就支持從鏈接跳轉到App中制定頁面,但是如何獲取這個「鏈接」就是關鍵了。

    以情況不複雜的支付寶掃碼舉例。複雜的情況類似於京東需要抓包分析,本文不涉及。

    這個二維碼包含了一個網頁

    https://qr.alipay.com/a6x00588utz0thcokf77vv7d

    然後我試著直接打開看看

    這是一個新的網址,有沒有覺得有點眼熟?

    https://ds.alipay.com/?from=mobilecodec&scheme=alipays%3A%2F%2Fplatformapi%2Fstartapp%3FsaId%3D10000007%26clientVersion%3D3.7.0.0718%26qrcode%3Dhttps%253A%252F%252Fqr.alipay.com%252Fa6x00588utz0thcofk77v7d%253F_s%253Dweb-other

    這個URL經過了編碼,首先來解碼

    https://ds.alipay.com/?from=mobilecodec&scheme=alipays://platformapi/startapp?saId=10000007&clientVersion=3.7.0.0718&qrcode=https://qr.alipay.com/a6x00588utz0thcofk77v7d?_s=web-other

    將其分段便於理解

    https://ds.alipay.com/?from=mobilecodec&scheme=alipays://platformapi/startapp?saId=10000007&clientVersion=3.7.0.0718&qrcode=https://qr.alipay.com/a6x00588utz0thcofk77v7d?_s=web-other

    從上至下一眼便知:

    第二行是支付寶客戶端的URL SCHEME,第四行是剛剛二維碼內含的網頁。

    把第二行和第四行結合起來去跑一下看看

    alipays://platformapi/startapp?saId=10000007&qrcode=https://qr.alipay.com/a6x00588utz0thcofk77v7d?_s=web-other

    果然成功了!直接進入了我的個人主頁。

    然後就可以在Workflow里開工了。

    首先掃描二維碼,把掃描到的內容保存到一個變數中,我的workflow里起名叫做code。

    隨後我清空了剪貼板,這是一個個人習慣。如果不需要可以刪除。

    接著就是Get Variable用If語句 判斷剛剛讀到的內容裡面是否含有

    qr.alipay.com

    這個元素,如果有的話,那剛剛讀到的應該是一個調用支付寶打開的鏈接。那麼我們給他在他前面加上一端

    alipays://platformapi/startapp?saId=10000007&qrcode=

    使得鏈接變成這樣

    alipays://platformapi/startapp?saId=10000007&qrcode=https://qr.alipay.com/xxxxxxxxxxxxxxxxxxxxxx

    最後使用Open URLs就可以了。

    為了展示效果簡化了判斷是否為鏈接的判斷,也是同樣用If判斷即可。

    3. 羅列一下其它App的解決方案

    淘寶,替換鏈接中https為taobao

    taobao://taobao.com/xxxxxx //淘寶頁面taobao://tb.cn/xxxxx //淘寶掃描二維碼登陸

    微信,如包含以下關鍵字,調用weixin://scanqrcode二次掃碼

    tenpay.com //微信支付weixin.qq.com //微信公眾號、小程序、個人名片鏈接

    微博,如包含以下關鍵字,調用weibo://qrcode二次掃碼

    weibo.cn //微博掃碼登陸

    豆瓣,替換鏈接中https為douban

    douban://douban.com/book/xxxx //豆瓣讀書

    京東,替換商品id或者登錄key

    大眾點評,提取id

    dianping://shopinfo?id=<商戶id> dianping://tuandeal?id=<團購單id>

    閱讀前文後可以自己嘗試看看。

    4.調用豆瓣API

    有興趣的可以研究一下。在這個workflow里是掃描書背後的條形碼跳轉到豆瓣的頁面里。

    豆瓣的API頁面:豆瓣圖書Api V2

    當我們掃到了書的條形碼,就是那個978xxxxxxxxxx的13位數字之後,如何將它變成一個豆瓣可以打開的鏈接呢?

    這裡以《島上書店》舉例。這本書的ISBN號是9787539971810。

    打開這個鏈接

    https://api.douban.com/v2/book/isbn/9787539971810

    我們可以獲得如下的信息

    {"rating":{"max":10,"numRaters":49715,"average":"7.7","min":0},"subtitle":"","author":["[美] 加布瑞埃拉·澤文"],"pubdate":"2015-5","tags":[{"count":8523,"name":"小說","title":"小說"},{"count":6457,"name":"外國文學","title":"外國文學"},{"count":4281,"name":"好書,值得一讀","title":"好書,值得一讀"},{"count":4024,"name":"美國文學","title":"美國文學"},{"count":3438,"name":"文學","title":"文學"},{"count":3267,"name":"生活","title":"生活"},{"count":3070,"name":"美國","title":"美國"},{"count":2878,"name":"深夜讀書","title":"深夜讀書"}],"origin_title":"The Storied Life of A. J. Fikry","image":"https://img3.doubanio.com/mpic/s28049685.jpg","binding":"平裝","translator":["孫仲旭","李玉瑤"],"catalog":"第一部
    《待宰的羔羊》 / 3
    《像里茲飯店那樣大的鑽石》 / 27
    《咆哮營的幸運兒》 / 41
    《世界的感覺》 / 81
    《好人難尋》 / 89
    《卡拉維拉縣馳名的跳蛙》 / 135
    《穿夏裙的女孩》 / 167
    第二部
    《與父親的對話》 / 183
    《逮香蕉魚的最佳日子》 / 197
    《泄密的心》 / 209
    《鐵頭》 / 223
    《當我們談論愛情時我們在談論什麼》 / 249
    《書店老闆》 / 257
    --
    註:整本書的章節標題都是文學作品的標題。
    《島上書店》是一部小說。","ebook_url":"https://read.douban.com/ebook/9580262/","pages":"271","images":{"small":"https://img3.doubanio.com/spic/s28049685.jpg","large":"https://img3.doubanio.com/lpic/s28049685.jpg","medium":"https://img3.doubanio.com/mpic/s28049685.jpg"},"alt":"https://book.douban.com/subject/26340138/","id":"26340138","publisher":"江蘇鳳凰文藝出版社","isbn10":"7539971819","isbn13":"9787539971810","title":"島上書店","url":"https://api.douban.com/v2/book/26340138","alt_title":"The Storied Life of A. J. Fikry","author_intro":"加布瑞埃拉·澤文 Gabrielle Zevin
    譯作目錄:http://book.douban.com/doulist/14076/
    譯文小集:http://www.douban.com/note/34107135/
    李玉瑤,編輯,譯者。七十年代生人,現任職於上海譯文出版社。譯有《阿克拉手稿》《與狼共舞》《房間》《激情》等作品。","summary":"島上書店是間維多利亞風格的小屋,門廊上掛著褪色的招牌,上面寫著: 沒有誰是一座孤島。","ebook_price":"16.80","series":{"id":"34361","title":"全球頂級暢銷小說文庫:加·澤文作品"},"price":"CNY 35.00"}

    很長的一段信息,包含了這本書的封面圖片、簡介等信息。

    這一次要提取的信息是《島上書店》這本書的豆瓣id

    "title":"島上書店","url":"https://api.douban.com/v2/book/26340138",

    url下有這本書的id,這本書的豆瓣網頁鏈接也包含了這個信息

    26340138https://book.douban.com/subject/26340138/

    接下來進行文字替換,打開鏈接即可。

    https://api.douban.com/v2/book/26340138douban://douban.com/book/26340138

    下面用Workflow來完成這個動作。

    5.如何把以上東西全部放到一個workflow里

    以上的教程單單領出來一個可能製作起來很方便,但是要怎麼自動識別讀到的文字呢?

    這裡要用到正則表達式進行判斷

    首先判斷一下是不是ISBN碼,它的特徵是13位數字,978開頭。

    ^978[0-9]{10}$

    再可以判斷是不是http開頭的鏈接,這裡就不展開了,這需要一些耐心琢磨。

    推薦大家兩個網站可以自學,正則表達式在線測試,正則表達式30分鐘入門

    拋磚引玉

    這個workflow還遠遠沒有完美,希望大家一起完善。

    這種東西少數派的大神肯定早就做過了吧,我心裡是這樣想的,希望能夠拋磚引玉。

    我暫時還沒有辦法找出手機QQ掃碼界面的url。微博微信的掃碼還需要跳轉到App本身的掃碼界面二次掃碼,並不像淘寶和豆瓣那樣可以直達。

    歡迎留言。

    workflow下載地址:https://workflow.is/workflows/50c68c91dfc5481689599b2c96ab98ba

    Update

    2017-01-23 增加大眾點評掃碼登陸&掃碼跳轉到手機大眾點評

    2017-01-22 增加京東掃碼登陸&掃碼跳轉到對手機京東

    2017-01-19 增加了支付寶掃碼付款&掃碼加好友等功能

    2017-01-18 First Release,支持淘寶、微博、微信、豆瓣