微信公眾號開發(fā)之刷卡支付

歡迎留言挣轨、轉(zhuǎn)發(fā)

微信極速開發(fā)系列文章:點擊這里

上兩篇文章介紹了微信公眾號支付以及微信掃碼支付

此篇文章具體來聊聊微信刷卡支付


刷卡支付-官方文檔


場景介紹

  • 步驟1:用戶選擇刷卡支付付款并打開微信胶台,進入“我”->“錢包”->“刷卡”條碼界面
  • 步驟2:收銀員在商戶系統(tǒng)操作生成支付訂單晦炊,用戶確認支付金額
  • 步驟3:商戶收銀員用掃碼設(shè)備掃描用戶的條碼/二維碼叠萍,商戶收銀系統(tǒng)提交支付
  • 步驟4:微信支付后臺系統(tǒng)收到支付請求物邑,根據(jù)驗證密碼規(guī)則判斷是否驗證用戶的支付密碼昼钻,不需要驗證密碼的交易直接發(fā)起扣款袁余,需要驗證密碼的交易會彈出密碼輸入框。支付成功后微信端會彈出成功頁面冷守,支付失敗會彈出錯誤提示

商戶側(cè)流程


詳細文檔介紹只需要簡單了解流程 點擊這里


刷卡支付接入模式可分為:商戶后臺接入(提供給別人使用類似第三方)和門店接入(自己使用)刀崖;區(qū)別就是支付結(jié)果多分發(fā)一次

根據(jù)用戶是否需要輸入支付密碼可分為:免密模式和驗密模式拍摇。

支付驗證密碼規(guī)則

  • 支付金額>500元的交易需要驗證用戶支付密碼
  • 用戶賬號每天最多有5筆交易可以免密亮钦,超過后需要驗證密碼
  • 微信支付后臺判斷用戶支付行為有異常情況,符合免密規(guī)則的交易也會要求驗證密碼

免密模式和驗密模式兩者的區(qū)別會在后面講到

下面來講講具體實現(xiàn)

刷卡支付當(dāng)中使用的支付接口為: 提交刷卡支付API 使用的是https請求充活;不需要微信支付證書蜂莉。

以下是具體實現(xiàn)代碼:
com.javen.weixin.controller.WeixinPayController中的micropay()

public void micropay(){
  String url="https://api.mch.weixin.qq.com/pay/micropay";
  
  String total_fee="1";
  //授權(quán)碼
  String auth_code = getPara("auth_code");
  
  Map<String, String> params = new HashMap<String, String>();
  params.put("appid", appid);
  params.put("mch_id", partner);
  params.put("device_info", "javen205");//終端設(shè)備號
  params.put("nonce_str", System.currentTimeMillis() / 1000 + "");
  params.put("body", "刷卡支付測試");
//  params.put("detail", "json字符串");//非必須
  params.put("attach", "javen205");//附加參數(shù)非必須
  String out_trade_no=System.currentTimeMillis()+"";
  params.put("out_trade_no", out_trade_no);
  params.put("total_fee", total_fee);
  
  String ip = IpKit.getRealIp(getRequest());
  if (StrKit.isBlank(ip)) {
   ip = "127.0.0.1";
  }
  
  params.put("spbill_create_ip", ip);
  params.put("auth_code", auth_code);
  
  String sign = PaymentKit.createSign(params, paternerKey);
  params.put("sign", sign);
  
  String xmlResult = HttpUtils.post(url, PaymentKit.toXml(params));
  //同步返回結(jié)果
  System.out.println("xmlResult:"+xmlResult);
  
  Map<String, String> result = PaymentKit.xmlToMap(xmlResult);
  String return_code = result.get("return_code");
  if (StrKit.isBlank(return_code) || !"SUCCESS".equals(return_code)) {
   //通訊失敗 
   String err_code = result.get("err_code");
   //用戶支付中,需要輸入密碼
   if (err_code.equals("USERPAYING")) {
    //等待5秒后調(diào)用【查詢訂單API】https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=9_2
    
   }
   renderText("通訊失敗>>"+xmlResult);
   return;
  }
  
  String result_code = result.get("result_code");
  if (StrKit.isBlank(result_code) || !"SUCCESS".equals(result_code)) {
   //支付失敗
   renderText("支付失敗>>"+xmlResult);
   return;
  }
  
  //支付成功 
  
  renderText(xmlResult);
 }

