支付宝支付-刷卡支付(条码支付)

此项目已开源欢迎Start、PR、发起Issues一起讨论交流共同进步
https://github.com/Javen205/IJPay
http://git.oschina.net/javen205/IJPay

在官方的产品是叫做当面付

1、什么是当面付呢?

简单的讲就是条码支付(刷卡支付)、扫码支付、声波支付。

【官方是这样解释的】
商户可通过以下任一方式在线下完成交易收款都是当面付
1、商家通过扫描线下买家支付宝钱包中的条码、二维码等方式将买家的交易资金直接打入卖家支付宝账户,资金实时到账;
2、线下买家通过使用支付宝钱包扫描商家的二维码等方式完成支付,提升商家收银效率,资金实时到账;
3、线下买家使用支付宝钱包中的当面付功能,通过声波支付的方式向商家完成付款,资金实时到账。

2、申请条件

  1. 申请前必须拥有企业或个人支付宝账号,且通过支付宝实名认证审核;
  1. 营业执照主体需与签约主体一致,如不一致者需提供有效授权函;授权函要求:公司类型必须盖公章、个体工商户需两选一: a. 法人身份证原件+法人签字 b. 法人身份证原件+个体工商户盖章;
  2. 部分行业暂未开放签约,如保险、黄金期货、借贷(P2P)、POS等支付业务等;

3、产品费率

单笔费率 0.6%

4、签约认证流程

如果你只是想了解支付流程可以不进行签约,我们可以使用沙箱环境进行测试。

签约认证流程

开发平台-研发服务-沙箱环境

5、聊聊条码支付(刷卡支付)

官方文档 当面付详细的产品介绍在这里

条码支付是支付宝给到线下传统行业的一种收款方式。商家使用扫码枪等条码识别设备扫描用户支付宝钱包上的条码/二维码,完成收款。用户仅需出示付款码,所有收款操作由商家端完成。

业务流程

使用步骤:

1、用户登录支付宝钱包,点击首页“付款”,进入付款码界面;
2、收银员在商家收银系统操作生成订单,用户确认支付金额;
3、用户出示钱包的“付款码”,收银员用扫码设备来扫描用户手机上的条码/二维码后,商家收银系统提交支付;
4、付款成功后商家收银系统会拿到支付成功或者失败的结果。

使用步骤

6、如何接入条码支付(刷卡支付)呢?

官方接入介绍资料 当面付快速接入

前三步任何支付方式对接必不可少,这些按照文档操作应该没有问题。如遇到问题欢迎留言

前三步任何支付方式对接必不可少

今天的主角要登场了>>>>>>条码支付

调用时序图

这里主要涉及到三个接口

  • 交易支付接口alipay.trade.pay

  • 交易查询接口alipay.trade.query

  • 交易撤销接口alipay.trade.cancel

这里我们使用官方提供的服务端SDK(开放平台服务端SDK)来快速接入

7、选择正确的接入环境

?上面提到过如果是测试或者不上线应用可以不用签约直接使用沙箱环境

正式环境支付网关:https://openapi.alipay.com/gateway.do
沙盒环境支付网关:https://openapi.alipaydev.com/gateway.do

8、使用SDK封装接口

添加支付宝相关的配置文件 alipay.properties

############################
# 支付宝相关的配置
############################appId=xxx //测试号的APPID
privateKey=xxx //测试号的私钥 建议使用RSA2
alipayPulicKey=xxx //支付宝公钥
serverUrl=https://openapi.alipaydev.com/gateway.do //支付网关
notify_domain = xxx //通知域名
8.1 在SDK调用前需要进行初始化
    private static final Prop prop = PropKit.use("alipay.properties");public static AlipayClient alipayClient;public static String charset = "UTF-8";public static String privateKey = prop.get("privateKey");public static String alipayPulicKey = prop.get("alipayPulicKey");public static String serverUrl = prop.get("serverUrl");public static String appId = prop.get("appId");public static String format = "json";public static String signType = "RSA2";public static String notify_domain = prop.get("notify_domain");static {alipayClient = new DefaultAlipayClient(serverUrl, appId, privateKey, format, charset, alipayPulicKey, signType);}
