网络应用续订支付接口
支付流程说明
消费流程:
1) 用户在App中发起支付,App调用SDK支付接口payFromServer
2) SDK与Ali服务端进行支付确认后,向用户显示支付页面
3) 用户确认支付后,SDK向Ali服务端发起并完成支付
4) Ali服务端 将支付结果反馈给SDK,并通知App服务端
5) App服务端通过回调的订单信息,决定是否向App的用户发放道具
网络应用续订首次支付
接口说明:
public static void repayFromServer,实现自动续费功能,应用若需接入续费支付接口,需联系阿里运营配置开通。首笔续费将通过客户端实时完成,后续续费通过应用的服务端调用数娱的服务端实现。请注意续费接口的规则,不满足规则的调用将无法实现首笔支付或后续支付。
前置条件:无
函数原型:
public static void repayFromServer (String subject, String orderId, String interval, List<String> priceList, String description, final String title, final String notifyUrl, final String subjectId, final IPayListener payListener)
参数说明:
subject:续费商品包,如“影视包月”
orderId:订单号,CP的服务端生成
interval:自动续费模式 (month:按月、season:按季),只支持两种固定模式;无论按月或按季度都仅支持1年内的续费,即按月续费时,后续应用服务端最多可发起11次续费请求,按季续费后续最多可发起3次续费。
priceList:价格列表,包含本次消费,后续每次续订消费金额
description(可选):业务权益结束时间,若没有则为空
title:支付目标商品 ,如“xx影视”
notifyUrl:支付结束后,阿里服务器回调给CP服务器的回调地址
subjectId(可选) 商品ID,如为空,则无法参加消费激励活动,建议必填。
payListener:回调函数,支付结束后通知成功或者失败。
请求样例:
AliTvSdk.pay("XX商品", "12345678", "month", Arrays.asList(arr), "权益描述", "支付物品名称", "http://setbycp2", null, new IPayListener(){ @Override public void onSuccess(String title, int amount) { TestToast.show("支付成功"); } @Override public void onError(String title, int amount, String errMsg) { TestToast.show("支付失败, 原因:" + errMsg); } @Override public void onError(String errCode, String errMsg) { TestToast.show(" 支付失败。" + errCode + ":" + errMsg); } @Override public void onCancel(String title, int amount) { TestToast.show("支付取消"); } });
网络应用续订后续支付
接口说明:
商户在使用客户端成功创建续费序列后,可以通过服务端,向支付后台发送续费请求。
接入方式:TOP
TOP接入指南见
//open.taobao.com/doc2/detail.htm?spm=a219a.7629140.0.0.jlQptD&treeId=49&articleId=101617&docType=1
TOP辅助工具类(java)见附录。
API:
taobao.tvpay.partner.renewal.pay
请求参数结构:
参数名称 | 参数说明 | 是否必填 | 详情 |
partner_notify_url | 回调地址 | 是 | |
partner_order_no | 该笔订单的商户订单号 | 是 |
|
price | 价格,以人民币分为单位 | 是 | 需和最初创建序列时一直,否则会报错。 |
ref_order_no | 序列首笔订单商户订单号 | 是 | 从sdk创建序列时,该笔订单对应的商户订单号。 |
Seq | 续费序列号。 | 是 | SDK上支付的首笔seq算作0,从后台续费的第一笔seq为1,类推。 |
Subject | 商品标题 | 是 |
|
subject_id | 商品id | 是 |
|
返回基础结构说明:
字段 | 说明 |
Code | success:成功 |
message | 提示信息或错误信息 |
data.data | 返回业务参数(需要RSA方式使用私钥解密,得到json串并解析成结构化的data参数) |
返回基础结构样例:
{ "tvpay_partner_renewal_pay_response":{ "result":{ "code":"success", "data":{ "order_status":"TRADE_SUCCESS" }, "message":"success", "success":true } } }
如果请求成功(success为true),参考order_status字段校验订单状态
WAIT_BUYER_PAY 等待买家支付
TRADE_SUCCESS 支付成功
TRADE_CLOSED 交易关闭
如果请求失败,请参考错误码code字段,分析错误原因。
TERM_COUNT_EXCEED_LIMIT,账期过多
RENEWAL_PRICE_ERROR,金额校验未通过
RENEWAL_PRICE_EXCEED_LIMIT 续费总额超过限制
RENEWAL_ORDER_NOT_ALLOWED 应用暂不支持续费
RENEWAL_ORDER_INFO_ERROR 订单信息有误
RENEWAL_THREAD_NOT_FOUND 未找到续费序列
RENEWAL_THREAD_STATUS_ERROR 续费序列状态异常
RENEWAL_ORDER_PAY_FAIL 续费订单支付失败
RENEWAL_TIME_ERROR 未到续费时间
RENEWAL_THREAD_SEQ_ERROR 续费账期有误
--------------------------------------------------------------------------------
服务端支付成功后回调通知
接口说明:
第三方应用需要开发一个HTTP服务,并提供的服务器接口地址,比如:http://第三方应用服务端地址/XXX 数娱服务端使用商户提供的公钥(public_key)对参数加密生成加密串encryptString(解密出来为json格式),并在app请求提供的URL(参数为:notify_url)中加入本次成功的订单信息加密串(格式为:notify_url?data=encryptString) 数娱服务端将上述信息 向APP服务端发送http请求,若收到返回信息为“success”,则发送成功,若返回信息为其他,递增时间间隔重发。
Data解密后数据结构:
键名(key) | 值(value) |
partner_order_no | 商户订单号 |
alipay_trade_no | 支付宝交易流水号 |
order_status | 订单状态 |
WAIT_BUYER_PAY等待买家支付 | |
TRADE_SUCCESS 支付成功 | |
TRADE_CLOSED交易关闭 | |
buyer_logon_id | 付款方支付宝账号 |
服务器端主动查询订单支付状态
接口说明:
商户可以通过该接口主动查询订单支付状态,主要用于客户端支付成功后,商户接到收支付成功后主动查询一次,用于验证订单是否已支付成功。
接入方式:TOP
TOP接入指南见://open.taobao.com/doc2/detail.htm?spm=a219a.7629140.0.0.jlQptD&treeId=49&articleId=101617&docType=1
API:taobao.tvpay.partner.order.query
请求参数结构:
参数名称 | 参数说明 | 是否必填 | 详情 |
order_no | 商户订单号 | 是 | 商户自己的订单号 |
返回基础结构说明:
字段 | 说明 |
code | success:成功 |
message | 提示信息或错误信息 |
data.data | 返回业务参数(需要RSA方式使用私钥解密,得到json串并解析成结构化的data参数) |
返回基础结构样例:
{ "tvpay_partner_order_query_response": { "result": { "code": "success", "data": { "data": "PG5Qgxp5C+Muqohd7s01IE9SK/VnYVSxsY7nPqHFR8d+tjx3qLBeTu8llVi0+yaQHdMl/ZMTXxhchl9FiruOkX+GL5aN4S+/C68Tq5Os5dT4iilwNaDT6gw2pBtMUR9maVfXukcvFMLSx7d9XsjebWpapqTMgjOkMQjOHUA0GtcdgfFPE4sFxwB0+8SdbOYF1qoEkBoU8o0brd6/tFTJkqn/uJUbHOoqqLXCB3LmxShRa4m8KRsVPfSavOEjcSO7yfNTu7cLhGoOCRL5ffwLWVxyPRpaLfm0O8CJi9Cllb5nndWzh1zoXUtyBdfw9iHzbE0C7WArO5+YLKVCzA5c4A==" }, "message": "success", "success": true }, "request_id": "118g71ywn59zf" } }
data解密后数据结构:
键名(key) | 值(value) |
partner_order_no | 商户订单号 |
alipay_trade_no | 支付宝交易流水号 |
order_status | 订单状态 |
WAIT_BUYER_PAY等待买家支付 | |
TRADE_SUCCESS 支付成功 | |
TRADE_CLOSED交易关闭 | |
price | 订单价格,以人民币分为单位 |
subject | 商品标题 |
subject_id | 商品id |
buyer_logon_id | 付款方支付宝账号 |