開源項目weixin-guide中 測試訪問地址為http://域名[/項目名稱]/pay/micropay?auth_code=xxxxx 混卵, 授權(quán)碼auth_code 為微信客戶端刷卡界面條形碼上顯示的數(shù)字映穗。

(注:用戶刷卡條形碼規(guī)則:18位純數(shù)字,以10幕随、11蚁滋、12、13赘淮、14辕录、15開頭)

測試

不用掃碼槍也可以測試,只是測試手動輸入授權(quán)碼麻煩一點(1分鐘刷新一次)梢卸,需要你快速輸入授權(quán)碼走诞。掃碼槍只是讀取授權(quán)碼并沒有多做其他的事情。

我本地做端口映射測試的地址如下:

其中auth_code 值是誰便寫的
http://域名/pay/micropay?auth_code=111 在瀏覽器中訪問

返回結(jié)果如下:

<xml><return_code><![CDATA[SUCCESS]]></return_code>
<return_msg><![CDATA[OK]]></return_msg>
<appid><![CDATA[您公眾號的appid]]></appid>
<mch_id><![CDATA[您微信商戶號]]></mch_id>
<device_info><![CDATA[javen205]]></device_info>
<nonce_str><![CDATA[eXgczazQq54pqcyH]]></nonce_str>
<sign><![CDATA[FF03DA0E58845CCE1FCC2166EC03FBE5]]></sign>
<result_code><![CDATA[FAIL]]></result_code>
<err_code><![CDATA[AUTH_CODE_INVALID]]></err_code>
<err_code_des><![CDATA[請掃描微信支付被掃條碼/二維碼]]></err_code_des>
</xml>

刷卡支付超過5次就會提示輸入密碼

返回的err_codeUSERPAYING

此時支付結(jié)果就需要通過 查詢訂單接口來獲取

這就是有密碼與無密碼的區(qū)別蛤高,有密碼必須通過查詢訂單來獲取支付結(jié)果蚣旱,如果結(jié)果任然為USERPAYING,則每隔5秒循環(huán)調(diào)用查詢訂單API判斷實際支付結(jié)果,如果用戶取消支付或累計30秒用戶都未支付襟齿,商戶收銀臺退出查詢流程后繼續(xù)調(diào)用撤銷訂單API撤銷支付交易姻锁。

輸入正確的auth_code 返回的結(jié)果如下:

<xml><return_code><![CDATA[SUCCESS]]></return_code>
<return_msg><![CDATA[OK]]></return_msg>
<appid><![CDATA[您公眾號的appid]]></appid>
<mch_id><![CDATA[您微信商戶號]]></mch_id>
<device_info><![CDATA[javen205]]></device_info>
<nonce_str><![CDATA[Z9p14VPJ822ZTPXP]]></nonce_str>
<sign><![CDATA[03BD421A33A5079A1BE6030E2EBA8291]]></sign>
<result_code><![CDATA[SUCCESS]]></result_code>
<openid><![CDATA[o_pncsidC-pRRfCP4zj98h6slREw]]></openid>
<is_subscribe><![CDATA[Y]]></is_subscribe>
<trade_type><![CDATA[MICROPAY]]></trade_type>
<bank_type><![CDATA[CFT]]></bank_type>
<total_fee>1</total_fee>
<fee_type><![CDATA[CNY]]></fee_type>
<transaction_id><![CDATA[4009682001201610156761057959]]></transaction_id>
<out_trade_no><![CDATA[1476523316727]]></out_trade_no>
<attach><![CDATA[javen205]]></attach>
<time_end><![CDATA[20161015172058]]></time_end>
<cash_fee>1</cash_fee>
</xml>

