文档中心 > 技术支持产品对接方案

小程序一码多付方案

更新时间:2019/04/23 访问次数:463

 业务需求

 

一码多付是通过一个码完成多种第三方支付的支付方式,小程序一码多付是将原商户开发的一码多付产品在不变更物料的情况下,将H5页面切换为小程序页面,客户单获取用户信息、唤起收银台等操作均在小程序内调用JS接口完成。实现小程序下单支付。

 

技术方案

一 创建小程序

 

创建小程序目前只支持企业账号,可以用签约过当面付等业务的账号来创建,方便创建好小程序后直接添加功能使用;如用全新的企业账号创建小程序,则开发中用到的功能需要在新账号上签约。
创建小程序时有三种身份的选项,根据文案提示来选择即可。
需要注意:小程序上架后,小程序应用名称将不允许修改,在上架前是可以修改的,所以注意下小程序最终名称。

 

参考文档:开发者入驻       创建小程序

 

二、开发前准备

 

小程序只支持RSA2签名。创建好小程序后可以配置签名方式,如之前有正在用的RSA2秘钥,可以与小程序共用。
配置HTTPRequest接口请求域白名单。支付宝小程序限制支付宝客户端域内调用,需要进行域外调用时,比如获取图片、获取后台数据等,请在“小程序详情/设置”中添加httpRequest接口请求域名白名单,最多可添加5个Url
添加开发者/体验者。开发者是进行小程序开发的人员,系统默认开发者也是体验者;体验者是可以扫小程序二维码体验小程序功能的人员。每个小程序可添加30个开发者和50个体验者(如人员不够,可以说明原因联系BD,增加人员上限)
查看小程序功能列表是否已包含了将要用到的功能包,并都是已生效状态。

 

参考文档:小程序开发者准备        此文档保护的小程序开发工具下载、工具使用说明、UI规范等请一定详细了解。

 

三、获取用户信息

 

原一码多付识别扫码客户端来源的逻辑不变。用户扫码成功后,需要获取用户的userid,原H5逻辑中是通过拼接授权链接完成授权,在小程序中使用JSAPI来唤起授权。JSAPI获取会员信息也分为展示授权框和不展示授权框(静默授权仅获取用户userid)两种,根据入参中scopes的值来区分:弹授权框:auth_user;不弹授权框:auth_base。

 

https://docs.open.alipay.com/284

原获取用户信息逻辑

小程序获取用户信息逻辑

拼接授权链接获取用户授权AuthCode

客户端JSAPI唤起授权

原H5页面获取用户信息授权逻辑,详见:

客户调用JS获取授权code,通过配置的HTTPRequest地址传递给自己的服务端,服务端调用alipay.system.oauth.token;alipay.user.info.share这两个接口的逻辑与H5相同。API见参考文档。

授权链接中使用的是普通应用APPID,

客户端使用小程序APPID调用

参考文档:https://docs.alipay.com/mini/introduce/auth   可重点关注文档中的授权逻辑和代码示例。

四、小程序支付

 

一码多付H5下单逻辑与代码示例在切换到小程序后的不同点对比

https://doc.open.alipay.com/docs/doc.htm?&docType=1&articleId=105672

https://docs.alipay.com/mini/introduce/pay

原H5下单逻辑

小程序下单逻辑

客户端获取userid传递给服务端,赋值到buyer_id参数中,服务端调用接口发起下单请求获取trade_no

逻辑相同

客户端拿到trade_no后调用JS唤起收银台,其中用到的JS方法示例:  // 通过传入交易号唤起快捷调用方式(注意tradeNO大小写严格)

 

  AlipayJSBridge.call("tradePay", {
                 tradeNO: tradeNO
            }, function (data) {
                log(JSON.stringify(data));
                if ("9000" == data.resultCode) {
                    log("支付成功");
                }
            }

客户端拿到trade_no后,调用小程序JSAPI唤起收银台,方式示例://注意tradeNO大小写严格

my.tradePay({
tradeNO: '2017111521001104105336677922',  
success: function(res) {
my.alert(res.resultCode);
},
fail: function(res) {
         my.alert(res.resultCode);
      },
});

调用接口的账号使用的是与支付宝签约账号,且前后端一致。

客户端调用JS的APPID使用小程序的账号;服务端使用账号不变,仍用原签约账号。原签约账号对应的签约关系、返佣关系等均不会受到影响。

 

 

详见参考文档:

详见参考文档:重点关注调用逻辑和示例代码。

五、上线前灰度

 

小程序研发完毕提交上线审核,支付宝端审核通过后,商户端还需要操作一个灰度的过程,全量灰度后才正式全面上线。
目前灰度方式支持 按用户百分比灰度 和 添加白名单方式灰度(这个功能要双十一之后支持)。
白名单灰度需要提供可跳小程序的商户支付宝账号对应的pid,给到BD同学进行配置,配置成功后只有白名单中的商户一码多付扫码后会跳小程序。这个功能适用于通过“关联普通二维码”功能无法精确匹配到对应商户的情况,“关联普通二维码”在第六部分有讲到。

 

参考文档:https://docs.alipay.com/mini/introduce/release  提审、发布与修改小程序信息的内容都在这个文档。

 

六、关联普通二维码

 

普通二维码:是指开发者使用工具对网页链接进行编码后生成的二维码  在这里指一码多付的码。
小程序与普通二维码关联后,可以在不用变更线下物料的情况下由H5切换到小程序。
关联二维码时支持精确匹配与模糊匹配两种规则。精确匹配是通过设置匹配规则来匹配指定的商家使用小程序;模糊匹配适用于推广支付页面全部使用小程序。

 

参考文档:https://docs.alipay.com/mini/introduce/vzd5v0   请注意精确匹配与模糊匹配的规则。

 

注意:关联好二维码后,提供小程序appid,码管理添加的网址(附带码管理截图更好,如上),申请原因:清空服务端小程序码平台对应的网址缓存 提供给BD,由BD转发对应的人刷新缓存。否则关联成功后,线上用户扫二维码还是会跳H5。

 

七、常见问题

 

  1.  

request在不同业务层面调用方式有差别,json对象与string没有明确的标准,调试比较麻烦

         由于考虑到业务的兼容性,目前对于API来说,json和string做了底层兼容,推荐使用json格式。

 

  1.  

由于扫码入口业务会比较多,不同的扫码入口展示出来的功能不同,公共依赖的请求数据在一些功能页面加载出来之前回调,也可能在之后回调,需要做生成周期执行判断,如果不出来会表现出来一会展示正常,一会展示不正常(不正常是由于想当然认为目标page加载在回调之前已经完成)

           扫码支持自定义参数,启动参数可以通过 onLaunch({query}) 获取,格式为key1=value1&key2=value2

 

  1.  

生活号/小程序支付成功后推荐会互斥,优先展示生活号。

           目前是这样的关系,后面会增加小程序的权重,请期待。

 

  1.  

关联二维码后,扫码依然进入H5,没有进小程序。

            需要联系bd,提供二维码关联页面截图和小程序appid,应用名称,走内部流程刷新缓存。

FAQ

关于此文档暂时还没有FAQ
返回
顶部