支付二維碼融合 Go實(shí)現(xiàn)

個(gè)人店鋪線下支付二維碼孝治,一般會(huì)放2個(gè)(1個(gè)微信收款碼,一個(gè)支付寶收款碼)

網(wǎng)上也提供很多多個(gè)二維碼融合的技術(shù),這里僅提供思路尘盼,以及GoLang實(shí)現(xiàn)的樣例代碼憨愉。

具體效果可看:

  1. 個(gè)人電鋪?zhàn)?cè) http://pay.xiaoa7.top:8090/register 需要提交個(gè)人的微信、支付寶收款碼

  2. 個(gè)人融合二維碼 http://pay.xiaoa7.top:8090/qr/注冊(cè)時(shí)你填寫(xiě)商鋪代碼卿捎,可以將生成的二維碼配紫,打印在任何地方。

目前只支持微信娇澎,支付寶笨蚁;后續(xù)可擴(kuò)展支持其他。

融合二維碼支付流程:

1.商戶在支付寶趟庄、微信中生成個(gè)人收款碼括细,存儲(chǔ)到手機(jī)。

2.瀏覽器訪問(wèn)(微信里直接掃碼打開(kāi)這個(gè)地址也可以)http://pay.xiaoa7.top:8090/register 戚啥,提交收款碼圖片

3.服務(wù)端Go 調(diào)用zbar 識(shí)別圖片中二維碼內(nèi)容奋单。微信是wxfp開(kāi)頭,支付寶是https://xxx的猫十,實(shí)際就是收款二維碼的內(nèi)容览濒。服務(wù)端數(shù)據(jù)庫(kù)記錄商戶ID,微信收款碼wxfp拖云,支付寶收款碼https://xx

4.為商戶生成一個(gè)內(nèi)容為url的二維碼贷笛,格式如下:http://pay.xiaoa7.top:8090/pay/商戶id。這個(gè)二維碼商戶可以下載宙项,打印乏苦。

5.消費(fèi)者用手機(jī)(支付寶、微信)掃碼時(shí)尤筐,實(shí)際上會(huì)訪問(wèn)http://pay.xiaoa7.top:8090/pay/商戶id汇荐,這個(gè)Action

6.依據(jù)useragent識(shí)別來(lái)源:微信、支付寶盆繁、qq掀淘、京東等支付

7.支付寶之類的,可以直接http 301跳轉(zhuǎn)油昂,就可以到給商戶個(gè)人付款界面革娄。微信需要服務(wù)端以商戶收款碼內(nèi)容(wxfpXXX)生成二維碼圖片,(這個(gè)過(guò)程可以在注冊(cè)時(shí)直接生成冕碟,以備后續(xù)使用稠腊,不用每次都生成,而且可以美化鸣哀,加上商戶信息架忌,提示消費(fèi)者長(zhǎng)按付款),生成支付二維碼圖片我衬,消費(fèi)者長(zhǎng)按圖片叹放,選擇識(shí)別圖片二維碼饰恕,實(shí)現(xiàn)支付到商戶個(gè)人賬戶。

在這一步井仰,跳轉(zhuǎn)前可以做一些記錄埋嵌,如記錄商戶交易請(qǐng)求,每日商戶交易次數(shù)等等俱恶。

GoLang代碼


var (

ali_user_agent, _ = regexp.Compile("(?i:Alipay)")

wx_user_agent, _  = regexp.Compile("(?i:MicroMessenger)")

)

//識(shí)別二維碼內(nèi)容

func DecodeQR(src multipart.File) (string, error) {

defer src.Close()

img, _, _ := image.Decode(src)

ret, err := deqr.GetDataFromImage(img)

if err != nil {

return "", err

}

return strings.Join(ret, ","), nil

}

//注冊(cè)

