微信小程序 支付功能实现PHP实例详解
前端代码:
后端代码:
$weixinpay = new \WeixinPay($appid,$openid,$mch_id,$key);
$return=$weixinpay->pay();
$this->response($return,'json');
}
微信支付类
$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,mtrand(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,strlen($buff)-1);
}
return $reqPar;
}
}
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!