[支付宝小程序]-支付功能集成

99封情书 提交于 2019-12-24 15:24:21

【推荐】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 时出现报错,可以):

  • 公共错误码 中根据错误码的类型,查找相关错误码及解决方案;
  • 小蚂哥 问答页面直接输入您遇到的错误码;
  • 在技术支持 帮助中心 搜索相关错误码,找到解决方案。
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!