func registerAct(w http.ResponseWriter, r *http.Request) {

mid := r.FormValue("mid")

var wxpay, alipay string

fi, _, _ := r.FormFile("wxpay")

wxpay, err := DecodeQR(fi)

if err != nil {

fmt.Println(err.Error())

return

}

fi, _, _ = r.FormFile("alipay")

alipay, err = DecodeQR(fi)

if err != nil {

fmt.Println(err.Error())

return

}

//生二維碼

person_qr, _ := qrcode.Encode(fmt.Sprintf(*payurltpl, mid), qrcode.Medium, 256)

wxpay_qr, _ := qrcode.Encode(wxpay, qrcode.High, 256)

bs, _ := json.Marshal(merchant{

WxPayUrl:  wxpay,

AliPayUrl: alipay,

PayQR:    person_qr,

WxPayQR:  wxpay_qr,

})

db.Save("merchant", mid, bs)

http.Redirect(w, r, "/qr/"+mid, 301)

}



//支付碼

func pay(w http.ResponseWriter, r *http.Request) {

if len(r.RequestURI) < 5 {

return

}

mid := r.RequestURI[5:]

bs, err := db.Get("merchant", mid)

m := new(merchant)

if err != nil {

return

}

json.Unmarshal(bs, m)

if ali_user_agent.MatchString(r.UserAgent()) {

http.Redirect(w, r, m.AliPayUrl, 301)

} else if wx_user_agent.MatchString(r.UserAgent()) {

//生成圖片輸出,二維碼圖雹嗦,有待美化

w.Header().Set("Cache-Control", "no-cache, no-store, must-revalidate")

w.Header().Set("Pragma", "no-cache")

w.Header().Set("Expires", "0")

w.Header().Set("Content-Type", "image/png")

w.Write(m.WxPayQR)

} else {

fmt.Fprintln(w, "請(qǐng)使用微信、支付寶掃描")

}

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末合是,一起剝皮案震驚了整個(gè)濱河市了罪,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌聪全,老刑警劉巖泊藕,帶你破解...
    沈念sama閱讀 216,591評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異难礼,居然都是意外死亡娃圆,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)蛾茉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)讼呢,“玉大人,你說(shuō)我怎么就攤上這事谦炬≡闷粒” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,823評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵吧寺,是天一觀的道長(zhǎng)窜管。 經(jīng)常有香客問(wèn)我散劫,道長(zhǎng)稚机,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,204評(píng)論 1 292
  • 正文 為了忘掉前任获搏,我火速辦了婚禮赖条,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘常熙。我一直安慰自己纬乍,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,228評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布裸卫。 她就那樣靜靜地躺著仿贬,像睡著了一般。 火紅的嫁衣襯著肌膚如雪墓贿。 梳的紋絲不亂的頭發(fā)上茧泪,一...
    開(kāi)封第一講書(shū)人閱讀 51,190評(píng)論 1 299
  • 那天蜓氨,我揣著相機(jī)與錄音,去河邊找鬼队伟。 笑死穴吹,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的嗜侮。 我是一名探鬼主播港令,決...
    沈念sama閱讀 40,078評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼锈颗!你這毒婦竟也來(lái)了顷霹?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,923評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤宜猜,失蹤者是張志新(化名)和其女友劉穎泼返,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體姨拥,經(jīng)...
    沈念sama閱讀 45,334評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡绅喉,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,550評(píng)論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了叫乌。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片柴罐。...
    茶點(diǎn)故事閱讀 39,727評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖憨奸,靈堂內(nèi)的尸體忽然破棺而出革屠,到底是詐尸還是另有隱情,我是刑警寧澤排宰,帶...
    沈念sama閱讀 35,428評(píng)論 5 343
  • 正文 年R本政府宣布似芝,位于F島的核電站,受9級(jí)特大地震影響板甘,放射性物質(zhì)發(fā)生泄漏党瓮。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,022評(píng)論 3 326
  • 文/蒙蒙 一盐类、第九天 我趴在偏房一處隱蔽的房頂上張望寞奸。 院中可真熱鬧,春花似錦在跳、人聲如沸枪萄。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,672評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)瓷翻。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間齐帚,已是汗流浹背元践。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,826評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留童谒,地道東北人单旁。 一個(gè)月前我還...
    沈念sama閱讀 47,734評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像饥伊,于是被迫代替她去往敵國(guó)和親象浑。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,619評(píng)論 2 354