小程序支付

产品介绍

小程序支付和APP支付的支付流程与体验基本一致,小程序支付也支持核销口碑券和口碑商户优惠功能。已签约小程序支付或在口碑开店的商户建议接入小程序支付。小程序支付在小程序内不能通过扫码、条码、声波付等方式支付,只能唤起收银台进行支付。

产品流程

  • 用户在小程序中选择商品下单并确认购买,进入支付环节,用户点击确认支付;
  • 进入到支付宝页面后,小程序唤起支付宝支付,出现支付界面;
    undefined

  • 用户确认收款方和金额,点击“立即付款”后进行支付;

  • 输入正确支付密码后,显示支付成功页;
    undefined

  • 点击支付成功页右上角“完成”,跳转到自定义页面,开发者可根据付款结果个性化展示订单处理结果。

准入条件

该产品使用者需要签约,条件详见下方“签约要求”。

计费模式

费率按单笔计算。一般行业费率:0.6%;特殊行业费率:1.2%,特殊行业范围包括:手机、通讯设备销售;家用电器;数码产品及配件;休闲游戏;网络游戏点卡、渠道代理;游戏系统商;网游周边服务、交易平台;网游运营商(含网页游戏)。

接入介绍

添加小程序支付

开发者在小程序详情页的功能列表中添加“小程序支付”功能。

undefined

签约小程序支付

小程序支付需要签约才能生效,请点击功能列表右侧“立即签约”,签约成功后,状态置为“已生效”,即可调用小程序支付。

签约要求

  • 申请前必须拥有经过实名认证的支付宝账户;
  • 企业或个体工商户可申请;
  • 需提供真实有效的营业执照,且支付宝账户名称需与营业执照主体一致;
  • 网站能正常访问且页面显示完整,网站需要明确经营内容且有完整的商品信息;
  • 网站必须通过 ICP 备案。如为个体工商户,网站备案主体需要与支付宝账户主体名称一致;如为个体工商户,则团购不开放,且古玩、珠宝等奢侈品、投资类行业无法申请本产品。

接入小程序支付

小程序支付调用流程如下图所示:

时序图模版.png

主要步骤

前提:请先了解小程序框架支付宝开放平台服务端SDK

  1. 在小程序端调用 httpRequest 接口,连接到商户服务端。
  1. my.httpRequest({
  2. url: '商户服务端地址',//须加httpRequest域白名单
  3. method: 'POST',
  4. data: {//data里的key、value是开发者自定义的
  5. from: '支付宝',
  6. order: 'XXXXX',//订单信息
  7. },
  8. dataType: 'json',
  9. success: function(res) {
  10. my.alert({content: 'success'});
  11. },
  12. fail: function(res) {
  13. my.alert({content: 'fail'});
  14. },
  15. complete: function(res) {
  16. my.hideLoading();
  17. my.alert({content: 'complete'});
  18. }
  19. });
  • 在服务端调用 alipay.trade.create (统一收单交易创建接口),获得支付宝交易号 tradeNO(以 Java 代码为例)。
  1. //实例化客户端
  2. AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", APP_ID, APP_PRIVATE_KEY, "json", CHARSET, ALIPAY_PUBLIC_KEY, "RSA2");
  3. //实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.trade.create.
  4. AlipayTradeCreateRequest request = new AlipayTradeCreateRequest();
  5. //SDK已经封装掉了公共参数,这里只需要传入业务参数。
  6. request.setBizContent("{" +
  7. "\"out_trade_no\":\"20171115010101001\"," +
  8. "\"total_amount\":0.01," +
  9. "\"subject\":\"Iphone616G\"," +
  10. "\"buyer_id\":\"用户pid\"" +
  11. "}");
  12. try {
  13. //使用的是execute
  14. AlipayTradeCreateResponse response = alipayClient.execute(request);
  15. String trade_no = response.getTradeNo();//获取返回的tradeNO。
  16. } catch (AlipayApiException e) {
  17. e.printStackTrace();
  18. }

注意:在小程序场景内 alipay.trade.create 接口中的“buyer_id”为必填项,若未传入调式时会出现报错。推荐使用开放平台提供的服务端 SDK,并参考代码示例编写;点击下载服务端 SDK。具体业务参数请参考统一收单交易创建接口。

  1. 在小程序端使用 tradeNO,调用 my.tradePay 接口唤起支付收银台。
  1. my.tradePay({
  2. tradeNO: '2017111521001104105336677922',
  3. success: function(res) {
  4. my.alert(res.resultCode);
  5. },
  6. fail: function(res) {
  7. my.alert(res.resultCode);
  8. },
  9. });

API 介绍

接口名称接口中文名称
alipay.trade.create统一收单交易创建接口
my.tradePay小程序唤起支付
my.httpRequest向指定服务器发起一个跨域 http 请求

补充说明