【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>
支付宝小程序: 支付功能集成
1. IDE开发工具 下载
2. 注册个人开发者账号 这里
3.介绍
- 小程序支付和 APP 支付的支付流程与体验基本一致,小程序支付也支持核销口碑券和口碑商户优惠功能;
- 已签约小程序支付或在口碑开店的商户建议接入小程序支付;
- 小程序支付在小程序内不能通过扫码、条码、声波付等方式支付,只能唤起收银台进行支付;
- 目前小程序支付还不支持免密支付。
4.小程序支付的准入条件(需签约认证)
- 申请者必须拥有经过实名认证的支付宝账户;
- 企业或个体工商户均可申请;
- 需提供真实有效的营业执照,且支付宝账户名称需与营业执照主体一致;
- 网站能正常访问且页面显示完整,网站需要明确经营内容且有完整的商品信息;
- 网站必须通过 ICP 备案。如为个体工商户,网站备案主体需要与支付宝账户主体名称一致;如为个体工商户,则团购不开放,且古玩、珠宝等奢侈品、投资类行业无法申请本产品。
5.小程序支付的使用流程如下:
- 用户在小程序中选择商品下单并确认购买,进入支付环节,用户点击确认支付;
- 进入到支付宝页面后,小程序唤起支付宝支付,出现支付界面;
- 用户确认收款方和金额,点击 立即付款 后进行支付;
- 输入正确支付密码后,显示支付成功页;
6.计费模式:
- 费率按单笔计算。
- 一般行业费率:0.6%;
- 特殊行业费率:1.2%,特殊行业范围包括:手机、通讯设备销售;家用电器;数码产品及配件;休闲游戏;网络游戏点卡、渠道代理;游戏系统商;网游周边服务、交易平台;网游运营商(含网页游戏)
接入小程序支付流程:
1.创建小程序
2.添加功能
- 小程序创建完成后,在
功能列表
部分点击添加功能
来为创建的小程序添加功能,如图(需进行签约认证):
3.签约功能 小程序支付需要签约才能生效,在小程序上线后,请点击功能列表右侧对应功能的 签约 链接;签约成功后,需要 1 个工作日左右的审批时间(审批结果会以短信和邮件形式告知),审批成功后,功能状态会变为“已生效”,即可调用小程序支付功能。
4.集成并配置 SDK
- 服务端 SDK 需要商户集成在自己的服务端系统中,用于后续的服务端接口调用;
- 下载服务端 SDK:提供了开放平台服务端 SDK,包含 JAVA、PHP、NodeJS、Python 和 .NET 五种语言,封装了签名 & 验签、HTTP 接口请求等基础功能。请先下载对应语言版本的 SDK 并引入您的开发工程;
- 接口调用配置(在 SDK 调用前需要进行初始化),以Java为例:
AlipayClient alipayClient = new DefaultAlipayClient(URL,APP_ID,APP_PRIVATE_KEY,FORMAT,CHARSET,ALIPAY_PUBLIC_KEY,SIGN_TYPE);
- 关键参数说明:
| 配置参数 | 示例值解释 | 获取方式/示例值 |
|:--:|:--:|:--:|
URL | 支付宝网关(固定)|
[支付宝 - 网上支付 安全快速!](https://openapi.alipay.com/gateway.do)
APPID|APPID 即创建应用后生成| 获取见创建应用 APP_PRIVATE_KEY | 开发者私钥,由开发者自己生成 | 获取见配置密钥 FORMAT|参数返回格式,只支持 json|json(固定) CHARSET|编码集,支持 GBK/UTF-8|开发者根据实际工程编码配置 ALIPAY_PUBLIC_KEY|支付宝公钥,由支付宝生成|获取详见配置密钥 SIGN_TYPE|商户生成签名字符串所使用的签名算法类型,目前支持 RSA2 和 RSA,推荐使用 RSA2|RSA2 接下来,就可以用 alipayClient 来调用具体的 API 了。alipayClient 只需要初始化一次,后续调用不同的 API 都可以使用同一个 alipayClient 对象。
5.调用接口(小程序支付调起流程)
-
在小程序端调用 my.request 接口,连接到商户服务端:
my.request({ url: '商户服务端地址',//须加httpRequest域白名单 method: 'POST', data: {//data里的key、value是开发者自定义的 from: '支付宝', order: 'XXXXX',//订单信息 }, dataType: 'json', success: function(res) { my.alert({content: 'success'}); }, fail: function(res) { my.alert({content: 'fail'}); }, complete: function(res) { my.hideLoading(); my.alert({content: 'complete'}); } });
-
在服务端调用 alipay.trade.create (统一收单交易创建接口),获得支付宝交易号 tradeNO(以 Java 代码为例):
//实例化客户端 AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", APP_ID, APP_PRIVATE_KEY, "json", CHARSET, ALIPAY_PUBLIC_KEY, "RSA2"); //实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.trade.create. AlipayTradeCreateRequest request = new AlipayTradeCreateRequest(); //SDK已经封装掉了公共参数,这里只需要传入业务参数。 request.setBizContent("{" + "\"out_trade_no\":\"20171115010101001\"," +//可以随机生成订单号:String outTradeNo = UUID.randomUUID().toString().replace("-", ""); "\"total_amount\":0.01," + "\"subject\":\"Iphone616G\"," + "\"buyer_id\":\"用户pid\"" + "}"); try { //使用的是execute AlipayTradeCreateResponse response = alipayClient.execute(request); String trade_no = response.getTradeNo();//获取返回的tradeNO。 } catch (AlipayApiException e) { e.printStackTrace(); }
buyer_id
是支付宝小程序授权登录成功后获取到的支付宝 user_id,获取方法可以参考 用户授权文档▲注意:
在小程序场景内 alipay.trade.create 接口中的“buyer_id”为必填项,若未传入调式时会出现报错。推荐使用开放平台提供的服务端 SDK,并参考代码示例编写;具体业务参数请参考 API 文档。
-
在小程序端使用 tradeNO,调用 my.tradePay 接口唤起支付收银台:
my.tradePay({ tradeNO: '2017111521001104105336677922', success: function(res) { my.alert(res.resultCode); }, fail: function(res) { my.alert(res.resultCode); }, });
▲注意(如果在调用 API 时出现报错,可以):
来源:oschina
链接:https://my.oschina.net/xiaoLoo/blog/3146640