企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
> **本文阅读对象:** 商户系统(在线购物平台、人工收银系统、自动化智能收银系统或其他)集成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); ```