当前位置:
凯发ag旗舰厅登录网址下载 >
编程语言
> php
>内容正文
php
php 微信native扫码支付 -凯发ag旗舰厅登录网址下载
凯发ag旗舰厅登录网址下载
收集整理的这篇文章主要介绍了
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
native支付是商户系统按微信支付协议生成支付二维码,用户再用微信“扫一扫”完成支付的模式。该模式适用于pc网站支付、实体店单品或订单支付、媒体广告支付等场景。
支付类:
self::appid,'attach' => 'pay','body' => $body,'mch_id' => self::mchid,'nonce_str' => $this->createnoncestr(),'notify_url' => self::notifyurl,'out_trade_no' => $outtradeno,'spbill_create_ip' => $this->get_client_ip(),'total_fee' => intval($totalfee * 100),//单位 转为分'trade_type' => 'native',);$unified['sign'] = $this->getsign($unified, self::key);$responsexml = $this->curlpost('https://api.mch.weixin.qq.com/pay/unifiedorder', $this->arraytoxml($unified));//禁止引用外部xml实体libxml_disable_entity_loader(true);$unifiedorder = simplexml_load_string($responsexml, 'simplexmlelement', libxml_nocdata);if (false === $unifiedorder) {checking::response(201,'parse xml error');}if ('success' != $unifiedorder->return_code) {checking::response(202,$unifiedorder->return_msg);}if ('success' != $unifiedorder->result_code) {checking::response(203,$unifiedorder->err_code);}$codeurl = (array) ($unifiedorder->code_url);if (!$codeurl[0]) {checking::response(203,'get code_url error');}//生成二维码 这里利用qrcode类库生成的二维码 可根据自己业务进行修改return $this->wepayqrcode($codeurl[0]);}//获取随机字符串-wechatpaypublic function createnoncestr($length = 16){$chars = 'abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz0123456789';$str = '';for ($i = 0; $i < $length; $i) {$str .= substr($chars, mt_rand(0, strlen($chars) - 1), 1);}return $str;}//获取当前服务器时间-wechatpaypublic function get_client_ip(){if ($_server['remote_addr']) {$cip = $_server['remote_addr'];} elseif (getenv('remote_addr')) {$cip = getenv('remote_addr');} elseif (getenv('http_client_ip')) {$cip = getenv('http_client_ip');} else {$cip = 'unknown';}return $cip;}//获取签名public function getsign($params, $key){ksort($params, sort_string);$unsignparastring = $this->formatqueryparamap($params, false);$signstr = strtoupper(md5($unsignparastring.'&key='.$key));return $signstr;}//生成签名public function formatqueryparamap($paramap, $urlencode = false){$buff = '';ksort($paramap);foreach ($paramap as $k => $v) {if (null != $v && 'null' != $v) {if ($urlencode) {$v = urlencode($v);}$buff .= $k.'='.$v.'&';}}$reqpar = '';if (strlen($buff) > 0) {$reqpar = substr($buff, 0, strlen($buff) - 1);}return $reqpar;}//发送微信支付请求public function curlpost($url = '', $postdata = '', $options = array()){if (is_array($postdata)) {$postdata = http_build_query($postdata);}$ch = curl_init();curl_setopt($ch, curlopt_url, $url);curl_setopt($ch, curlopt_returntransfer, 1);curl_setopt($ch, curlopt_post, 1);curl_setopt($ch, curlopt_postfields, $postdata);curl_setopt($ch, curlopt_timeout, 30); //设置curl允许执行的最长秒数if (!empty($options)) {curl_setopt_array($ch, $options);}//https请求 不验证证书和hostcurl_setopt($ch, curlopt_ssl_verifypeer, false);curl_setopt($ch, curlopt_ssl_verifyhost, false);$data = curl_exec($ch);curl_close($ch);return $data;}//将数组转为xmlpublic function arraytoxml($arr){$xml = '调用支付
$wx= new wxnative();$order_num=checking::ordernum();$payurl= api_url.'/'.$wx->wxnativepay($money,$order_num);回调数据接收
public function wxpaynotify(){$params = trim(file_get_contents('php://input'));$xml = (array)simplexml_load_string( $params, 'simplexmlelement', libxml_nocdata ); //将微信返回的xml 转换成数组if ('success' == $xml['return_code']) {//成功回调异步通知地址//订单支付成功$data['out_trade_no'] = $xml['out_trade_no'];$data['pay_number'] = $xml['openid'];$data['trade_num'] = $xml['transaction_id'];$data['pay_time'] = $xml['time_end'];checking::writelog(json_encode($data),'回调开始','newwxpay.txt');db::starttrans();try {#业务逻辑} else {db::rollback();checking::writelog('异步通知地址回调失败','异步通知地址回调失败','newwxpay.txt');} }
总结
以上是凯发ag旗舰厅登录网址下载为你收集整理的的全部内容,希望文章能够帮你解决所遇到的问题。
如果觉得凯发ag旗舰厅登录网址下载网站内容还不错,欢迎将凯发ag旗舰厅登录网址下载推荐给好友。
- 上一篇:
- 下一篇: