支付寶支付介面(即時到賬交易介面)
阿新 • • 發佈:2019-02-06
2.回撥相關:/** * 取得支付寶簽名 * * @return string */ private function sign($parameter) { $mysign = ""; $filtered_array = $this->para_filter($parameter); $sort_array = $this->arg_sort($filtered_array); $arg = ""; while (list ($key, $val) = each ($sort_array)) { $arg .= $key."=".$this->charset_encode($val,(empty($parameter['_input_charset'])?"UTF-8":$parameter['_input_charset']),(empty($parameter['_input_charset'])?"UTF-8":$parameter['_input_charset']))."&"; } $prestr = substr($arg,0,-1); //去掉最後一個&號 $prestr .= $parameter['key']; if($parameter['sign_type'] == 'MD5') { $mysign = md5($prestr); }elseif($parameter['sign_type'] =='DSA') { //DSA 簽名方法待後續開發 die("DSA 簽名方法待後續開發,請先使用MD5簽名方式"); }else { die("支付寶暫不支援".$parameter['sign_type']."型別的簽名方式"); } return $mysign; } /** * 除去陣列中的空值和簽名模式 * * @param array $parameter * @return array */ private function para_filter($parameter) { $para = array(); while (list ($key, $val) = each ($parameter)) { if($key == "sign" || $key == "sign_type" || $key == "key" || $val == "")continue; else $para[$key] = $parameter[$key]; } return $para; } /** * 重新排序引數陣列 * * @param array $array * @return array */ private function arg_sort($array) { ksort($array); reset($array); return $array; } /** * 實現多種字元編碼方式 */ private function charset_encode($input,$_output_charset,$_input_charset="UTF-8") { $output = ""; if(!isset($_output_charset))$_output_charset = $this->parameter['_input_charset']; if($_input_charset == $_output_charset || $input == null) { $output = $input; } elseif (function_exists("mb_convert_encoding")){ $output = mb_convert_encoding($input,$_output_charset,$_input_charset); } elseif(function_exists("iconv")) { $output = iconv($_input_charset,$_output_charset,$input); } else die("sorry, you have no libs support for charset change."); return $output; } /** * 製作支付介面的請求地址 * * @return string */ private function create_url() { $url = $this->alipay_gateway_new; $filtered_array = $this->para_filter($this->parameter); $sort_array = $this->arg_sort($filtered_array); $arg = ""; while (list ($key, $val) = each ($sort_array)) { $arg.=$key."=".urlencode($val)."&"; } $url.= $arg."sign=" .$this->parameter['sign'] ."&sign_type=".$this->parameter['sign_type']; return $url; }