移动流量
平台概述¶
又拍云手机流量营销平台,整合移动、电信、联通三大运营商流量资源,将强大的流量营销服务,通过接口等形式提供给商家合作伙伴,帮助商家开展品牌宣传、APP/游戏/微信公众号/网站的拉新与促活等多种营销活动。
通过接入又拍云流量营销平台,商家可以获得更多流量、用户和收益,而商家提供的活动也让用户获得了三网通用流量和更加丰富的活动体验。
产品特点¶
1.三网通用,成本优势,覆盖面广
2.快速对接、全流水、易对账、精结算
应用场景¶
1.APP 下载赠流量
2.微信公众号增粉
3.奖品礼券
4.流量加油站
5.积分兑换流量
6.活动比赛送流量
7.流量红包
8.员工福利
对接说明¶
1.请联系商务(Tel:0571-89775132)确定您的应用场景需求,获取对应流量报价
2.注册又拍云账号,如果您已有账号,请登录 又拍云控制台 完成企业/个人认证
3.前往导航 > 工具箱 > 手机流量营销页面,开通该服务(开通邮件中包含接口地址)
4.通过流量营销控制台配置回调地址
5.出口 IP 出于安全考虑暂不支持控制台配置,可联系我司商务完成生产环境联调
业务交互流程:
接口文档¶
又拍云手机流量平台接口入口地址统一为:https://ptp-api.upyun.com,请求接口时,统一使用 POST 方法, 文档类型统一为 Content-Type: application/json,使用 JSON 格式发送请求, 响应结果也会以 JSON 格式返回;文档中接口的请求地址只包含路径部分,实际请求时,需要加上统一入口地址 https://ptp-api.upyun.com。文档中描述签名计算时,都是先正序排序(给出的示例字符串已经是排序后的结果),再做 SHA1 运算。
本文档一共描述了四个接口和一个充值回调说明,接口如下:
获取签名 POST /refreshToken
提交订单 POST /chargeOrder
查询订单状态 POST /seekOrder
查询余额 POST /getMyBalance
针对以上接口,目前提供了 php 版本 sdk,用于提供接口调用示例, 各企业用户可以根据自己的需要进行封装,完善错误处理,下载地址:点击下载。
接口详情¶
1.获取计算签名需要的 token
接口说明
该接口用于获取 token,调用其他接口时,需要使用 token 计算签名。由于 token 需要在后续的接口请求中,全局共享,所以在并发请求的场景下,建议将 token 保存在 Redis/Mysql 等第三方存储中
请求地址
POST /refreshToken
请求参数
名称
类型
是否必须
描述
appkey
String
必须
appkey,由又拍云提供,可以登录手机流量后台查看
appsecret
String
必须
appsecret,由又拍云提供,可以登录手机流量后台查看
请求示例
curl https://ptp-api.upyun.com/refreshToken -H "Content-Type: application/json" -d "{\"appkey\": \"your_appkey_put_here\", \"appsecret\": \"your_appsecret_put_here\"}"
响应参数
名称
类型
示例值
描述
code
String
200
响应状态码,200 表示正常,其他详见错误码
token
String
XsdOpxqudzMnw
用于签名计算需要的 token,token 默认有效期为 24 小时,仅最后一次请求接口生成的 token 才有效
info
String
请求成功
响应示例
{
"code": "200",
"token": "XsdOpxqudzMnw",
"info": "请求成功"
}
2.创建订单
接口说明
创建手机流量充值订单
请求地址
POST /chargeOrder
请求参数
名称
类型
是否必须
描述
appkey
String
必须
E1KRHcKd3qoef8V1
mobile
String
必须
被充值手机号进行 AES 对称加密再 base64 转码后的值,一次只允许一个手机号码,见示例程序
prodcode
String
必须
流量包的产品编号
custno
String
必须
客户自定义的订单号,用于客户内部记录订单,长度必须小于30, 且每次充值,编号不重复
sign
String
必须
根据 token 和请求参数计算的签名,签名规则见算法说明部分 (示例程序下载)
prodtime
Integer
选填
流量时段,1 表示全时段流量,0 表示闲时流量,默认为全时段流量
prodstandard
Integer
选填
用于区分网络类型,可选值分别为:7表示全部网络类型,3表示 2g 和 3g 两种网络类型,1表示 2g 网络类型,默认值为7
响应参数
名称
类型
示例值
描述
code
String
200
响应状态码,200 表示创建订单成功;410 511 必须再次查询订单确认;其他错误码视为创建失败;系统响应超时等其他非正常响应,需要调用查询订单接口确认
custno
String
20150238829
客户订单号,和请求值一致
orderno
String
2016298237019
又拍云平台的订单号
info
String
充值成功
算法说明
计算手机号的 AES 对称加密,再 base64 转码后的值
将接口请求参数按照请求参数名称正序排序;
将请求参数和请求参数值拼接成字符串:appkey${YourAppKey}custno${YourCustno}mobile${YourAesEncodedMobile}prodcode${YourPrdcode}token${YourToken(将字符串中的变量${...}部分替换成实际值即可,)
对拼接后的字符串进行SHA1指纹运算,得到的 16 进制字符串 b5cd94c99e3e576f5e2ca0e66ee3da670cb1c62b 便是 sign 值
示例
参数拼接后的字符串为:appkey3P83lWwkoV15yZVTcustno20151123114702mobile8mBGFNfe1o/rzAx2Ost2IQ==prodcodeCMCC_10tokenVqHAab3JYXBDkCoO(注意手机号是 aes 加密再 base64 编码后的),进行 SHA1 运算得到的 sign 值为:8b05f52e605c7ab89a895eb730cacab4cbeabd4c
响应示例
{
"code": "200",
"custno": "20150238829",
"orderno": "2016298237019",
"info": "充值成功"
}
3.查询订单状态
接口说明
查询充值订单当前的状态,用于确认是否充值成功
请求地址
POST /seekOrder
请求参数
名称
类型
是否必须
描述
custno
String
必须
客户提交的订单号
appkey
String
必须
鉴权账号
sign
String
必须
签名,签名规则为:将 appkey${YourAppKey}custno${YourCustno}requesttime${YourReqestTime}TOKEN${YourToken} 中${...}变量部分替换为实际值,再进行 SHA1 运算。如果请求参数不包含 requesttime,计算签名则不需要该值
requesttime
String
否
查询的时间点,该参数为可选参数,格式为"YYYY-MM-DD HH:mm:ss",当传递该参数时,我们会在给定时间点的前后 1 个小时范围内查询;如果未传该参数,我们将在最近一周的订单中查询
响应参数
名称
类型
示例值
描述
code
String
200
响应状态码,200 表示充值成功;430 516 530 表示充值失败;511 必须人工再次确认;其他错误码视为充值中
custno
String
20150238829
客户自定义订单号
info
String
成功
响应示例
{
"code": "200",
"custno": "2015823871239",
"info": "充值成功"
}
4.查询余额
请求地址
POST /getMyBalance
请求参数
名称
类型
是否必须
描述
appkey
String
必须
sign
String
必须
签名,算法为 appkey${YourAppKey}TOKEN${Yourtoken} 中${...}变量部分替换实际值,再进行 SHA1 运算得到的字符串便为 sign 值
响应参数
名称
类型
示例值
描述
code
String
200
响应状态码
balance
Float
100.00
账户余额(包含冻结金额)
freeze
Float
20.00
冻结金额,正在交易的订单金额
availBalance
Float
80.00
实际可用余额(不包含冻结金额)
响应示例
{
"code": "200",
"balance": 100,
"freeze": 20,
"availBalance": 80
}
充值回调说明¶
客户需要在又拍云手机流量后台填写充值回调地址,并注意防火墙配置,不能屏蔽又拍云服务器地址。配置成功后,每次充值后,又拍云会向该地址发送 POST 请求,请求的数据格式为 application/json
请求参数
名称
类型
是否必须
描述
code
String
必须
响应状态码,200 表示充值成功;430,530 表示充值失败,其他错误码或异常信息表示充值中
orderno
String
必须
又拍云平台的订单号
custno
String
必须
客户自定义订单号
info
String
必须
描述信息
sign
String
必须
签名,客户可以使用该值校验请求是否合法,强烈建议接收充值回调时进行校验。签名规则为:将 code${Code}custno${YourCustno}info${Info}orderno${OrderNo}token${YourToken} 字符串中的变量部分${...}替换为请求参数中的值,再对得到的字符串进行 SHA1 签名
客户接受请求成功后,需要响应如下 json 值:
{
"info": "1"
}
否则,又拍云将隔 1 分钟再重试一次,一共回调 3 次
错误码说明¶
注:需要留意每个接口响应参数说明中的 code 处理方式
错误码
说明
错误码
说明
200
成功
201
充值中
410
运营商返回超时
422
用户状态异常
430
订购/充值失败
502
sign签名错误
503
余额不足
504
非法的回调地址
505
手机号不合法
506
用户不能订购该套餐
507
接口参数异常
508
令牌鉴权不通过
509
客户未认证授权
510
查询太频繁
511
内部异常,此时对订单的查询、充值等操作等需要联系客户再次确认
512
订单号重复
513
运营商请求超时
514
ip不在白名单
515
该客户不存在
516
不存在此订单
517
无法识别的手机号
519
当前appkey或appsecret错误
520
活动不存在
526
合同不在有效期
527
token不在有效期
530
订购/充值失败
531
签名不通过
532
订单号长度超过30
533
aes加密有误