PHP实现微信小程序免密支付,微信免密支付,微信小程序实现微信支付功能!!!...

ba769e3e096b3bee8ec90167bcc18392.png

这里我直接上代码,附有注释,直接把我的代码粘贴一下就可以用了,也是自己走了好多的弯路。。,写在博客里做个记录直接把里面的参数替换成你的就可以了,前提是你要开通的有微信支付功能,需要商户号,appid,appsecret,openid,openid的获取比较简单,我再写一篇博客做介绍,不懂得可以私聊我//小程序端代码:pay:function(){varthat=thiswx.getStorage({key:’openid’,success:function(res){wx.request({//这里是后台的处理方法,url是自定义的,直接换成你自己的后台处理方法即可,Wx_Pay这个方法在下面写的有//后台用的php做处理,java的可以参考方法,道理都是一样的url:url+’Wx_Pay’,data:{//用户的openidopenid:res.data,fee:that.data.totalPrice,//支付金额details:that.data.goodsList[0].goods_name,//支付商品的名称},success:function(result){if(result.data){//out_trade_no=res.data[‘out_trade_no’];wx.requestPayment({timeStamp:result.data[‘timeStamp’],nonceStr:result.data[‘nonceStr’],package:result.data[‘package’],signType:’MD5′,paySign:result.data[‘paySign’],’success’:function(successret){console.log(‘支付成功’);//获取支付用户的信息wx.getStorage({key:’userInfo’,success:function(getuser){//加入订单表做记录wx.request({url:url+’Wx_AddOrder’,data:{uname:getuser.data.nickName,goods:that.data.goodsList[0].goods_name,price:that.data.totalPrice,openid:res.data,},success:function(lastreturn){console.log(“存取成功”);}})},})},’fail’:function(res){}})}}})},})},//后台//微信支付publicfunctionWx_Pay(){$request=Request::instance();$fee=$request-param(‘fee’);$details=$request-param(‘details’);//商品的详情,比如iPhone8,紫色//$fee=0.01;//举例充值0.01$appid=’appid’;//appid$body=$details;//’金邦汇商城’;//’【自己填写】’$mch_id=’1486742092′;//’你的商户号【自己填写】’$nonce_str=$this-nonce_str();//随机字符串$notify_url=’https://zys.jinbh.cn/admin/Api/Wx_Speech’;//回调的url【自己填写】’;$openid=$request-param(‘openid’);//’用户的openid【自己填写】’;$out_trade_no=$this-order_number($openid);//商户订单号$spbill_create_ip=’123.206.45.131′;//’服务器的ip【自己填写】’;$total_fee=$fee100;//因为充值金额最小是1而且单位为分如果是充值1元所以这里需要100$trade_type=’JSAPI’;//交易类型默认//这里是按照顺序的因为下面的签名是按照顺序排序错误肯定出错$post[‘appid’]=$appid;$post[‘body’]=$body;$post[‘mch_id’]=$mch_id;$post[‘nonce_str’]=$nonce_str;//随机字符串$post[‘notify_url’]=$notify_url;$post[‘openid’]=$openid;$post[‘out_trade_no’]=$out_trade_no;$post[‘spbill_create_ip’]=$spbill_create_ip;//终端的ip$post[‘total_fee’]=$total_fee;//总金额最低为一块钱必须是整数$post[‘trade_type’]=$trade_type;$sign=$this-sign($post);//签名$post_xml=’xmlappid’.$appid.’/appidbody’.$body.’/bodymch_id’.$mch_id.’/mch_idnonce_str’.$nonce_str.’/nonce_strnotify_url’.$notify_url.’/notify_urlopenid’.$openid.’/openidout_trade_no’.$out_trade_no.’/out_trade_nospbill_create_ip’.$spbill_create_ip.’/spbill_create_iptotal_fee’.$total_fee.’/total_feetrade_type’.$trade_type.’/trade_typesign’.$sign.’/sign/xml’;//统一接口prepay_id$url=’https://api.mch.weixin.qq.com/pay/unifiedorder’;$xml=$this-http_request($url,$post_xml);$array=$this-xml($xml);//全要大写if($array[‘RETURN_CODE’]==’SUCCESS’&&$array[‘RESULT_CODE’]==’SUCCESS’){$time=time();$tmp=”;//临时数组用于签名$tmp[‘appId’]=$appid;$tmp[‘nonceStr’]=$nonce_str;$tmp[‘package’]=’prepay_id=’.$array[‘PREPAY_ID’];$tmp[‘signType’]=’MD5′;$tmp[‘timeStamp’]=”$time”;$data[‘state’]=1;$data[‘timeStamp’]=”$time”;//时间戳$data[‘nonceStr’]=$nonce_str;//随机字符串$data[‘signType’]=’MD5′;//签名算法,暂支持MD5$data[‘package’]=’prepay_id=’.$array[‘PREPAY_ID’];//统一下单接口返回的prepay_id参数值,提交格式如:prepay_id=$data[‘paySign’]=$this-sign($tmp);//签名,具体签名方案参见微信公众号支付帮助文档;$data[‘out_trade_no’]=$out_trade_no;}else{$data[‘state’]=0;$data[‘text’]=”错误”;$data[‘RETURN_CODE’]=$array[‘RETURN_CODE’];$data[‘RETURN_MSG’]=$array[‘RETURN_MSG’];}echojson_encode($data);}//随机32位字符串privatefunctionnonce_str(){$result=”;$str=’QWERTYUIOPASDFGHJKLZXVBNMqwertyuioplkjhgfdsamnbvcxz’;for($i=0;$i32;$i++){$result.=$str[rand(0,48)];}return$result;}//生成订单号privatefunctionorder_number($openid){//date(‘Ymd’,time()).time().rand(10,99);//18位returnmd5($openid.time().rand(10,99));//32位}//签名$data要先排好顺序publicfunctionsign($data){$stringA=”;foreach($dataas$key=$value){if(!$value)continue;if($stringA)$stringA.=’&’.$key.”=”.$value;else$stringA=$key.”=”.$value;}$wx_key=’Zhangyusheng19810318015729366660′;//申请支付后有给予一个商户账号和密码,登陆后自己设置key$stringSignTemp=$stringA.’&key=’.$wx_key;//申请支付后有给予一个商户账号和密码,登陆后自己设置keyreturnstrtoupper(md5($stringSignTemp));}//curl请求啊functionhttp_request($url,$data=null,$headers=array()){$curl=curl_init();if(count($headers)=1){curl_setopt($curl,CURLOPT_HTTPHEADER,$headers);}curl_setopt($curl,CURLOPT_URL,$url);curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,FALSE);curl_setopt($curl,CURLOPT_SSL_VERIFYHOST,FALSE);if(!empty($data)){curl_setopt($curl,CURLOPT_POST,1);curl_setopt($curl,CURLOPT_POSTFIELDS,$data);}curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);$output=curl_exec($curl);curl_close($curl);return$output;}//获取xmlprivatefunctionxml($xml){$p=xml_parser_create();xml_parse_into_struct($p,$xml,$vals,$index);xml_parser_free($p);$data=””;foreach($indexas$key=$value){if($key==’xml’||$key==’XML’)continue;$tag=$vals[$value[0]][‘tag’];$value=$vals[$value[0]][‘value’];$data[$tag]=$value;}return$data;}//微信支付结束

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值