=====================
码支付创建订单接口参数介绍
=====================
参数名 |
中文 |
范围 |
说明 |
---|---|---|---|
id |
码支付ID |
无符号整数bigint类型 |
码支付注册所生成 |
key |
通信密钥 |
字符串string 6-100位字符 |
不要传递sign加密用的 |
type |
支付方式 |
整数int 1位 1,2,3 |
1:支付宝 3:微信支付。默认值:1 |
price |
商品价格 |
浮点float 保留2位小数 |
最大值99999.99最小值0.01 |
pay_id |
唯一标识 |
字符串string 不可留空 |
用户ID,订单ID,用户名确保是唯一 |
param |
自定义参数 |
字符串string 可留空 |
原封返回 避免特殊字符 |
notify_url | 异步通知地址 | 字符串string 100位字符 | 付款后POST通知。优先级最高 留空为系统设置中的通知地址可提高保密性 |
return_url |
同步通知地址 |
字符串string 可留空 |
付款后用户跳转页面 |
sign |
数据MD5签名 |
字符串string 可留空 |
数据加密md5(a=1&b=2&c=3替换密钥)将需要构造的参数按首字母排序并拼接成url参数 如首字母相同则依次比对下一个字母 |
call |
回调函数 |
字符串string 可留空 |
js回调的函数名 参考值:callback |
page |
付款页面方式 |
整数int 1位 1,2,3,4 |
展示付款页面不同的方式 4:返回JSON 3:需传入call值为callback时返回JS函数 |
以上参数请留意红色标识部分 其他部分根据需求添加。
以上参数包含了配置文件参数。
创建订单接口地址:
http://接口地址/creat_order/
如使用支付宝付款 创建订单为admin用户充值100元:
MD5签名数据创建订单必须参数名:
id type price pay_id sign
PHP MD5签名数据创建订单代码示例
<?php $codepay_id="这里改成您的码支付ID";//这里改成码支付ID $codepay_key="这里改成您的码支付密钥"; //这是您的通讯密钥 $data = array( "id" => $codepay_id,//你的码支付ID "pay_id" => "admin", //唯一标识 可以是用户ID,用户名,session_id(),订单ID,ip 付款后返回 "type" => 1,//1支付宝支付 3微信支付 "price" => 100,//金额100元 "param" => "",//自定义参数 "notify_url"=>"",//通知地址 "return_url"=>"http://地址/",//跳转地址 ); //构造需要传递的参数 ksort($data); //重新排序$data数组 reset($data); //内部指针指向数组中的第一个元素 $sign = ''; //初始化需要签名的字符为空 $urls = ''; //初始化URL参数为空 foreach ($data AS $key => $val) { //遍历需要传递的参数 if ($val == ''||$key == 'sign') continue; //跳过这些不参数签名 if ($sign != '') { //后面追加&拼接URL $sign .= "&"; $urls .= "&"; } $sign .= "$key=$val"; //拼接为url参数形式 $urls .= "$key=" . urlencode($val); //拼接为url参数形式并URL编码参数值 } $query = $urls . '&sign=' . md5($sign .$codepay_key); //创建订单所需的参数 $url = "http://接口地址/creat_order/?{$query}"; //支付页面 header("Location:{$url}"); //跳转到支付页面
注意任何情况下不要把通信密钥key参数明码传递出来
=====================
创建订单返回参数
=====================
参数名 | 中文 | 范围 | 说明 |
---|---|---|---|
status |
状态 |
整数2位 有负数 |
0:成功 -1:失败 -2:参数有误 |
money |
金额 |
浮点float保留2位小数 |
实际付款金额 |
price |
原价 |
浮点float保留2位小数 |
提交订单的原价 |
type |
支付类型 |
整数int 1位 1,2,3 |
1:支付宝 3:微信支付。默认值:1 |
msg |
信息 |
字符串string |
返回的错误信息为英文 |
order_id |
云端订单ID |
字符串string 50位 |
默认0或不返回 |
serverTime |
云端时间戳 |
整数int 11位 |
准确核对订单超时 |
endTime |
订单过期时间戳 |
整数int 11位 |
超过此时间订单将过期 |
notiry_key |
同步通知秘钥 |
字符串string 50位 |
用于同步通知 原封返给云端 |
qrcode |
二维码地址 |
字符串string |
展示在网页用于扫码支付 ,软件版需自己在云端上传 |
支付宝创建100元订单成功后的返回示例 page参数为4时返回JSON:
{ "msg": "ok", "qrcode": "//接口地址/qr/1/3/100/0.png", "status": 0, "chart": "utf-8", "order_id": 888888888, "pay_id": "admin", "type": 1, "price": "100.00", "money": "100.00", "userID": 1, "notiry_key":"codepay_notiry_key", "tag": 0, "serverTime": 1481453112, "endTime": 1481453412 }
以上云端返回的数据请原封发送到云端通知服务器即可实现付款同步通知。
接口中已经实现了该功能 如有改动请保留该功能的实现。
=====================================================
付款通知接口参数表(用于处理业务)
=====================================================
参数名 |
中文 |
范围 |
说明 |
pay_id |
用户标识 |
字符串string 100位 |
提交的付款人的唯一标识 |
money |
付款金额 |
浮点float保留2位小数 |
实际付款金额 |
price |
订单原价 |
浮点float保留2位小数 |
订单提交的金额 |
type |
支付方式 |
整数int 1位 1,2,3 |
1:支付宝 3:微信支付。默认值:1 |
pay_no |
流水号 |
字符串string 50位 |
付款后生成的唯一流水号 |
param |
自定义参数 |
字符串string 100位 |
原封返回提交什么返回什么 |
pay_time |
付款时间 |
整数int 10位 |
付款的时间戳 |
sign |
数据签名 |
字符串string 32位 |
验证订单是否为合法 |
通知返回的参数示例如下:
chart=utf-8&money=100.00&pay_id=admin&pay_no=20170217200040022100010042408995&pay_time=1487597795&status=2&tag=0&type=1&sign=c47f3cba123456b6b24542110a8928af
PHP通知验证:
<?php ksort($_POST); //排序post参数 reset($_POST); //内部指针指向数组中的第一个元素 $codepay_key="这里改成您的码支付密钥"; //这是您的密钥 $sign = '';//初始化 foreach ($_POST AS $key => $val) { //遍历POST参数 if ($val == '' || $key == 'sign') continue; //跳过这些不签名 if ($sign) $sign .= '&'; //第一个字符串签名不加& 其他加&连接起来参数 $sign .= "$key=$val"; //拼接为url参数形式 } if (!$_POST['pay_no'] || md5($sign . $codepay_key) != $_POST['sign']) { //不合法的数据 exit('fail'); //返回失败 继续补单 } else { //合法的数据 //业务处理 $pay_id = $_POST['pay_id']; //需要充值的ID 或订单号 或用户名 $money = (float)$_POST['money']; //实际付款金额 $price = (float)$_POST['price']; //订单的原价 $param = $_POST['param']; //自定义参数 $pay_no = $_POST['pay_no']; //流水号 exit('success'); //返回成功 不要删除哦 }
业务处理完成返回:success
业务处理失败还需要下次继续通知返回:fail
注意:您一定要验证是否有pay_no参数值,因为只有该值才是付款成功