위 챗 애플 릿 결제 기능 이 PHP 인 스 턴 스 를 실현 합 니 다.

위 챗 애플 릿 결제 기능 이 PHP 인 스 턴 스 를 실현 합 니 다.
전단 코드:

 wx.request({
    url: 'https://www.yourhost.com/weixin/WeiActivity/payJoinfee',//        
    header: {
      'Content-Type': 'application/x-www-form-urlencoded'
    },
    method:'POST',
    success: function(res) {
      console.log(res.data);
      console.log('    ');
      wx.requestPayment({
        'timeStamp': res.data.timeStamp,
        'nonceStr': res.data.nonceStr,
        'package': res.data.package,
        'signType': 'MD5',
        'paySign': res.data.paySign,
        'success':function(res){
          console.log('success');
          wx.showToast({
            title: '    ',
            icon: 'success',
            duration: 3000
          });
        },
        'fail':function(res){
          console.log('fail');
        },
        'complete':function(res){
          console.log('complete');
        }
      });
    },
    fail:function(res){
      console.log(res.data)
    }
  });
백 엔 드 코드:

//    
 public function payJoinfee(){
 $appid='wx888888888';
 $openid='oCQwY0Q_pzrQpu8888888';
 $mch_id='141388888';
 $key='9A0A86888888888';
 
 import('Weixin.Lib.WeixinPay');
 $weixinpay = new \WeixinPay($appid,$openid,$mch_id,$key);
 $return=$weixinpay->pay();

 $this->response($return,'json');
 }

위 챗 결제 클래스

<?php
/*
 *        
 */
class WeixinPay{
 protected $appid;
 protected $mch_id;
 protected $key;
 protected $openid;
 function __construct($appid,$openid,$mch_id,$key){
 $this->appid=$appid;
 $this->openid=$openid;
 $this->mch_id=$mch_id;
 $this->key=$key;
 } 
 public function pay(){
 //      
 $return=$this->weixinapp();
 return $return;
 }
 //      
 private function unifiedorder(){
 $url='https://api.mch.weixin.qq.com/pay/unifiedorder';
 $parameters=array(
  'appid'=>$this->appid,//   ID
  'mch_id'=>$this->mch_id,//   
  'nonce_str'=>$this->createNoncestr(),//     
  'body'=>'  ',//    
  'out_trade_no'=>'2015450806125346',//     
  'total_fee'=>floatval(0.01*100),//        
  'spbill_create_ip'=>$_SERVER['REMOTE_ADDR'],//  IP
  'notify_url'=>'http://www.weixin.qq.com/wxpay/pay.php',//    
  'openid'=>$this->openid,//  id
  'trade_type'=>'JSAPI'//    
 );
 //      
 $parameters['sign']=$this->getSign($parameters);
 $xmlData=arrayToXml($parameters);
 
 $return=xmlToArray(postXmlSSLCurl($xmlData,$url,60));
 
 return $return;
 }
 //       
 private function weixinapp(){
 //      
 $unifiedorder=$this->unifiedorder();
 
 $parameters=array(
  'appId'=>$this->appid,//   ID
  'timeStamp'=>''.time().'',//   
  'nonceStr'=>$this->createNoncestr(),//   
  'package'=>'prepay_id='.$unifiedorder['prepay_id'],//   
  'signType'=>'MD5'//    
 );
 //  
 $parameters['paySign']=$this->getSign($parameters);
 
 return $parameters;
 }
 //  :       ,   32 
 private function createNoncestr($length = 32 ){
 $chars = "abcdefghijklmnopqrstuvwxyz0123456789"; 
 $str ="";
 for ( $i = 0; $i < $length; $i++ ) { 
  $str.= substr($chars, mt_rand(0, strlen($chars)-1), 1); 
 } 
 return $str;
 }
 //  :    
 private function getSign($Obj){
 foreach ($Obj as $k => $v){
  $Parameters[$k] = $v;
 }
 //     :        
 ksort($Parameters);
 $String = $this->formatBizQueryParaMap($Parameters, false);
 //     : string   KEY
 $String = $String."&key=".$this->key;
 //     :MD5  
 $String = md5($String);
 //     :        
 $result_ = strtoupper($String);
 return $result_;
 }
 ///  :     ,        
 private function formatBizQueryParaMap($paraMap, $urlencode){
 $buff = "";
 ksort($paraMap);
 foreach ($paraMap as $k => $v){
   if($urlencode)
   {
   $v = urlencode($v);
  }
  $buff .= $k . "=" . $v . "&";
 }
 $reqPar;
 if (strlen($buff) > 0){
  $reqPar = substr($buff, 0, strlen($buff)-1);
 }
 return $reqPar;
 }
} 

읽 어 주 셔 서 감사합니다. 여러분 에 게 도움 이 되 기 를 바 랍 니 다.본 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!

좋은 웹페이지 즐겨찾기