请求地址:/submit.php
请求方式:POST/GET
请求数据:pid={商户ID}&type={支付方式}&out_trade_no={商户订单号}¬ify_url={服务器异步通知地址}&return_url={页面跳转通知地址}&name={商品名称}&money={金额}&sitename={网站名称}&sign={签名字符串}&sign_type=MD5
参数说明:
| 参数 | 类型 | 描述 |
|---|---|---|
| pid | 整数 | 【必传】判断请求的商户ID |
| type | 字符串 | 【必传】alipay:支付宝,wxpay:微信支付,qqpay:QQ支付 |
| out_trade_no | 长整数 | 【必传】商户订单号,可以是时间戳,不可重复 |
| notify_url | 字符串 | 【必传】传入则设置该订单的异步通知接口为该参数,不传或传空则使用后台设置的接口 |
| return_url | 字符串 | 【必传】传入则设置该订单的同步跳转接口为该参数,不传或传空则使用后台设置的接口 |
| name | 字符串 | 【必传】商品名称 |
| money | 整数 | 【必传】商品金额 |
| param | 字符串 | 【可选】自定义参数,不传或传空则 |
| isHtml | 字符串 | 【可选】默认自动跳转到支付页面,1返回创建结果的json数据 |
| sign | 字符串 | 【必传】MD5签名,计算方式为 签名算法与支付宝签名算法相同 |
| sign_type | 字符串 | 【必传】默认为MD5 |
返回数据(示例):{"code":1,"msg":"成功","data":{"trade_no":"20200716034627356","out_trade_no":"202007161107295495","type":2,"name":"测试商品","money":"0.01","reallyPrice":"0.06","payUrl":"HTTPS:\/\/QR.ALIPAY.COM\/FKX06856G4GM17LDZXHV5D","isAuto":1,"state":0,"timeOut":"3","date":1594871189}}
| 返回参数 | 参数类型 | 参数说明 | ||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| code | 整数 | 返回代码(1:成功,-1:调用失败) | ||||||||||||||||||||||||||||||||||||
| msg | 字符串 | api调用结果说明 | ||||||||||||||||||||||||||||||||||||
| data | 数组 | api调用结果(如果code为-1,则data为null)
|
请求地址:/submit.php?act=actfdsa
请求方式:POST/GET
参数说明:
| 参数 | 参数类型 | 参数说明 |
|---|---|---|
| pid | 整数 | 【必传】商户ID |
| key | 字符串 | 【必传】通讯密钥 |
| out_trade_no | 字符串 | 【必传】商户订单号 |
返回数据(示例):{"code":1,"msg":"成功","data":{"orderId":"202007221907159879","out_trade_no":"1595419095","type":"wxpay","money":10,"reallyPrice":10,"create_date":1595419095,"close_date":1595419100,"state":1}}
| 返回参数 | 参数类型 | 参数说明 | |||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| code | 整数 | 返回代码(1:成功,-1:调用失败) | |||||||||||||||||||||||||||
| msg | 字符串 | api调用结果说明 | |||||||||||||||||||||||||||
| data | 数组 | api调用结果(如果code为-1,则data为null)
|
请求地址:/submit.php?act=getState
请求方式:POST/GET
参数说明:
| 参数 | 参数类型 | 参数说明 |
|---|---|---|
| pid | 整数 | 【必传】商户ID |
| key | 字符串 | 【必传】通讯密钥 |
| sign | 字符串 | 【必传】MD5签名:md5(商户ID+通讯密钥) |
返回数据(示例):{"code":1,"msg":"成功","data":{"pzqrcode":"//pay.ylcom.net/enQrcode?url=pay.ylcom.net/123456789/1","input":"pay.ylcom.net/123456789/1","lastpay":"1547394640","lastheart":"1547613873","state":"1"}}
| 返回参数 | 参数类型 | 参数说明 | ||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| code | 整数 | 返回代码(1:成功,-1:失败,具体原因查看msg字段) | ||||||||||||||||||
| msg | 字符串 | 调用结果说明 | ||||||||||||||||||
| data | 字符串 | api调用结果(如果code为-1,则data为null)
|
通知类型:服务器异步通知(notify_url)、页面跳转通知(return_url)当系统收到用户收款后,将会向您后台设定的异步通知地址发送GET请求,通知您的服务端订单完成收款若您使用的是isHtml=默认则在支付完成后会携带参数跳转到您的同步通知接口,若使用isHtml=1则只有异步通知
传输参数(示例):pid=1000&trade_no=20160806151343349021&out_trade_no=20160806151343349&type=wxpay&name=VIP会员&money=1.00&trade_status=TRADE_SUCCESS&sign=202cb962ac59075b964b071&sign_type=MD5
| 字段名 | 参数 | 类型 | 描述 |
|---|---|---|---|
| 商户ID | pid | 整数 | 判断请求的商户ID |
| 云端订单号 | trade_no | 字符串 | 云端订单号 |
| 商户订单号 | out_trade_no | 字符串 | 商户系统内部的订单号 |
| 支付方式 | type | 字符串 | wxpay |
| 商品名称 | name | 字符串 | VIP会员 |
| 商品金额 | money | 整数 | 1.00 |
| 自定义参数 | param | 字符串 | 测试 |
| 支付状态 | trade_status | 字符串 | TRADE_SUCCESS |
| 签名字符串 | sign | 字符串 | MD5签名,计算方式为 签名算法与支付宝签名算法相同 |
<?php
/* *
*************************页面功能说明*************************
* 创建该页面文件时,请留心该页面文件中无任何HTML代码及空格。
* 该页面不能在本机电脑测试,请到服务器上做测试。请确保外部可以访问该页面。
* 该页面调试工具请使用写文本函数logResult,该函数已被默认关闭,见alipay_notify_class.php中的函数verifyNotify
*/
//计算得出通知验证结果
require_once("./config.php");//核心文件
$_SERVER['REQUEST_METHOD']=='GET' ? $api = $_GET : $api = $_POST;//判断:GET和POST
ksort($api); //排序GET和POST参数
reset($api); //内部指针指向数组中的第一个元素
$sign = '';//初始化
foreach ($api AS $key => $val) { //遍历GET和POST参数
if ($val == '' || $key == 'sign' || $key == 'sign_type' || $key == 'param') continue; //跳过这些不签名
if ($sign) $sign .= '&'; //第一个字符串签名不加& 其他加&连接起来参数
$sign .= "$key=$val"; //拼接为url参数形式
}
if (md5($sign.$config['key'])==$api['sign']) { //不合法的数据
//请在这里加上商户的业务逻辑程序代
//——请根据您的业务逻辑来编写程序(以下代码仅作参考)——
$out_trade_no = $api['out_trade_no'];//商户订单号
$type = $api['type'];//支付方式
exit("success");//请不要修改或删除
} else {
exit("fail");//验证失败
}
?>