100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 分享微信公众号开发刷卡支付的实例教程

分享微信公众号开发刷卡支付的实例教程

时间:2023-09-03 15:07:02

相关推荐

分享微信公众号开发刷卡支付的实例教程

微信小程序|微信开发

微信开发,刷卡支付

微信小程序-微信开发

欢迎留言、转发

纯html5网站源码,ubuntu 关机命慢,selenium爬虫b站,php好学还是php好学,爱网站seolzw

此篇文章具体来聊聊微信刷卡支付

出售源码的源码,ubuntu换成国内镜像,爬虫镜像网页内容,php发布测试,han joon seolzw

场景介绍

中职学校网站源码,vscode为什么没有插件,ubuntu 窗体透明,pdf放在tomcat访问,浴室软体爬虫,php 源码加密 授权,金融行业seo怎么做,智睿网站无法修改,wp黑色大图风格视频模板lzw

步骤1:用户选择刷卡支付付款并打开微信,进入“我”->“钱包”->“刷卡”条码界面

步骤2:收银员在商户系统操作生成支付订单,用户确认支付金额

步骤3:商户收银员用扫码设备扫描用户的条码/二维码,商户收银系统提交支付

步骤4:微信支付后台系统收到支付请求,根据验证密码规则判断是否验证用户的支付密码,不需要验证密码的交易直接发起扣款,需要验证密码的交易会弹出密码输入框。支付成功后微信端会弹出成功页面,支付失败会弹出错误提示

商户侧流程

详细文档介绍只需要简单了解流程 点击这里

刷卡支付接入模式可分为:商户后台接入(提供给别人使用类似第三方)和门店接入(自己使用);区别就是支付结果多分发一次

根据用户是否需要输入支付密码可分为:免密模式和验密模式。

支付验证密码规则

支付金额>500元的交易需要验证用户支付密码

用户账号每天最多有5笔交易可以免密,超过后需要验证密码

微信支付后台判断用户支付行为有异常情况,符合免密规则的交易也会要求验证密码

下面来讲讲具体实现

刷卡支付当中使用的支付接口为: 提交刷卡支付API 使用的是https请求;不需要微信支付证书。

以下是具体实现代码:

com.javen.weixin.controller.WeixinPayController中的micropay()

public void micropay(){ String url="https://api.mch./pay/micropay"; String total_fee="1"; //授权码 String auth_code = getPara("auth_code"); Map params = new HashMap(); params.put("appid", appid); params.put("mch_id", partner); params.put("device_info", "javen205");//终端设备号 params.put("nonce_str", System.currentTimeMillis() / 1000 + ""); params.put("body", "刷卡支付测试");// params.put("detail", "json字符串");//非必须 params.put("attach", "javen205");//附加参数非必须 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)); //同步返回结果 System.out.println("xmlResult:"+xmlResult); Map 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秒后调用【查询订单API】https://pay./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授权码auth_code为微信客户端刷卡界面条形码上显示的数字。

测试

我本地做端口映射测试的地址如下:

其中auth_code值是谁便写的

http://域名/pay/micropay?auth_code=111在浏览器中访问

返回结果如下:

<![CDATA[SUCCESS]]><![CDATA[OK]]><![CDATA[您公众号的appid]]><![CDATA[您微信商户号]]><![CDATA[javen205]]><![CDATA[eXgczazQq54pqcyH]]><![CDATA[FF03DA0E58845CCE1FCC2166EC03FBE5]]><![CDATA[FAIL]]><![CDATA[AUTH_CODE_INVALID]]><![CDATA[请扫描微信支付被扫条码/二维码]]>

刷卡支付超过5次就会提示输入密码

返回的err_codeUSERPAYING

此时支付结果就需要通过 查询订单接口来获取

输入正确的auth_code返回的结果如下:

<![CDATA[SUCCESS]]><![CDATA[OK]]><![CDATA[您公众号的appid]]><![CDATA[您微信商户号]]><![CDATA[javen205]]><![CDATA[Z9p14VPJ822ZTPXP]]><![CDATA[03BD421A33A5079A1BE6030E2EBA8291]]><![CDATA[SUCCESS]]><![CDATA[o_pncsidC-pRRfCP4zj98h6slREw]]><![CDATA[Y]]><![CDATA[MICROPAY]]><![CDATA[CFT]]>1<![CDATA[CNY]]><![CDATA[400968200110156761057959]]><![CDATA[1476523316727]]><![CDATA[javen205]]><![CDATA[1015172058]]>1

使用场景描述

刷卡支付.jpg

码字完毕,

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。