网络应用续订支付接口

支付流程说明

1434706053921_a87ff679a2f3e71d9181a67b7542122c (1).jpg

消费流程:

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

APItaobao.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

付款方支付宝账号