此项目已开源欢迎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

支付宝支付-刷卡支付(条码支付)相关推荐

  1. 支付宝支付开发——当面付条码支付和扫码支付

    原文: http://www.cnblogs.com/txw1958/p/alipay-f2fpay.html 本文介绍支付宝中当面付下属的条码支付.扫码支付.订单查询.退款申请的集成开发过程. 本文 ...

  2. 支付宝支付开发—当面付条码支付和扫码支付

    关键字:支付宝 当面付 条码支付 扫码支付 二维码支付 订单查询 退款 作者:方倍工作室 原文:https://www.cnblogs.com/txw1958/p/alipay-f2fpay.html ...

  3. php 支付宝退款,退款接口(条码支付)

    调用此接口发起全额退款或部分退款请求.退款请求无法撤销. #网关URL 注意: 如果使用POST方法,请在请求URL中传入_input_charset.例如:https://mapi.alipayde ...

  4. 在sdk中添加源文件_实用干货 | 一步一步教你在SpringBoot中集成微信刷卡支付

    一:准备工作 使用微信支付需要先开通服务号,然后还要开通微信支付,最后还要配置一些开发参数,过程比较多. 申请服务号(企业) 开通微信支付 开发配置 具体准备工作请参考Spring Boot入门教程( ...

  5. 商户接入微信支付方法(扫码支付、刷卡、app)

    微信支付的几种方式解读: 微信支付商户平台的付款方式有以下几种: 公众号支付:在微信内的商家页面上完成公众号支付 APP支付:在APP中,调起微信进行APP支付 扫码支付:扫描二维码(包含PC网站)进 ...

  6. 微信公众号之刷卡支付

    此篇文章具体来聊聊微信刷卡支付 刷卡支付-官方文档 场景介绍 步骤1:用户选择刷卡支付付款并打开微信,进入"我"->"钱包"->"刷卡&q ...

  7. 通过C#生成支付宝收款码 三(支付宝官方SDK配合沙箱调试扫条码支付)

    1.下载官方的SDK文件:支付宝服务端老版SDK 2.将下载的SDK项目生成成NuGet,具体操作如下: 3.通过支付宝自动接入工具生成条码支付源码,如下图所示: 然后复制源码,我现在用的是DONET ...

  8. Android微信刷卡支付开发

    微信开发不容易,在于各个环节的理解和疏通. 支付类型分为几种,每种的业务也不相同,所以就困扰了很多人,我也抱怨过资料的混乱,没办法慢慢梳理. 摸索过后才知道我需要的是刷卡支付业务.公司的Android ...

  9. 聚合支付市场怎么样?聚合支付带来哪些优势?

    在现代信息技术的支持下,支付电子化成为一种市场趋势和支付潮流.从传统的现金支付或刷卡支付走向支付工具的多元化,解决了传统收银速度慢.排队时间长等问题,不仅提高了收银效率,也提升了消费者的消费体验. 支 ...

最新文章

  1. [转]Linux下的Makefile
  2. [转]总结使用Unity 3D优化游戏运行性能的经验
  3. 计算机网络管理员适用单位,计算机网络管理员软考理论复习题(附答案).(40页)-原创力文档...
  4. scala部分应用函数_Scala中的部分函数
  5. Weave Scope安装
  6. SpringCloud config 配置中心集群配置以及整合消息总线BUS实现关联微服务配置自动刷新
  7. 理解包装类 Integer 的底层实现,教你破解所有面试难题!
  8. python调用接口获取数据_python:接口间数据传递与调用方法
  9. openresty的html文件夹在,Openresty 配置访问静态文件,拆分路径
  10. viewUrl 终结者
  11. mapboxgl 互联网地图纠偏插件(三)
  12. 这种铜公加工时很容易变开,加工时要用新刀,刀要小点,进刀也不能太大
  13. word排版案例报告_看完这4个文章排版要点,你就会排版啦!
  14. 计算机课小组主题作业,小组作业软件工程课程设计(选作).doc
  15. 老闪创业那些事儿(4)——A轮融资的选择
  16. 阿里Apsara Clouder专项技能认证:实现调用API接口——笔记
  17. 为什么很多硅谷工程师偏爱 OS X,而不是 Linux 或 Windows
  18. 混沌麻雀搜索优化算法-附代码
  19. [codeforces 718E]Matvey's Birthday
  20. 用遗传算法GA改进CloudSim自带的资源调度策略

热门文章

  1. Express 路由模块化以及 Express 应用程序生成器
  2. LeetCode 1865. 找出和为指定值的下标对(哈希)
  3. hadoop 单机伪分布式安装步骤
  4. LeetCode 1464. 数组中两元素的最大乘积
  5. 谷歌插件开发ajax请求,chrome插件 注入js以及发送ajax(message/request)
  6. antd的 input有下拉_解决antd 下拉框 input [defaultValue] 的值的问题
  7. 服务器select与gevent
  8. SQL基础知识:DDL、DML、DQL
  9. 数据分析常用Python库:数值计算、可视化、机器学习等领域
  10. svn忽略指定文件夹下的文件_管理SteamLibrary文件夹下的acf文件