文档
测试

直充下单

POST
http://122.9.139.132:6175/fulu/order/OPEN_API_DIRECT_ORDER_ADD

请求参数

参数名
类型
描述
必填
productId
string
示例:商品编号 10000586
必填
buyNum
string
示例:购买数量 1
必填
chargeAccount
string
示例:充值账号 888888
必填
customerOrderNo
string
示例:外部订单号 201906281030191014522
必填

响应参数

参数名
类型
描述
必填
code
int
示例:0
必填
message
string
示例:接口调用成功
必填
result
string
示例:{"order_id":"23110642312783601540","product_id":10000586,"product_name":"视频/文娱直充测试商品-返回充值成功(勿动)","charge_account":"888888","customer_order_no":"201906281030191013522","create_time":"2023-11-06 15:40:10","buy_num":1,"order_price":1.1230,"order_state":"untreated","finish_time":null,"area":"","server":"","type":"","order_type":4,"operator_serial_number":""}
必填
sign
string
示例:8572c18443fc33eebab38658e25e55f5
必填

说明 / 示例

<h1 id="5" href="#5">响应参数</h1> <table> <thead> <tr> <th style="text-align:left">参数名称</th> <th style="text-align:left">字段类型</th> <th style="text-align:left">是否必填</th> <th style="text-align:left">最大长度</th> <th style="text-align:left">示例值</th> <th style="text-align:left">描述</th> </tr> </thead> <tbody> <tr> <td style="text-align:left">order_id</td> <td style="text-align:left">string</td> <td style="text-align:left">是</td> <td style="text-align:left"></td> <td style="text-align:left">19062837751058701652</td> <td style="text-align:left">订单编号</td> </tr> <tr> <td style="text-align:left">customer_order_no</td> <td style="text-align:left">string</td> <td style="text-align:left">是</td> <td style="text-align:left"></td> <td style="text-align:left">201906281030191013526</td> <td style="text-align:left">外部订单号,每次请求必须唯一</td> </tr> <tr> <td style="text-align:left">product_id</td> <td style="text-align:left">int</td> <td style="text-align:left">是</td> <td style="text-align:left"></td> <td style="text-align:left">10000001</td> <td style="text-align:left">商品Id</td> </tr> <tr> <td style="text-align:left">product_name</td> <td style="text-align:left">string</td> <td style="text-align:left">是</td> <td style="text-align:left"></td> <td style="text-align:left">腾讯Q币直充一元</td> <td style="text-align:left">商品名称</td> </tr> <tr> <td style="text-align:left">charge_account</td> <td style="text-align:left">string</td> <td style="text-align:left">是</td> <td style="text-align:left"></td> <td style="text-align:left">888888</td> <td style="text-align:left">充值账号</td> </tr> <tr> <td style="text-align:left">buy_num</td> <td style="text-align:left">int</td> <td style="text-align:left">是</td> <td style="text-align:left"></td> <td style="text-align:left">1</td> <td style="text-align:left">购买数量</td> </tr> <tr> <td style="text-align:left">order_type</td> <td style="text-align:left">int</td> <td style="text-align:left">是</td> <td style="text-align:left"></td> <td style="text-align:left">4</td> <td style="text-align:left">订单类型:1-话费 2-流量 3-卡密 4-直充</td> </tr> <tr> <td style="text-align:left">order_price</td> <td style="text-align:left">double</td> <td style="text-align:left">是</td> <td style="text-align:left"></td> <td style="text-align:left">1.1</td> <td style="text-align:left">交易单价</td> </tr> <tr> <td style="text-align:left">order_state</td> <td style="text-align:left">string</td> <td style="text-align:left">是</td> <td style="text-align:left"></td> <td style="text-align:left">untreated</td> <td style="text-align:left">订单状态: (success:成功,processing:处理中,failed:失败,untreated:未处理)</td> </tr> <tr> <td style="text-align:left">create_time</td> <td style="text-align:left">string</td> <td style="text-align:left">是</td> <td style="text-align:left"></td> <td style="text-align:left">2019-07-27 16:44:30</td> <td style="text-align:left">创建时间</td> </tr> <tr> <td style="text-align:left">finish_time</td> <td style="text-align:left">string</td> <td style="text-align:left">否</td> <td style="text-align:left"></td> <td style="text-align:left"></td> <td style="text-align:left">订单完成时间,查单接口返回</td> </tr> <tr> <td style="text-align:left">area</td> <td style="text-align:left">string</td> <td style="text-align:left">否</td> <td style="text-align:left"></td> <td style="text-align:left">电信一区</td> <td style="text-align:left">充值区(中文)</td> </tr> <tr> <td style="text-align:left">server</td> <td style="text-align:left">string</td> <td style="text-align:left">否</td> <td style="text-align:left"></td> <td style="text-align:left">逐鹿中原</td> <td style="text-align:left">充值服(中文)</td> </tr> <tr> <td style="text-align:left">type</td> <td style="text-align:left">string</td> <td style="text-align:left">否</td> <td style="text-align:left"></td> <td style="text-align:left">Q币</td> <td style="text-align:left">计费方式(中文)</td> </tr> <tr> <td style="text-align:left">operator_serial_number</td> <td style="text-align:left">string</td> <td style="text-align:left">否</td> <td style="text-align:left"></td> <td style="text-align:left"></td> <td style="text-align:left">运营商流水号</td> </tr> </tbody> </table> <h1 id="7" href="#7">响应示例</h1> <pre class="hljs"><code>{ <span class="hljs-attr">"code"</span>: <span class="hljs-number">0</span>, <span class="hljs-attr">"message"</span>: <span class="hljs-string">"接口调用成功"</span>, <span class="hljs-attr">"result"</span>: <span class="hljs-string">"{\"area\":\"电信一区\",\"buy_num\":1,\"charge_account\":\"888888\",\"create_time\":null,\"customer_order_no\":\"201906281030191013526\",\"finish_time\":null,\"operator_serial_number\":\"\",\"order_id\":\"19062837751058701652\",\"order_price\":1.1,\"order_state\":\"untreated\",\"order_type\":4,\"product_id\":10000001,\"product_name\":\"腾讯Q币直充一元\",\"server\":\"逐鹿中原\",\"type\":\"Q币\"}"</span>, <span class="hljs-attr">"sign"</span>: <span class="hljs-string">"1d158f0089b7a091fba0b5df23cd80d5"</span> } </code></pre> <h1 id="8" href="#8">异常示例</h1> <pre class="hljs"><code>{ <span class="hljs-attr">"code"</span>: <span class="hljs-number">4010</span>, <span class="hljs-attr">"message"</span>: <span class="hljs-string">"外部订单号已存在"</span>, <span class="hljs-attr">"result"</span>: <span class="hljs-string">""</span>, <span class="hljs-attr">"sign"</span>: <span class="hljs-string">""</span> } </code></pre> <h1 id="9" href="#9">业务错误码</h1> <table> <thead> <tr> <th style="text-align:left">错误码</th> <th style="text-align:left">返回码描述</th> <th style="text-align:left">解决方案</th> </tr> </thead> <tbody> <tr> <td style="text-align:left">0</td> <td style="text-align:left">接口调用成功</td> <td style="text-align:left">接口调用成功,按正常流程处理;下单接口中,接口调用成功表示下单成功,但是下单成功不表示订单充值成功,要想获得订单的充值结果,需要调用查单接口来获得订单充值状态。</td> </tr> <tr> <td style="text-align:left">1000</td> <td style="text-align:left">必须传入API接口名称</td> <td style="text-align:left">错误原因:<br>接口请求时method参数不能为空,必须传入API接口名称参数;<br>解决方案:<br>1、在开放平台在线调试获取模拟请求参数,进行方法名比对;</td> </tr> <tr> <td style="text-align:left">1001</td> <td style="text-align:left">无效的API接口名称</td> <td style="text-align:left">错误原因:<br>接口请求时method接口名称错误或不存在;<br>解决方案:<br>1、以开放平台具体接口的method为准,替换请求参数中method的接口名称;</td> </tr> <tr> <td style="text-align:left">1002</td> <td style="text-align:left">必须传入时间戳</td> <td style="text-align:left">错误原因:<br>接口请求时timestamp参数不能为空,必须传入时间戳参数;<br>解决方案:<br>1、在请求接口中填入timestamp参数(格式为:yyyy-MM-dd HH:mm:ss);</td> </tr> <tr> <td style="text-align:left">1003</td> <td style="text-align:left">时间戳格式错误</td> <td style="text-align:left">错误原因:<br>接口请求时timestamp参数格式不正确;<br>解决方案:<br>1、时间戳格式为:yyyy-MM-dd HH:mm:ss,请按要求传入参数;</td> </tr> <tr> <td style="text-align:left">1004</td> <td style="text-align:left">时间戳已超过有效期</td> <td style="text-align:left">错误原因:<br>接口请求时服务器会校验请求参数的时间戳timestamp,该参数与服务器当前时间误差不能超过10分钟;<br>解决方案:<br>1、请检查入参时间戳字段是否是当前请求时间(不建议同一个包体重复请求);<br>2、检查请求方服务器时间是否与北京时间同步;</td> </tr> <tr> <td style="text-align:left">1005</td> <td style="text-align:left">必须传入app_key</td> <td style="text-align:left">错误原因:<br>接口请求时app_key参数不能为空,必须传入app_key参数;<br>解决方案:<br>1、在请求接口中填入app_key参数(生产环境:商户控制台-&gt;应用配置-&gt;密钥管理 <br>沙箱环境参数获取);</td> </tr> <tr> <td style="text-align:left">1006</td> <td style="text-align:left">无效的app_key</td> <td style="text-align:left">错误原因:<br>接口请求时服务器会校验请求参数的app_key,判断当前app_key是否有效;<br>解决方案:<br>1、检查appkey是否复制错误;<br>2、沙箱环境与生产环境数据不互通;<br>3、沙箱环境只能使用沙箱数据;<br>4、以上均排查后还未能解决问题,可能是由于账号配置初始化异常,可通过更新回调地址这种方式来重置账号配置,即可解决问题;(操作步骤:登录商户控制台-配置订单回调地址);</td> </tr> <tr> <td style="text-align:left">1007</td> <td style="text-align:left">必须传入版本号</td> <td style="text-align:left">错误原因:<br>接口请求时version参数不能为空,必须传入版本号;<br>解决方案:<br>1、目前的版本号参数值为:2.0;</td> </tr> <tr> <td style="text-align:left">1008</td> <td style="text-align:left">版本号错误</td> <td style="text-align:left">错误原因:<br>接口请求时version参数值错误;<br>解决方案:<br>1、目前的版本号参数值为:2.0;</td> </tr> <tr> <td style="text-align:left">1009</td> <td style="text-align:left">必须传入format格式</td> <td style="text-align:left">错误原因:<br>接口请求时format参数不能为空,必须传入format格式参数;<br>解决方案:<br>1、目前的format格式仅支持json;</td> </tr> <tr> <td style="text-align:left">1010</td> <td style="text-align:left">format格式错误</td> <td style="text-align:left">错误原因:<br>接口请求时format参数值错误;<br>解决方案:<br>1、目前的format格式仅支持json;</td> </tr> <tr> <td style="text-align:left">1011</td> <td style="text-align:left">必须传入编码格式</td> <td style="text-align:left">错误原因:<br>接口请求时charset参数不能为空,必须传入charset编码格式参数;<br>解决方案:<br>1、目前的charset编码格式仅支持utf-8;</td> </tr> <tr> <td style="text-align:left">1012</td> <td style="text-align:left">编码格式错误</td> <td style="text-align:left">错误原因:<br>接口请求时charset参数值错误;<br>解决方案:<br>1、目前的charset编码格式仅支持utf-8;</td> </tr> <tr> <td style="text-align:left">1013</td> <td style="text-align:left">必须传入签名加密类型</td> <td style="text-align:left">错误原因:<br>接口请求时sign_type参数不能为空,必须传入签名加密类型;<br>解决方案:<br>1、目前的sign_type签名加密类型支持md5和rsa;</td> </tr> <tr> <td style="text-align:left">1014</td> <td style="text-align:left">签名加密类型错误</td> <td style="text-align:left">错误原因:<br>接口请求时sign_type参数值错误;<br>解决方案:<br>1、目前的sign_type签名加密类型支持md5和rsa;</td> </tr> <tr> <td style="text-align:left">1015</td> <td style="text-align:left">必须传入签名</td> <td style="text-align:left">错误原因:<br>接口请求时sign参数不能为空,必须传入签名参数;<br>解决方案:<br>1、在请求接口中填入sign参数;</td> </tr> <tr> <td style="text-align:left">1016</td> <td style="text-align:left">签名错误</td> <td style="text-align:left">错误原因:<br>接口请求时服务器会校验请求参数sign的准确性,签名加密参数或方法错误;<br>解决方案:<br>1、检查接口地址是否正确,比如沙箱环境和生产环境的地址混淆;<br>2、检查参数名称和参数值是否按照接口文档规范要求填写;<br>3、参数值null做为字符串参与签名;<br>4、按照“签名计算规则说明”文档示例数据在本地进行加密,比对加密结果排查问题;<br>5、接口请求签名、接口响应签名、异步回调签名规则都是一样;</td> </tr> <tr> <td style="text-align:left">1017</td> <td style="text-align:left">必须传入请求参数集合</td> <td style="text-align:left">错误原因:<br>接口请求时biz_content参数不能为空,必须传入biz_content请求参数;<br>解决方案:<br>1、在请求接口中填入biz_content参数,如果没有业务参数,biz_conent的值为"{}";</td> </tr> <tr> <td style="text-align:left">1018</td> <td style="text-align:left">缺少必要参数</td> <td style="text-align:left">错误原因:<br>接口请求时缺少必要参数,接口中缺失必填字段参数;<br>解决方案:<br>1、在开放平台在线调试获取模拟请求参数,进行参数比对;</td> </tr> <tr> <td style="text-align:left">1019</td> <td style="text-align:left">访问IP不在IP白名单内</td> <td style="text-align:left">错误原因:<br>接口请求服务器的外网IPv4格式IP地址没有添加到商户控制台-&gt;应用配置-&gt;IP白名单中;<br>解决方案:<br>请将接口响应信息中的IP地址添加进去(目前各接口没有校验IP白名单,可不必配置IP白名单)。</td> </tr> <tr> <td style="text-align:left">2002</td> <td style="text-align:left">无效的商户或应用</td> <td style="text-align:left">错误原因:<br>接口请求时校验商户信息,但该商户的审核状态或认证状态不正常;<br>解决方案:<br>1、下单接口中,可能存在该商户不存在、商户未认证、商户未审核、商户应用被禁用这几种情况,请联系运营处理;</td> </tr> <tr> <td style="text-align:left">2003</td> <td style="text-align:left">商户或应用配置异常</td> <td style="text-align:left">错误原因:<br>商户控制台-&gt;应用配置-&gt;秘钥配置中的配置信息异常,导致在各接口中没有找到商户编号信息;<br>解决方案:<br>1、接口请求时没有获取到充值API应用配置的应用编号信息,请联系运营处理;</td> </tr> <tr> <td style="text-align:left">2004</td> <td style="text-align:left">商户余额不足</td> <td style="text-align:left">错误原因:<br>接口下单时商户余额不足;<br>解决方案:<br>1、请联系运营处理;</td> </tr> <tr> <td style="text-align:left">3000</td> <td style="text-align:left">必须传入商品编号</td> <td style="text-align:left">错误原因:<br>获得商品信息接口请求时商品编号product_id参数不能为空,必须传入商品编号请求参数;<br>解决方案:<br>1、在请求接口中填入商品编号product_id参数;</td> </tr> <tr> <td style="text-align:left">3001</td> <td style="text-align:left">商品不存在或无法购买</td> <td style="text-align:left">错误原因:<br>1、沙箱环境,只能使用沙箱环境测试数据;<br>2、测试环境商品数据不能用于正式环境;<br>3、正式环境运营未配置商品信息;<br>4、用户存在多个商户号,请求的商户号没有配置商品;<br>解决方案:<br>1、检查接口地址是否正确,比如测试环境和生产环境的地址混淆;<br>2、沙箱环境使用测试环境相关数据;<br>3、正式环境商品信息需要联系运营获取;</td> </tr> <tr> <td style="text-align:left">3002</td> <td style="text-align:left">商品已下架</td> <td style="text-align:left">错误原因:<br>接口下单时商品为下架状态;<br>解决方案:<br>1、请联系运营检查生产环境商品配置;</td> </tr> <tr> <td style="text-align:left">3003</td> <td style="text-align:left">商品维护中</td> <td style="text-align:left">错误原因:<br>接口下单时商品为维护中状态;<br>解决方案:<br>1、请联系运营检查生产环境商品配置;</td> </tr> <tr> <td style="text-align:left">3004</td> <td style="text-align:left">商品在维护期内</td> <td style="text-align:left">错误原因:<br>接口下单时商品为维护期内状态;<br>解决方案:<br>1、请联系运营处理;</td> </tr> <tr> <td style="text-align:left">3005</td> <td style="text-align:left">商品库存不足</td> <td style="text-align:left">错误原因:<br>接口请求时校验库存不足;<br>解决方案:<br>1、请联系运营检查生产环境商品库存情况,如有活动需要大数量商品请向运营提前报备;</td> </tr> <tr> <td style="text-align:left">3008</td> <td style="text-align:left">商品类型错误</td> <td style="text-align:left">错误原因:<br>下单时直充商品使用了卡密下单接口,或卡密商品使用了直充接口;<br>解决方案:<br>1、使用与商品类型对应的接口下单;</td> </tr> <tr> <td style="text-align:left">4000</td> <td style="text-align:left">必须传入外部订单号</td> <td style="text-align:left">错误原因:<br>下单或查单接口请求时customer_order_no参数不能为空,必须传入外部订单号参数;<br>解决方案:<br>1、在请求接口中填入customer_order_no参数;</td> </tr> <tr> <td style="text-align:left">4001</td> <td style="text-align:left">购买数量必须大于0</td> <td style="text-align:left">错误原因:<br>直充下单接口或卡密下单接口请求时buy_num参数不能小于等于零;<br>解决方案:<br>1、修改请求接口中填入buy_num参数大于零;</td> </tr> <tr> <td style="text-align:left">4002</td> <td style="text-align:left">必须传入充值账号</td> <td style="text-align:left">错误原因:<br>非卡密下单接口请求时充值账号charge_account参数不能为空;<br>解决方案:<br>1、在请求接口中填入充值账号charge_account参数;</td> </tr> <tr> <td style="text-align:left">4004</td> <td style="text-align:left">充值账号在黑名单中</td> <td style="text-align:left">错误原因:<br>非卡密下单接口请求时充值账号在黑名单中;<br>解决方案:<br>1、请联系运营处理;</td> </tr> <tr> <td style="text-align:left">4008</td> <td style="text-align:left">添加订单失败</td> <td style="text-align:left">错误原因:<br>下单接口请求时,下单发生异常;<br>解决方案:<br>1、请调用查单接口持续查询订单状态,直到获得order_state=success或failed为止。如果查单返回4011(订单不存在),并且120分钟后,还是返回4011状态,则订单将会自动拦截按失败处理(目前此功能暂只支持可疑订单拦截白名单内的商户做此处理)此时查单接口返回的订单状态为failed。由于订单是可疑自动拦截,没有到平台底层充值,所以最终查单结果和订单异步回调信息中没有平台订单号。另外也可在订单被视为可疑订单后(大概下单40分钟后),联系运营人工处理拦截;<br>注意:不要轻易失败订单,请一定要查单来确认订单状态;请不要使用同样的订单号重复下单,对于下单成功、订单可疑的订单,请通过订单查询接口获得最终充值结果。</td> </tr> <tr> <td style="text-align:left">4009</td> <td style="text-align:left">执行下单超时,请查单确认下单结果</td> <td style="text-align:left">错误原因:<br>下单接口请求时,下单发生异常;<br>解决方案:<br>1、请调用查单接口持续查询订单状态,直到获得order_state=success或failed为止。如果查单返回4011(订单不存在),并且120分钟后,还是返回4011状态,则订单将会自动拦截按失败处理(目前此功能暂只支持可疑订单拦截白名单内的商户做此处理)此时查单接口返回的订单状态为failed。由于订单是可疑自动拦截,没有到平台底层充值,所以最终查单结果和订单异步回调信息中没有平台订单号。另外也可在订单被视为可疑订单后(大概下单40分钟后),联系运营人工处理拦截;<br>注意:不要轻易失败订单,请一定要查单来确认订单状态;请不要使用同样的订单号重复下单,对于下单成功、订单可疑的订单,请通过订单查询接口获得最终充值结果。</td> </tr> <tr> <td style="text-align:left">4010</td> <td style="text-align:left">外部订单号已存在</td> <td style="text-align:left">错误原因:<br>接口下单时已正常下单成功,请不要用同样的订单号重复提交订单下单;<br>解决方案:<br>1、请调用查单接口持续查询订单状态,直到获得order_state=success或failed这两个最终状态为止。其他订单状态(比如:untreated、processing)是没有充值结果的状态,请不要按有最终充值结果的业务场景处理。(注意:订单只会保留2个月,2个月之前的订单,如果再下单,则会提交成功);<br>2、订单查询接口是必须要对接的接口,请务必实现主动查询的方式来闭环业务,而不是仅仅被动等待订单异步回调通知的方式来得到充值结果(可能因为网络波动等原因,回调有可能发不出去,或回调接口接收不到)。</td> </tr> <tr> <td style="text-align:left">4012</td> <td style="text-align:left">查询异常,请重试</td> <td style="text-align:left">错误原因:<br>请求用户接口、获得商品信息接口、获得商品模板接口、查单接口时,请求参数与文档不匹配;<br>解决方案:<br>在开放平台在线调试获取模拟请求参数进行参数比对,自行排查,或联系运营处理;</td> </tr> <tr> <td style="text-align:left">5000</td> <td style="text-align:left">系统异常,订单可疑</td> <td style="text-align:left">错误原因:<br>1、请求查单接口时,请求参数(值或类型)与文档不匹配;<br>2、请求下单接口时,系统内部异常;<br>解决方案:<br>1、开发环境:<br>联系技术排查处理;<br>2、生产环境:<br>联系运营处理。请调用查单接口持续查询订单状态。如果查单返回4011(订单不存在),并且120分钟后,还是返回4011状态,则订单将会自动拦截按失败处理(目前此功能暂只支持可疑订单拦截白名单内的商户做此处理)此时查单接口返回的订单状态为failed。由于订单是可疑自动拦截,没有到平台底层充值,所以最终查单结果和订单异步回调信息中没有平台订单号。另外也可在订单被视为可疑订单后(大概下单40分钟后),联系运营人工处理拦截;<br>注意:不要轻易失败订单,请一定要查单来确认订单状态;请不要使用同样的订单号重复下单,对于下单成功、订单可疑的订单,请通过订单查询接口获得最终充值结果。</td> </tr> <tr> <td style="text-align:left">5001</td> <td style="text-align:left">系统异常</td> <td style="text-align:left">错误原因:<br>1、请求参数(值或类型)与文档不匹配;<br>2、系统内部异常;<br>解决方案:<br>1、开发环境:<br>①请求接口方式:仅支持HTTP POST请求,Content-Type必须设置为:application/json;<br>②biz_content参数值需要正常解析为json的字符串类型,而非对象;<br>③在开放平台在线调试获取模拟请求参数进行参数比对;<br>2、生产环境:<br>1、下单接口,订单下单失败,因系统异常未下单成功,订单可按失败处理;<br>2、其他接口,排查掉问题后,重新发起请求;</td> </tr> </tbody> </table>