php微信小程式支付

2021-08-19 18:48:43 字數 4699 閱讀 8551

<?php

class wxpaymodel

/*** 隨機數

* @param $length

* @param int $numeric

* @return string

*/public function random($length, $numeric = 0)

return $hash;

}/**

* 自定義訂單

* @return string

*/public function setout_trade_no()

/*** 下單方法

* @param $params 下單引數2

*/public function unifiedorder2( $params )

$result = $this->xml_to_data( $response );

if( !empty($result['result_code']) && !empty($result['err_code']) )

return $result;

}/**

* 下單方法

* @param $params 下單引數

*/public function unifiedorder( $params )

$result = $this->xml_to_data( $response );

if( !empty($result['result_code']) && !empty($result['err_code']) )

return $result;

}/**

* 查詢訂單資訊

* @param $out_trade_no 訂單號

* @return array

*/public function orderquery( $out_trade_no )

$result = $this->xml_to_data( $response );

if( !empty($result['result_code']) && !empty($result['err_code']) )

return $result;

}/**

* 關閉訂單

* @param $out_trade_no 訂單號

* @return array

*/public function closeorder( $out_trade_no )

$result = $this->xml_to_data( $response );

return $result;

}/**

** 獲取支付結果通知資料

* return array

*/public function getnotifydata()

$data = $this->xml_to_data( $xml );

if( !empty($data['return_code']) )

}return $data;

}/**

* 接收通知成功後應答輸出xml資料

* @param string $xml

*/public function replynotify()

}$stringsigntemp = $buff . 'key=a1m5s4s6a4r8t4g2h3md36alj8s7f5sd';//key為證書金鑰

$sign = strtoupper(md5($stringsigntemp));

//判斷算出的簽名和通知資訊的簽名是否一致

if($sign == $data['sign'])

*/$data['return_code'] = 'success';

$data['return_msg'] = 'ok';

$xml = $this->data_to_xml( $data );

echo $xml;

die();

}/**

* @param $prepayid 預支付id

*/$data['partnerid'] = $this->mch_id;

$data['prepayid'] = $prepayid;

$data['package'] = 'sign=wxpay';

$data['noncestr'] = $this->genrandomstring();

$data['timestamp'] = time();

$data['sign'] = $this->makesign( $data );

return $data;

}/**

* 生成簽名

* @return 簽名

*/public function makesign( $params )

/*** 將引數拼接為url: key=value&key=value

* @param $params

* @return string

*/public function tourlparams( $params )

$string = implode("&",$array);

}return $string;

}/**

* 輸出xml字元

* @param $params 引數名稱

* return string 返回組裝的xml

**/public function data_to_xml( $params )

$xml = "";

foreach ($params as $key=>$val)

else

}$xml.="";

return $xml;

}/**

* 將xml轉為array

* @param string $xml

* return array

*/public function xml_to_data($xml)

//將xml轉為array

//禁止引用外部xml實體

libxml_disable_entity_loader(true);

$data = json_decode(json_encode(******xml_load_string($xml, '******xmlelement', libxml_nocdata)), true);

return $data;

}/**

* 獲取毫秒級別的時間戳

*/public static function getmillisecond()

/*** 產生乙個指定長度的隨機字串,並返回給使用者

* @param type $len 產生字串的長度

* @return string 隨機字串

*/public function genrandomstring($len = 32)

return $output;

}/**

* 以post方式提交xml到對應的介面url

** @param string $xml 需要post的xml資料

* @param string $url url

* @param bool $usecert 是否需要證書,預設不需要

* @param int $second url執行超時時間,預設30s

* @throws wxpayexception

*/public function postxmlcurl($xml, $url, $usecert = false, $second = 30)

//post提交方式

curl_setopt($ch, curlopt_post, true);

curl_setopt($ch, curlopt_postfields, $xml);

//執行curl

$data = curl_exec($ch);

//返回結果

if($data) else

}/**

* 錯誤**

* @param $code 伺服器輸出的錯誤**

* return string

*/public function error_code( $code )}}

$total_fee = $total_fee*100;

$body = '';

$order = $wxpay->setout_trade_no();

$params = array(

'body'=>$body,

'out_trade_no'=>$order,

'total_fee'=>$total_fee,

'trade_type'=>'jsapi',

'openid'=>$openid,

);$res = $wxpay->unifiedorder2( $params );

if ($res[return_code]!='success')

$timestamp = time();

$data = array();

$data['timestamp'] = "$timestamp";

$data['noncestr'] = $wxpay->genrandomstring();

$data['package'] = 'prepay_id='.$res[prepay_id];

$data['signtype'] = 'md5';

$data['paysign'] = $wxpay->makesign($data);

微信小程式支付(PHP後端)

2.小程式支付開發步驟 1 統一下單 public function pay private function wechatpay protected function getsign obj 簽名步驟一 按字典序排序引數 ksort param string this formatbizquery...

微信小程式PHP 微信支付介面呼叫

小程式端 伺服器端 準備資料 都在後台系統中可查到 mch id 12 02 商戶號 key lk afk12 openid trim post openid out trade no mch id.time out trade no trim post out trade no body 答題獎金...

小程式微信支付

weixinpay new weixinpay openid,orderid.res2,訂單支付 res3 goods name total price 100,tsd res2 ret weixinpay pay class weixinpay public function pay 統一下單介面...