发起支付请求网站名称参数可以为空,其他为必填项
签名算法与支付宝签名算法相同
💵 页面跳转支付
接口描述
POST数据:pid={商户ID}&type={支付方式}&out_trade_no={商户订单号}&notify_url={服务器异步通知地址}&return_url={页面跳转通知地址}&name={商品名称}&money={金额}&sitename={网站名称}&sign={签名字符串}&sign_type=MD5
请求参数
说明
示例
<?php
\$zzcode_id="1000";//这里改成您的商户id
\$zzcode_key="AMEQ6D96SADsE545413419MuS"; //这是您的KEY
//构造要请求的参数数组,无需改动
\$parameter = array(
"pid" => \$zzcode_id,//你的商户ID
"type" => 'alipay',//alipay支付宝支付、wxpay微信支付
"notify_url" => '',//异步通知地址
"return_url" => '',//页面返回地址
"out_trade_no" => '20200530203427207',//订单号
"name" => 'VIP会员',//商品名称
"money" => 1.00,//支付金额
"sitename" => '$title',//网站名称
);
ksort(\$parameter); //重新排序\$parameter数组
reset(\$parameter); //内部指针指向数组中的第一个元素
\$sign = ''; //初始化需要签名的字符为空
\$urls = ''; //初始化URL参数为空
foreach (\$parameter AS \$key => \$val) { //遍历需要传递的参数
if (\$val == '' || \$key == 'sign' || \$key == "sign_type" ) continue; //跳过这些不参数签名
if (\$sign != '') { //后面追加&拼接URL
\$sign .= "&";
\$urls .= "&";
}
\$sign .= "\$key=\$val"; //拼接为url参数形式
\$urls .= "\$key=" . urlencode(\$val); //拼接为url参数形式并URL编码参数值
}
\$query = \$urls . '&sign=' . md5(\$sign .\$zzcode_key) . '&sign_type=MD5'; //创建订单所需的参数
\$url = "http://域名/submit.php?{\$query}"; //支付页面
header("location:{\$url}"); //跳转到支付页面
?>
🛡️ V免签接口支付
接口描述
与「页面跳转支付」(易支付协议) 并存,供习惯 V免签接口格式的商户对接,通讯密钥与易支付共用。
参数:payId={商户订单号}¶m={透传参数}&type={支付方式}&price={金额}¬ifyUrl={异步通知地址}&returnUrl={跳转地址}&sign={签名}
请求参数
签名算法
待签名参数按 固定顺序 payId → param → type → price 拼接,末尾追加通讯密钥,取 MD5 小写:
sign = md5(payId . param . type . price . 密钥)
注意:与易支付的「字典序排序」不同,V免签为固定顺序拼接,param 为空时按空串参与。
异步通知与同步跳转
收款后系统以 GET 请求 notifyUrl,参数:payId / param / type / price / reallyPrice / sign,验签:
sign = md5(payId . param . type . price . reallyPrice . 密钥)
商户处理成功须输出纯字符串 success。同步跳转 returnUrl 参数与异步通知一致。成功判定与易支付相同:响应包含 success 即视为成功。
示例
<?php
\$key = '您的通讯密钥'; // 同易支付密钥
\$param = array(
"payId" => 'ORDER'.time(), //商户订单号
"param" => 'vip123', //透传参数
"type" => 1, //1微信 2支付宝 3QQ 4数字人民币
"price" => '1.00', //金额
"notifyUrl" => 'http://商户/notify.php',
"returnUrl" => 'http://商户/return.php',
);
//固定顺序签名(注意与易支付字典序不同)
\$param["sign"] = md5(\$param["payId"].\$param["param"].\$param["type"].\$param["price"].\$key);
\$query = http_build_query(\$param);
\$resp = file_get_contents("http://域名/createOrder?{\$query}");
\$data = json_decode(\$resp, true);
if (\$data["code"] === 1) {
//用 \$data["data"]["payUrl"] 渲染收款码
}
?>