8.2 封装交易支付接口alipay.trade.pay
/*** 条形码支付* https://doc.open.alipay.com/docs/doc.htm?spm=a219a.7629140.0.0.Yhpibd&treeId=194&articleId=105170&docType=1#s4* @throws AlipayApiException*/public static String tradePay(AlipayTradePayModel model) throws AlipayApiException {AlipayTradePayResponse response = tradePayToResponse(model);return response.getBody();}public static AlipayTradePayResponse tradePayToResponse(AlipayTradePayModel model) throws AlipayApiException{AlipayTradePayRequest request = new AlipayTradePayRequest();request.setBizModel(model);// 填充业务参数return alipayClient.execute(request); // 通过alipayClient调用API,获得对应的response类}
8.3 交易查询接口alipay.trade.query
/*** 交易查询接口* https://doc.open.alipay.com/docs/api.htm?spm=a219a.7395905.0.0.8H2JzG&docType=4&apiId=757* @param bizContent* @return* @throws AlipayApiException*/public static boolean isTradeQuery(AlipayTradeQueryModel model) throws AlipayApiException{AlipayTradeQueryResponse response = tradeQuery(model);if(response.isSuccess()){return true;}return false;}public static AlipayTradeQueryResponse  tradeQuery(AlipayTradeQueryModel model) throws AlipayApiException{AlipayTradeQueryRequest request = new AlipayTradeQueryRequest();request.setBizModel(model);return alipayClient.execute(request);}
8.4 交易撤销接口alipay.trade.cancel
/*** 交易撤销接口* https://doc.open.alipay.com/docs/api.htm?spm=a219a.7395905.0.0.XInh6e&docType=4&apiId=866* @param bizContent* @return* @throws AlipayApiException*/public static boolean isTradeCancel(AlipayTradeCancelModel model) throws AlipayApiException{AlipayTradeCancelResponse response = tradeCancel(model);if(response.isSuccess()){return true;}return false;}public static AlipayTradeCancelResponse tradeCancel(AlipayTradeCancelModel model) throws AlipayApiException{AlipayTradeCancelRequest request = new AlipayTradeCancelRequest();request.setBizModel(model);AlipayTradeCancelResponse response = alipayClient.execute(request);return response;}

9、使用沙盒环境测试

下载沙箱模式下的app【沙箱钱包

9.1 交易支付接口alipay.trade.pay测试

/*** 条码支付* https://doc.open.alipay.com/docs/doc.htm?spm=a219a.7629140.0.0.Yhpibd&treeId=194&articleId=105170&docType=1#s4*/public void tradePay() {String authCode = getPara("auth_code");String subject = "Javen 支付宝条形码支付测试";String totalAmount = "100";AlipayTradePayModel model = new AlipayTradePayModel();model.setAuthCode(authCode);model.setSubject(subject);model.setTotalAmount(totalAmount);model.setOutTradeNo(StringUtils.getOutTradeNo());model.setScene("bar_code");try {String resultStr = AliPayApi.tradePay(model);renderText(resultStr);} catch (Exception e) {e.printStackTrace();}}

打开沙箱钱包>付款>输入条形码测试

返回的结果

{"alipay_trade_pay_response": {"code": "10000","msg": "Success","buyer_logon_id": "abp***@sandbox.com","buyer_pay_amount": "100.00","buyer_user_id": "2088102169474200","fund_bill_list": [{"amount": "100.00","fund_channel": "ALIPAYACCOUNT"}],"gmt_payment": "2017-05-07 20:28:35","invoice_amount": "100.00","open_id": "20881035070193409461376162014620","out_trade_no": "050720283214941","point_amount": "0.00","receipt_amount": "100.00","total_amount": "100.00","trade_no": "2017050721001004200200238428"},"sign": "FZVBkb4tuqjM/3OZnAJJ8YFkGSmpcMIum+WdhCNURy+jSs5mZT2RZLlDuzVNHYoZQpItpVscDR86n87wFni/lhaNK0UvCkjQmSeBrmzuntFDrD8rh/KX3U3kpsQEmSzbI/E1VNYM3zL/lVPCnjkc9etVky8w690yHVqsRTBpjXDYUw91zdlm7iXjrRAv1vNWEhfaAgBh3toz8Asra03vFPMXaaGp4ARTI3AkjatH4zPO0JmDu3fMd+jk759FYW1qGf89LpLD/6ng+VNhu4rr3FC4RpLtYed9lKSrehlujGHSkhnWJcr0JZ6doYYF4aJuH7Eflyt+FCg/1JFzd0Mygw=="
}
9.2 交易查询接口alipay.trade.query测试
public void tradeQuery(){try {AlipayTradeQueryModel model = new AlipayTradeQueryModel();model.setOutTradeNo("050720283214941");model.setTradeNo("2017050721001004200200238428");boolean isSuccess = AliPayApi.isTradeQuery(model);renderJson(isSuccess);} catch (AlipayApiException e) {e.printStackTrace();}}

或者

public void tradeQueryByStr(){String out_trade_no = getPara("out_trade_no");AlipayTradeQueryModel model = new AlipayTradeQueryModel();model.setOutTradeNo(out_trade_no);try {String resultStr = AliPayApi.tradeQuery(model).getBody();renderText(resultStr);;} catch (AlipayApiException e) {e.printStackTrace();}}

返回的结果

{"alipay_trade_query_response": {"code": "10000","msg": "Success","buyer_logon_id": "abp***@sandbox.com","buyer_pay_amount": "100.00","buyer_user_id": "2088102169474200","fund_bill_list": [{"amount": "100.00","fund_channel": "ALIPAYACCOUNT"}],"invoice_amount": "100.00","open_id": "20881035070193409461376162014620","out_trade_no": "050720283214941","point_amount": "0.00","receipt_amount": "100.00","send_pay_date": "2017-05-07 20:28:34","total_amount": "100.00","trade_no": "2017050721001004200200238428","trade_status": "TRADE_SUCCESS"},"sign": "DE6qYfU0Nziv3Dxpaj0gUROcqMNmREwYUw/t9qlnLiuM1JkKEdNJtbyJZ8OCoOIkgXEOSs7+mOrGgyxmOQqccwwhkDDsYXhPnc0cy4M7L4sNl5S3nUaveBaZjk3SMMGif43UaYtVI6SF4kq74uyoH15tCWDJ0N3nYct2epgc7r6kprAFqQxszgYp4tfKLw0qPCKnUyo7+WRbrc6UWQVuK+xDlVcvivW5cXjAf/HFyb8o+ddj6g+QQ4jUN2WTc2QGpbtfum6G7oPHT99cjAURVRw2NmU5WfUXNazzSvisa2oYsl8EH7+XHvsAMyIUZw0Ix8ymuAXdMkrUPFY4PfzjIg=="
}
9.3 交易撤销接口alipay.trade.cancel测试
public void tradeCancelByStr(){try {AlipayTradeCancelModel model = new AlipayTradeCancelModel();model.setOutTradeNo("050720283214941");model.setTradeNo("2017050721001004200200238428");AlipayTradeCancelResponse response = AliPayApi.tradeCancel(model);renderJson(response.getBody());} catch (AlipayApiException e) {e.printStackTrace();}}
{"alipay_trade_cancel_response": {"code": "10000","msg": "Success","out_trade_no": "050720283214941","retry_flag": "N"},"sign": "QFwTwACi/x/qZu7YCapToWKpYDatg7Y06KAxij01PHSQrq0+l9eeFGdNIRpD2rSmkCVN75RQManw4PvIEurN5uW6YSZlZQ0Rj2EeH0eVyNWqNRWmVGeSaLQ+hpAt3vG/cy5vXJ1Zl7yr/VbtRiuSYrbzPhgkG1UNYf9JIb4Nj2iSpo8Ct6Bbhiq848w7ZEN6itBmd04N3O4HkBoueuXtgUmKoaTegDfrtNtQ7dRAkCRnoa43QbHYysqwOO751JjI6HOeviZUrTspegUFbqhSXInaZ4LMqeiPWXeXc7dRmtOlPOSRY5wYzYYNCmEe89HdyLFSzd447QS2b5Ky3wAY3w=="
}

测试结果图

转载于:https://www.cnblogs.com/zyw-205520/p/6843114.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/488360.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

solr做索引时抛出异常_Solr---gt;01

Solr介绍 什么叫做全文检索呢?这要从我们生活中的数据说起。 我们生活中的数据总体分为两种:结构化数据和非结构化数据。 1、结构化数据:指具有固定格式或有限长度的数据,如数据库,元数据等。 2、非结构化数据&a…

新冠肺炎疫情把科研推上“云端”

来源:新华网美国威斯康星国家灵长类动物研究中心的戴夫奥康纳清晨收到在伦敦的一名合作伙伴发来的论文预印本。这项研究在中国完成,两人通过企业协同云端办公软件Slack讨论了一上午。下午2点,奥康纳打开高清会议系统GoToMeeting,和…

CSDN专訪:大数据时代下的商业存储

原文地址:http://www.csdn.net/article/2014-06-03/2820044-cloud-emc-hadoop摘要:EMC公司作为全球信息存储及管理产品方面的率先公司,不久前。EMC宣布收购DSSD加强和巩固了其在行业内的领导地位,日前我们有幸採訪到EMC中国的张安…

兵棋推演有助于我们了解哪些战争知识?

来源:兵推天下菲利普塞班博士是英国伦敦国王学院战争研究系的战略研究教授,他也是兵棋专家和兵棋设计师。在30多年的教学生涯中,他将兵棋融合到了课堂教学中,向学生展示兵棋推演对军事规划工作的实际作用。在一次访谈中&#xff0…

2020 五大技术趋势:无人驾驶发展、机器视觉崛起、区块链实用化、人类增强技术、超自动化...

来源:机器人创新生态__自动驾驶技术的发展_近年来,自动驾驶技术一直在发展,特斯拉、英特尔等大公司在这一领域取得了长足的进展。虽然我们还没有达到L4级或L5级自动驾驶汽车的水平,但我们已经很接近了。为了解释每个级别的含义&am…

基于java的qq屏幕截图工具的设计与实现论文_众包学习:Web界面众包评估的通用工具包...

论文:Nebeling M , Speicher M , Norrie M C . CrowdStudy: general toolkit for crowdsourced evaluation of web interfaces[C]// Acm Sigchi Symposium on Engineering Interactive Computing Systems. ACM, 2013.摘要:传统的可用性测试方法既费时又昂…

福布斯2020年AI领域10大预测:人工智能越来越“边缘化”!

来源:人工智能和大数据毫无疑问,人工智能(AI)一直是2010年代的技术主题,随着新的十年的来临,这一趋势似乎不会消失。在过去的十年中,人们会回想起真正可以被视为“智能”机器的时代,…

spss数据_职场白骨精进阶秘籍——SPSS数据分析基础

点击上方“蓝字”关注我们吧!想做数据分析,不会编程怎么办?如何让自己的数据分析更加专业?职场打拼,如何快速提升自己的竞争力?著名的未来学家托夫勒在其所著的《第三次浪潮》中将“大数据”称颂为“第三次…

人工智能和自主系统在美军联合职能中的应用

来源:知远战略与防务研究所【知远导读】随着人工智能/自主系统技术的快速发展及其在军事领域的持续应用,智能化、无人化日渐成为未来战争的发展方向。美国作为世界军事发展潮流的引领者,正在积极探索人工智能/自主系统与联合部队作战职能的融…

oracle怎么把整形,【用bbed工具对Oracle进行微整形】

CUUG ORACLE大师网络免费课程——将个人姓名、电话发送到SIGNUPCUUG.COM即可报名CUUG新增“即时同步互动远程授课”,足不出户学ORACLE!详情见:HTTP://ORACLE.CUUG.COM/DBA1.HTML2013韩国小姐选美比赛佳丽样貌神似,难以分辨,无论是…

这篇长达165页的论文,用一个里程碑式的证明同时解决了量子物理学和理论数学的难题...

来源:机器之心计算机科学、数学、物理学,这三个学科各自的一些重大难题在近日发布的一篇标题简洁的论文《MIP*RE》中同时得到了解答。在该论文中,五位计算机科学家为可通过计算方式验证的知识确立了一个新的边界。基于此,他们又为…

mysql timestamp 不走索引_面试 - 要不简单聊一下你对MySQL索引的理解?

MySQL索引?这玩意儿还能简单聊?明显是在挖坑,幸好老夫早有准备,切听我一一道来。 一、索引是什么?索引是帮助MySQL高效获取数据的数据结构。二、索引能干什么?索引非常关键,尤其是当表中的数据量越来越大时&#xff…

亚马逊首家“无人超市”系统存在bug?!开业当天,记者中途换装成功骗过摄像头...

来源:大数据文摘2018年,亚马逊推出了无人便利店Amazon Go,本着“无需排队、拿完就走”的理念在当时掀起了一番热潮。两年后,亚马逊“无人购物”升级,又在西雅图开设了“Plus版无人超市”Amazon Go Grocery(…

创新是低情商的人做的

评语:这时一个有趣的思考,不算是正式的研究,但可以算是有价值的科学火花,创新本身或许就是得罪人的事情,或者要推翻别人的观点,引起他人不高兴,或者他人有不同意见,要争论和辩解&…

【12.23】转行小白历险记-算法02

不会算法的小白不是好小白,可恶还有什么可以难倒我这个美女的,不做花瓶第二天! 一、螺旋矩阵 59. 螺旋矩阵 II - 力扣(LeetCode) 1.核心思路:确定循环的路线,左闭右开循环,思路简…

MySQL 5.7.18 解压版安装

原文链接:https://my.oschina.net/u/3474266/blog/895696 我在安装免安装版的5.7.18的时候出现了问题,正好找到这个,十分感激 今天下载安装了MySQL Community Edition 5.7.18压缩版,过程中遇到了一些坑,特地写个博客记…

订单失效怎么做的_?糟了,刚发货的订单竟然被取消掉了?我该怎么办!

“叮叮!您的Newegg国际商城有新订单啦,请及时查看!”又来新订单了,赶紧打包发货!可是三天后……“尊敬的商家您好,您的订单超过72 小时未发货,系统已经自动取消该订单”。什么?订单被…

6G概念及愿景白皮书

来源:中国指挥与控制学会“本白皮书将从6G愿景、6G应用场景、6G网络性能指标、6G潜在关键技术、国际组织和各国6G研究进展等方面展开讨论,并提出加快推进我国6G研发的相关建议。”编写 | 赛迪智库无线电管理研究所 执笔 | 彭健 孙美玉 滕学强目录一、前言…

git编译安装与常见问题解决

1. 先去官网下载一个安装包 ,假设目录/APP/ido2. cd /APP/ido3. tar -zxvf git-2.7.2.tar.gz4. 安装依赖yum -y install gcc openssl openssl-devel curl curl-devel unzip perl perl-devel expat expat-devel zlib zlib-devel asciidoc xmlto gettext-devel openss…

哺乳动物亚种在物种进化中至关重要

查尔斯达尔文的《物种起源》一书来源:科技日报 图片来源:物理学家组织网据物理学家组织网18日报道,查尔斯达尔文逝世约140年后,其进化论的一个理论终获证实!英国剑桥大学科学家在18日出版的《英国皇家学会学报B卷》上撰…