> **本文阅读对象:** 商户系统(在线购物平台、人工收银系统、自动化智能收银系统或其他)集成ABC支付涉及的技术架构师,研发工程师,测试工程师,系统运维工程师。
> 本篇幅较长,建议吃饱了撑的时候再看。
## 1.1. 支付接口介绍
支付接口:[http://pay.qzwl8.com/submit.php](http://pay.qzwl8.com/submit.php)
提交方式:GET(推荐) & POST
参数说明:
| 字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
| --- | --- | --- | --- | --- | --- |
| 商户ID | pid | 是 | Int | 301493 | |
| 支付方式 | type | 是 | String | alipay | alipay:支付宝,tenpay:财付通, qqpay:QQ钱包,wxpay:微信支付 | | | | | |
| 商户订单号 | out\_trade\_no | 是 | String | 20160806151343349 | |
| 异步通知地址 | notify\_url | 是 | String | [http://域名/notify\_url.php](http://xn--eqrt2g/notify_url.php) | 服务器异步通知地址 |
| 跳转通知地址 | return\_url | 是 | String | [http://域名/return\_url.php](http://xn--eqrt2g/return_url.php) | 页面跳转通知地址 |
| 商品名称 | name | 是 | String | VIP会员 | |
| 商品金额 | money | 是 | String | 1.00 | |
| 网站名称 | sitename | 否 | String | 某某某平台 | |
| 签名字符串 | sign | 是 | String | 202cb962ac59075b964b07152d234b70 | 签名算法与[支付宝签名算法](http://doc.open.alipay.com/docs/doc.htm?treeId=62&articleId=104741&docType=1)相同 |
| 签名类型 | sign\_type | 是 | String | MD5 | 默认为MD5 |
## 1.2 发起支付实例(PHP)
```
<?php
/**
* 倾昭唯离云支付发起支付示例
*
* @copyright 2020 倾昭唯离云支付
* @link http://pay.qzwl8.com
*/
class QzwlPayDemo
{
private $pid;
private $key;
public function __construct($pid,$key){
if(empty($pid)||empty($key)){
return false;
}
$this->pid = $pid;
$this->key = $key;
}
public function pay($subject,$type){
if(empty($subject['out_trade_no'])){
$out_trade_no = date('Ymd').mt_rand(1000,9999);
}else{
$out_trade_no = $subject['out_trade_no'];
}
$parameter = array(
"pid" => $this->pid,
"type" => $type,
"notify_url" => $subject['notify_url'],
"return_url" => $subject['return_url'],
"out_trade_no" => $out_trade_no,
"name" => $subject['name'],
"money" => $subject['money'],
"sitename" => $subject['sitename']
);
exit($this->createForm($parameter));
}
private function createForm($para_temp, $method='POST', $button_name='正在跳转') {
$para = $this->createRequest($para_temp);
$sHtml = "<form id='alipaysubmit' name='alipaysubmit' action='http://pay.qzwl8.com/submit.php?_input_charset=utf-8' method='".$method."'>";
while (list ($key, $val) = each ($para)) {
$sHtml.= "<input type='hidden' name='".$key."' value='".$val."'/>";
}
$sHtml = $sHtml."<input type='submit' value='".$button_name."'></form>";
$sHtml = $sHtml."<script>document.forms['alipaysubmit'].submit();</script>";
return $sHtml;
}
private function createRequest($para_temp) {
$para_filter = $this->paraFilter($para_temp);
$para_sort = $this->argSort($para_filter);
$mysign = $this->createSign($para_sort);
$para_sort['sign'] = $mysign;
$para_sort['sign_type'] = strtoupper('MD5');
return $para_sort;
}
private function argSort($para) {
ksort($para);
reset($para);
return $para;
}
private function paraFilter($para) {
$para_filter = array();
while (list ($key, $val) = each ($para)) {
if($key == "sign" || $key == "sign_type" || $val == "")continue;
else $para_filter[$key] = $para[$key];
}
return $para_filter;
}
private function createSign($para_sort) {
$prestr = $this->createLink($para_sort);
$mysign = $this->md5Sign($prestr);
return $mysign;
}
private function createLink($para) {
$arg = "";
while (list ($key, $val) = each ($para)) {
$arg.=$key."=".$val."&";
}
$arg = substr($arg,0,count($arg)-2);
if(get_magic_quotes_gpc()){$arg = stripslashes($arg);}
return $arg;
}
private function md5Sign($prestr) {
return md5($prestr . $this->key);
}
}
/********** 商户信息 **********/
$pid = '301493';
$key = '59F25BDCB5A399624FB5894D1770DD64';
/********** 商品信息 **********/
$info = array(
"sitename" => "倾昭唯离云支付", //网站名称
"name" => "用户充值0.01元", //商品名称
"money" => "0.01", //订单金额
"notify_url" => 'http://域名/notify_url.php', //异步通知地址
"return_url" => "http://域名/return_url.php", //跳转地址
"out_trade_no" => date('Ymd').mt_rand(1000,9999), //订单号
);
/********** 支付方式 **********/
$type = 'alipay';
$qzwlpay = new QzwlPayDemo($pid,$key);
$qzwlpay->pay($info,$type);
```