| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 |
- <?php
- namespace App\Controllers;
- class QuickPayFunction
- {
- public function md5Verify($p1, $p2, $p3, $p4, $sign)
- {
- $preStr = $p1 . $p2 . $p3 . $p4 . "yft";
- $mySign = md5($preStr);
- if ($mySign == $sign) {
- return true;
- } else {
- return false;
- }
- }
- /**
- * 建立请求,以表单HTML形式构造(默认)
- * @param $para_temp 请求参数数组
- *
- */
- public function buildRequestForm($para_temp, $ss_order_no, $pay_config)
- {
- //待请求参数数组
- $para = QuickPayFunction::buildRequestPara($para_temp);
- $sHtml = "<form id='paysubmit' name='paysubmit' action='https://pay.anypay.me/pay/subOrder/zfb' accept-charset='utf-8' method='POST'>";
- while (list ($key, $val) = each($para)) {
- $sHtml .= "<input type='hidden' name='" . $key . "' value='" . $val . "'/>";
- }
- if ($pay_config->pay_config["type"] == "aliPay") {
- $sHtml .= "<input type='hidden' name='subject' value='余额充值'/>";
- } else {
- $sHtml .= "<input type='hidden' name='trade_no' value='" . $ss_order_no . "'/>";
- }
- //submit按钮控件请不要含有name属性
- $sHtml = $sHtml . "</form>";
- $sHtml = $sHtml . "<script>document.forms['paysubmit'].submit();</script>";
- return $sHtml;
- }
- /**
- * 生成要请求给云通付的参数数组
- * @param $para_temp 请求前的参数数组
- * @return 要请求的参数数组
- */
- static function buildRequestPara($para_temp)
- {
- //除去待签名参数数组中的空值和签名参数
- $para_filter = QuickPayFunction::paraFilter($para_temp);
- //生成签名结果
- $mysign = QuickPayFunction::buildRequestMysign($para_filter);
- //签名结果与签名方式加入请求提交参数组中
- $para_filter['sign'] = $mysign;
- return $para_filter;
- }
- /**
- * 除去数组中的空值和签名参数
- * @param $para 签名参数组
- * return 去掉空值与签名参数后的新签名参数组
- */
- static function paraFilter($para)
- {
- $para_filter = array();
- while (list ($key, $val) = each($para)) {
- if ($key == "sign" || $val == "") continue;
- else $para_filter[$key] = $para[$key];
- }
- return $para_filter;
- }
- /**
- * 生成签名结果
- * @param $para_filter 要签名的数组
- * return 签名结果字符串
- */
- static function buildRequestMysign($para_filter)
- {
- //把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串
- $prestr = QuickPayFunction::createLinkstring($para_filter);
- $mysign = MD5($prestr);
- return $mysign;
- }
- static function md5Sign($prestr)
- {
- return md5($prestr);
- }
- /**
- * 把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串
- * @param $para 需要拼接的数组
- * return 拼接完成以后的字符串
- */
- static function createLinkstring($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;
- }
- }
|