使用場景描述

如果接入模式為商戶后臺接入 支付成功了微信支付系統(tǒng)就會將上面的xml數(shù)據(jù)返回給商戶,商戶再將支付結(jié)果回調(diào)給門店收銀臺猜欺,收銀臺繼續(xù)處理業(yè)務(wù)邏輯

如果接入模式-門店接入 支付成功了微信支付系統(tǒng)就會將上面的xml數(shù)據(jù)返回給收銀臺位隶,收銀臺繼續(xù)處理業(yè)務(wù)邏輯

刷卡支付.png

碼字完畢,以上就是微信刷卡支付的詳細介紹开皿。

歡迎留言涧黄、轉(zhuǎn)發(fā)
微信極速開發(fā)系列文章:http://www.reibang.com/p/a172a1b69fdd

此文章項目開源地址:極速開發(fā)微信公眾號-Start支持項目發(fā)展

后續(xù)更新預(yù)告
1、微信紅包
2赋荆、企業(yè)轉(zhuǎn)賬

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末笋妥,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子窄潭,更是在濱河造成了極大的恐慌春宣,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,123評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異月帝,居然都是意外死亡躏惋,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評論 2 384
  • 文/潘曉璐 我一進店門嚷辅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來簿姨,“玉大人,你說我怎么就攤上這事簸搞”馕唬” “怎么了?”我有些...
    開封第一講書人閱讀 156,723評論 0 345
  • 文/不壞的土叔 我叫張陵趁俊,是天一觀的道長域仇。 經(jīng)常有香客問我,道長则酝,這世上最難降的妖魔是什么殉簸? 我笑而不...
    開封第一講書人閱讀 56,357評論 1 283
  • 正文 為了忘掉前任闰集,我火速辦了婚禮沽讹,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘武鲁。我一直安慰自己爽雄,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,412評論 5 384
  • 文/花漫 我一把揭開白布沐鼠。 她就那樣靜靜地躺著挚瘟,像睡著了一般。 火紅的嫁衣襯著肌膚如雪饲梭。 梳的紋絲不亂的頭發(fā)上乘盖,一...
    開封第一講書人閱讀 49,760評論 1 289
  • 那天,我揣著相機與錄音憔涉,去河邊找鬼订框。 笑死,一個胖子當(dāng)著我的面吹牛兜叨,可吹牛的內(nèi)容都是我干的穿扳。 我是一名探鬼主播,決...
    沈念sama閱讀 38,904評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼国旷,長吁一口氣:“原來是場噩夢啊……” “哼矛物!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起跪但,我...
    開封第一講書人閱讀 37,672評論 0 266
  • 序言:老撾萬榮一對情侶失蹤履羞,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體忆首,經(jīng)...
    沈念sama閱讀 44,118評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡骨杂,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,456評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了雄卷。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片搓蚪。...
    茶點故事閱讀 38,599評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖丁鹉,靈堂內(nèi)的尸體忽然破棺而出妒潭,到底是詐尸還是另有隱情,我是刑警寧澤揣钦,帶...
    沈念sama閱讀 34,264評論 4 328
  • 正文 年R本政府宣布雳灾,位于F島的核電站,受9級特大地震影響冯凹,放射性物質(zhì)發(fā)生泄漏谎亩。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,857評論 3 312
  • 文/蒙蒙 一宇姚、第九天 我趴在偏房一處隱蔽的房頂上張望匈庭。 院中可真熱鬧,春花似錦浑劳、人聲如沸阱持。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽衷咽。三九已至,卻和暖如春蒜绽,著一層夾襖步出監(jiān)牢的瞬間镶骗,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評論 1 264
  • 我被黑心中介騙來泰國打工躲雅, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留鼎姊,地道東北人。 一個月前我還...
    沈念sama閱讀 46,286評論 2 360
  • 正文 我出身青樓吏夯,卻偏偏與公主長得像此蜈,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子噪生,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,465評論 2 348

推薦閱讀更多精彩內(nèi)容