## 欢迎使用LIVIPAYAPI开发文档

-API documentation -

> 设置后台的同步回调地址为：https://服务器同步回调域名/

> 设置后台的异步回调地址为：https://服务器异步回调域名/

1. ###

    PHP回调示例代码<?phpheader("Content-type:text/html;charset=utf-8");extract($_GET);extract($_POST);//从网页传入price:支付价格， istype:支付渠道：1-微信支付；2-支付宝支付    $price = (float)$_GET["total_fee"]; //提交的价格$param=$_GET['param'];if ($param == "wx"){$istype=1; // 记住type=$istype:支付渠道：1-微信支付；2-支付宝支付    }else{$istype=2;    }    $mid = $_GET['payid'];//"此处填写LIVIPAY平台的ID";    $param = $_GET['uid'];     //此处传入您网站用户的用户名，方便在平台后台查看是谁付的款，强烈建议加上。    $payId = $_GET['order_no'];   //订单号，每次有任何参数变化，订单号就变一个吧。    $key = $_GET['paykey'];//"此处填写LIVIPAY平台的密匙";    $returnUrl="https://".$_SERVER['HTTP_HOST'];//支付成功后跳转    $notifyUrl="https://".$_SERVER['HTTP_HOST']."/index/pay/notify";//支付成功后异步回调    $host = $_GET['payurl'];//创建订单地址【api.gedian.ren】这是LIVIPAY默认的    $sign = md5($mid.$payId . $param . $istype . $price . $reallyPrice . $key);    后半部分代码在demo集成文档main.php第7行和第10行demo集成文档下载：http://ceshi.livibank.ltd/demo.zip?>

## 创建订单

> 请求地址：https://ceshi.livibank.ltd/createOrder

> 请求方式：POST/GET

> 通讯密钥（示例）：a7cc8678193ee9c70ae3d75fd04ae6a9

> 校验签名（示例）：md5(1547129707139vone66620.1a7cc8678193ee9c70ae3d75fd04ae6a9) = 2b8b5d58c51203162f14939bdbc46a54

> 参数示例（示例）：payId=1547129707139&type=2&price=0.1&sign=2b8b5d58c51203162f14939bdbc46a54&param=vone666&isHtml=0

> 参数说明:

> 参数 | 参数类型 | 参数说明
> --- | --- | ---
> mid | 字符串 | 【必传】商户ID
> payId | 字符串 | 【必传】商户订单号，可以是时间戳，不可重复
> type | 整数 | 【必传】微信支付传入1 支付宝支付传入2
> price | 小数 | 【必传】订单金额
> sign | 字符串 | 【必传】签名，计算方式为 md5(mid+payId+param+type+price+通讯密钥)
> param | 字符串 | 【可选】传输参数，将会原样返回到异步和同步通知接口
> isHtml | 整数 | 【可选】传入1则自动跳转到支付页面，不传或“0”返回创建结果的json数据
> notifyUrl | 字符串 | 【可选】传入则设置该订单的异步通知接口为该参数，不传或传空则使用后台设置的接口
> returnUrl | 字符串 | 【可选】传入则设置该订单的同步跳转接口为该参数，不传或传空则使用后台设置的接口

