国产精品一区二区三区……-大杳蕉伊人欧美一本遒在饯-日本不卡一区免费在线观看-国产亚洲欧美中文字幕

400-800-9385
網站建設資訊詳細

程序員談如何對接微信H5支付

發(fā)表日期:2018-12-17 11:46:38   作者來源:方維網絡   瀏覽:5883   標簽:H5網站建設    微信網站建設    
微信支付已經變得越來越普遍,尤其是小程序,微網頁,基本微信支付是標配,大家都知道微信支付簡單使用,但是對于一個網站開發(fā)人員,如何配置和對接微信支付呢?
下面方維網絡技術人員為你簡單介紹

手機網站在非微信的瀏覽器中打開,需要用到微信H5支付
第一步:登錄商戶平臺,在 產品中心>產品大全>我的產品>H5支付 點擊“申請開通” 
 

微信支付申請1

第二步:填寫支付域名

微信支付域名配置

提交審核一般會在3-5個工作日。
$headers[] = 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8';  
  $headers[] = 'Connection: Keep-Alive';  
  $headers[] = 'Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3'; 
  $headers[] = 'Accept-Encoding: gzip, deflate'; 
  $headers[] = 'User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:22.0) Gecko/20100101 Firefox/22.0';
  $userip =$this->get_client_ip(); //獲得用戶設備IP
  注意:這個Thinkphp 框架的自帶函數(shù),會報“網絡環(huán)境未能通過安全驗證,請稍后再試”因為商戶側統(tǒng)一下單傳的終端IP(spbill_create_ip)與用戶實際調起支付時微信側檢測到的終端IP不一致導致的,一般是商戶在統(tǒng)一下單時沒有傳遞正確的終端IP到spbill_create_ip導致,我們要修改一下這個函數(shù):
/*function get_client_ip(){
    if(getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'),'unknown')) {
 $ip = getenv('HTTP_CLIENT_IP');
    } elseif(getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'),'unknown')) {
   $ip = getenv('HTTP_X_FORWARDED_FOR');
    } elseif(getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'),'unknown')) {
    $ip = getenv('REMOTE_ADDR');
    } elseif(isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], 'unknown')) {
 $ip = $_SERVER['REMOTE_ADDR'];
    }
 return preg_match ( '/[\d\.]{7,15}/', $ip, $matches ) ? $matches [0] : '';
}
}*/
  $appid = "xxxxxxxxxxx";//微信
  $mch_id = "xxxxxxxxxxx";//微信官方的
  $key = "xxxxxxxxxxxxxxxxxxxxxxxxxxx";//自己設置的微信商家key
  $nonce_str=MD5($order_no);//隨機字符串
  //dump($orderArr['orderno']);
  $total_fee = $total*100; //微信金額是以分為單位
  $spbill_create_ip = $userip; //IP
  $notify_url = 'http://xxxxxxxxxxxxxxxxxxxxxx/wxnotify'; //回調地址
  $trade_type = 'MWEB';//交易類型 具體看API 里面有詳細介紹
  $body="H5支付";
$scene_info ='{"h5_info":{"type":"Wap","wap_url":"http://pdcharm.com/","wap_name":"支付"}}';//場景信息 必要參數(shù)
$signA ="appid=$appid&body=$body&mch_id=$mch_id&nonce_str=$nonce_str¬ify_url=$notify_url&out_trade_no=$order_no&scene_info=$scene_info&spbill_create_ip=$spbill_create_ip&total_fee=$total_fee&trade_type=$trade_type";
 
$strSignTmp = $signA."&key=$key"; //拼接字符串  注意順序微信有個測試網址 順序按照他的來 直接點下面的校正測試 包括下面XML  是否正確
$sign = strtoupper(MD5($strSignTmp)); // MD5 后轉換成大寫
$post_data="$appid$body$mch_id$nonce_str$notify_url$order_no$scene_info$spbill_create_ip$total_fee$trade_type$sign
  ";//將拼接成XML 格式
  $url = "https://api.mch.weixin.qq.com/pay/unifiedorder";//微信傳參地址
  $dataxml = $this->http_post($url,$post_data,$headers);
/* function http_post($url='',$post_data=array(),$header=array(),$timeout=30) {
 
  $ch = curl_init(); 
  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 跳過證書檢查 
  curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);  // 從證書中檢查SSL加密算法是否存在 
curl_setopt($ch, CURLOPT_URL, $url); 
  curl_setopt($ch, CURLOPT_HTTPHEADER, $header); 
  curl_setopt($ch, CURLOPT_POST, true); 
  curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data); 
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);  
  curl_setopt($ch, CURLOPT_TIMEOUT, $timeout); 
  $response = curl_exec($ch); 
  curl_close($ch);
  return $response;
  }   */
  header("content-type:text/html;charset=utf-8");
  $objectxml = (array)simplexml_load_string($dataxml,'SimpleXMLElement',LIBXML_NOCDATA); //將微信返回的XML 轉換成數(shù)組
 

如沒特殊注明,文章均為方維網絡原創(chuàng),轉載請注明來自http://pdcharm.com/news/4814.html
金昌市| 北碚区| 文成县| 三明市| 紫云| 安阳市| 曲松县| 平谷区| 交城县| 榆树市| 榆树市| 大渡口区| 侯马市| 积石山| 永德县| 古田县| 承德市| 平武县| 绍兴市| 南木林县| 渑池县| 定西市| 泰州市| 郴州市| 巴马| 永春县| 类乌齐县| 德惠市| 锡林郭勒盟| 禄劝| 贵溪市| 宝丰县| 焉耆| 奉贤区| 新密市| 禄丰县| 眉山市| 邛崃市| 广饶县| 泗水县| 故城县|