對全部的傳入的非空參數進行按字典序使用url鍵值對的格式拼接成字符串string1json
String string1 = key1=value1&key2=value2..app
在字符串string1最後拼接上簽名所得的令獲得字符串string2curl
String string2 = string2 + &密鑰名稱=8934e7d15453e97507ef794cf7b0519dpost
而後對string2進行MD5加密,再將加密所獲得的32位字符串轉換爲大寫,所獲得的值即爲key_sign加密
$payConfig = array( 'pay_ver' => '100', 'pay_type' => '010', 'service_id' => '015', 'merchant_no' => '', 'terminal_id' => '', 'terminal_trace' => $orderInfo['order_id'], 'terminal_time' => date("YmdHis"), 'total_fee' => $totalFee, 'sub_appid' => '', 'open_id' => $openid, 'notify_url' => "http://www.demo.com" ); $access_token = "da3c47c2a8cd47e9be0868712dae0000"; $payConfig['key_sign'] = self::getSign($payConfig, $access_token); //簽名 function getSign($payConfig, $key) { ksort($payConfig); $str = ""; foreach ($payConfig as $k => $v) { $str =$str. $k . "=" . $v."&"; } $str=$str."access_token=".$key; return strtoupper(md5($str)); } //提交 function postPay($post_data) { $postUrl = ""; $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => $postUrl, CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => false, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "POST", CURLOPT_POSTFIELDS => json_encode($post_data), CURLOPT_HTTPHEADER => array( "Content-Type: application/json" ), )); $response = curl_exec($curl); var_dump($response); curl_close($curl); return $response; }