> 返回数据（示例）：{"code":1,"msg":"成功","data":{"mid":"1000",payId":"1547129707139","orderId":"201901102220147500","payType":2,"price":0.1,"reallyPrice":0.1,"payUrl":"https://QR.ALIPAY.COM/FKX03500Z2ZYWA0E
> LYUB5D","isAuto":1,"state":0,"timeOut":5,"date":1547130014}}

> 返回数据说明:

> 返回参数 | 参数类型 | 参数说明
> --- | --- | ---
> code | 整数 | 返回代码（1：成功，-1：调用失败）
> msg | 字符串 | api调用结果说明
> data | 数组 | api调用结果（如果code为-1，则data为null）
> 返回参数 | 参数类型 | 参数说明
> --- | --- | ---
> mid | 字符串 | 商户ID
> payId | 字符串 | 商户订单号
> orderId | 字符串 | 云端订单号，可用于查询订单是否支付成功
> payType | 整数 | 微信支付为1 支付宝支付为2
> price | 小数 | 订单金额
> reallyPrice | 小数 | 实际需付金额
> payUrl | 字符串 | 支付二维码内容
> isAuto | 整数 | 1需要手动输入金额 0扫码后自动输入金额
> state | 整数 | 订单状态：-1|订单过期 0|等待支付 1|完成 2|支付完成但通知失败
> timeOut | 整数 | 订单有效时间（分钟）
> date | 长整数 | 订单创建时间时间戳（10位）

## 查询订单信息

> 请求地址：https://ceshi.livibank.ltd/getOrder

> 请求方式：POST/GET

> 参数示例（示例）：orderId=201901102225513177

> 参数说明:

> 参数 | 参数类型 | 参数说明
> --- | --- | ---
> orderId | 字符串 | 【必传】云端订单号，创建订单返回的

> 返回数据（示例）：{"code":1,"msg":"成功","data":{"mid":"1000","payId":"1547129707139","orderId":"201901102220147500","payType":2,"price":0.1,"reallyPrice":0.1,"payUrl":"https://QR.ALIPAY.COM/FKX03500Z2ZYWA0ELYUB5D","isAuto":1,"state":0,"timeOut":5,"date":1547130014}}

> 返回数据说明:

> 返回参数 | 参数类型 | 参数说明
> --- | --- | ---
> code | 整数 | 返回代码（1：成功，-1：调用失败）
> msg | 字符串 | api调用结果说明
> data | 数组 | api调用结果（如果code为-1，则data为null）
> 返回参数 | 参数类型 | 参数说明
> --- | --- | ---
> mid | 字符串 | 商户ID
> payId | 字符串 | 商户订单号
> orderId | 字符串 | 云端订单号，可用于查询订单是否支付成功
> payType | 整数 | 微信支付为1 支付宝支付为2
> price | 小数 | 订单金额
> reallyPrice | 小数 | 实际需付金额
> payUrl | 字符串 | 支付二维码内容
> isAuto | 整数 | 1需要手动输入金额 0扫码后自动输入金额
> state | 整数 | 订单状态：-1|订单过期 0|等待支付 1|完成 2|支付完成但通知失败
> timeOut | 整数 | 订单有效时间（分钟）
> date | 长整数 | 订单创建时间时间戳（10位）

## 查询订单状态

> 请求地址：https://ceshi.livibank.ltd/checkOrder

> 请求方式：POST/GET

> 参数示例（示例）：orderId=201901102225513177

> 参数说明:

> 参数 | 参数类型 | 参数说明
> --- | --- | ---
> orderId | 字符串 | 【必传】云端订单号，创建订单返回的

> 返回数据（示例）：{"code":1,"msg":"成功","data":"https://域名/?payId=1547130880571&param=vone666&type=2&price=0.1&reallyPrice=0.1&sign=c79f041bd5bc47d73bc19dc8406c9843"}

> 返回数据说明:

> 返回参数 | 参数类型 | 参数说明
> --- | --- | ---
> code | 整数 | 返回代码（1：订单已被支付，-1：支付失败或还未支付，具体查看msg字段）
> msg | 字符串 | 调用结果说明
> data | 字符串 | 如果code为-1，则data为null，否则为该订单支付完成后的跳转地址（带回调参数）

## 关闭订单

> 请求地址：https://ceshi.livibank.ltd/closeOrder

> 请求方式：POST/GET

> 参数示例（示例）：orderId=201901102225513177&sign=7db2d26323dd8ccbb5d130dd61d210a0

> 参数说明:

> 参数 | 参数类型 | 参数说明
> --- | --- | ---
> orderId | 字符串 | 【必传】云端订单号，创建订单返回的
> sign | 字符串 | 【必传】md5(云端订单号+通讯密钥)

> 返回数据（示例）：{"code":1,"msg":"成功","data":null}

> 返回数据说明:

> 返回参数 | 参数类型 | 参数说明
> --- | --- | ---
> code | 整数 | 返回代码（1：订单关闭成功，-1：订单关闭失败，具体原因查看msg字段）
> msg | 字符串 | 调用结果说明
> data | 字符串 | 无用字段，请忽略

## 查询服务端状态

> 请求地址：https://ceshi.livibank.ltd/getState

> 请求方式：POST/GET

> 参数示例（示例）：t=1547613643&sign=7db2d26323dd8ccbb5d130dd61d210a0

> 参数说明:

> 参数 | 参数类型 | 参数说明
> --- | --- | ---
> t | 长整数 | 【必传】现行时间戳
> sign | 字符串 | 【必传】md5(现行时间戳+通讯密钥)

> 返回数据（示例）：{"code":1,"msg":"成功","data":{"lastpay":"1547394640","lastheart":"1547613873","state":"1"}}

> 返回数据说明:

> 返回参数 | 参数类型 | 参数说明
> --- | --- | ---
> code | 整数 | 返回代码（1：成功，-1：失败，具体原因查看msg字段）
> msg | 字符串 | 调用结果说明
> data | 字符串 | api调用结果（如果code为-1，则data为null）
> 返回参数 | 参数类型 | 参数说明
> --- | --- | ---
> lastpay | 长整数 | 最后一次监控到支付的时间戳（10位）
> lastheart | 长整数 | 最后一次监控端向服务器发送心跳的时间戳（10位）
> state | 整数 | 监控端状态 1|在线 0|掉线 -1|还未绑定监控端

## 回调参数说明

> 当系统收到用户收款后，将会向您后台设定的异步通知地址发送GET请求，通知您的服务端订单完成收款
> 若您使用的是isHtml=1则在支付完成后会携带参数跳转到您的同步通知接口，若使用isHtml=0则只有异步通知

> 传输参数（示例）：mid=1000&payId=1547130349673&param=vone666&type=2&price=0.1&reallyPrice=0.1&sign=28943820b95019b6a63598a13c46f93f

> 传输参数说明:

> 返回参数 | 参数类型 | 参数说明
> --- | --- | ---
> mid | 字符串 | 商户ID
> payId | 字符串 | 商户订单号
> param | 字符串 | 创建订单的时候传入的参数
> type | 整数 | 支付方式 ：微信支付为1 支付宝支付为2
> price | 小数 | 订单金额
> reallyPrice | 小数 | 实际支付金额
> sign | 字符串 | 校验签名，计算方式 = md5(mid+payId + param + type + price + reallyPrice + 通讯密钥)

1. ###

    PHP回调示例代码<?phpini_set("error_reporting","E_ALL & ~E_NOTICE");$key = "83d551f0b3609781a22536ca2658473d";//通讯密钥$mid = $_GET['mid'];//商户ID$payId = $_GET['payId'];//商户订单号$param = $_GET['param'];//创建订单的时候传入的参数$type = $_GET['type'];//支付方式 ：微信支付为1 支付宝支付为2$price = $_GET['price'];//订单金额$reallyPrice = $_GET['reallyPrice'];//实际支付金额$sign = $_GET['sign'];//校验签名，计算方式 = md5(mid+payId + param + type + price + reallyPrice + 通讯密钥)//开始校验签名$_sign =  md5($mid.$payId . $param . $type . $price . $reallyPrice . $key);if ($_sign != $sign) {    echo "error_sign";//sign校验不通过    exit();}echo "success";//继续业务流程//echo "商户订单号：".$payId ."<br>自定义参数：". $param ."<br>支付方式：". $type ."<br>订单金额：". $price ."<br>实际支付金额：". $reallyPrice;?>