//生成订单调用支付
$re = db('order')->insertGetId($data);//生成订单 // $this->pay($re); // die;  $result = $this->getPaySign($data, 'char'); $result['id'] = $re; if($result['status'] == 200){ echo_info(['status' => 200, 'message' => '获取成功', 'data' => $result]); }else { echo_info(['status' => 500, 'message' => '请检测支付参数', 'data' => $result]); }
//获取支付需要的参数public function getPaySign($order_info, $type = 'char',$out_trade_no = true){if(!$order_info){echo_info(['status' => -1, 'message' => '数据为空,请检查参数']);}$ip = $_SERVER["REMOTE_ADDR"];$notify_url =  'https://' . $_SERVER['HTTP_HOST'] . '/index.php/home/Index/payok';$appid = Config::get('appid');$mch_id = Config::get('mch_id');$shopsecret = Config::get('shopsecret');$data = ['appid' =>$appid,'body' => '按摩椅支付','mch_id' => $mch_id,'nonce_str' => md5(date('YmdHis') . time() . rand(1000, 9999)),'notify_url' => $notify_url,'openid' => $order_info['openid'],'out_trade_no' => $order_info['orderno'],'spbill_create_ip' => $ip,'total_fee' => (int)((float)$order_info['total'] * 100),'attach' => $type,'trade_type' => 'JSAPI'];//形成sign$string = $this->getSign($data) . 'key=' . $shopsecret;$stringTemp = MD5($string);$sign = strtoupper($stringTemp);//准备请求prepay接口$data['sign'] = $sign;$str_xml = "<xml>";foreach ($data as $key => $val) {$str_xml .= "<" . $key . ">" . $val . "</" . $key . ">";}$str_xml .= "</xml>";$prepay_url = 'https://api.mch.weixin.qq.com/pay/unifiedorder';//请求接口并且解析xml//$result = $this->xmlDecode($this->httpCurl($prepay_url,$str_xml));$result = http_request_curl($prepay_url, $str_xml);     //POST方式请求http$result = xml2array($result);if ($result['return_code'] !== 'SUCCESS' || $result['result_code'] !== 'SUCCESS') {// return response()->json(['status'=>500,'msg'=>$result]);$result['status'] = 500;return $result;}$params = ['appId' => $data['appid'],'nonceStr' => $data['nonce_str'],'package' => 'prepay_id=' . $result['prepay_id'],'signType' => 'MD5','timeStamp' => (string)time(),
//            'orderno' => $data['out_trade_no'],订单号];//拼接前端需要参数$stringxml = $this->getSign($params) . 'key=' . $shopsecret;$stringxml = MD5($stringxml);$sign2 = strtoupper($stringxml);$pay_result['paySign'] = $sign2;$pay_result['timeStamp'] = $params['timeStamp'];$pay_result['nonceStr'] = $params['nonceStr'];$pay_result['package'] = $params['package'];$pay_result['signType'] = 'MD5';$pay_result['status'] = 200;
//        $pay_result['out_trade_no'] = $params['orderno'];//订单号$pay_result['total_fee'] = $order_info['total'];return $pay_result;// return response()->json(['status'=>200,'msg'=>$pay_result]);}protected function getSign($arr){ksort($arr);$string = '';foreach ($arr as $k => $v) {if ($k != "sign" && $v != "" && !is_array($v)) {$string .= $k . "=" . $v . "&";}}return $string;}/****************支付成功 回调封装(改变支付状态****************/public function open_char($array){$out_trade_no = $array['out_trade_no']; //商户订单号$transaction_id = $array['transaction_id']; //微信订单支付订单号$result = DB::name('order')->where('orderno', $out_trade_no)->find();
//        $this->pay_success($result['scene']);//短信通知if ($result['status'] != 1) {$datas = array('status' => 1,'transid' => $transaction_id,'pay_time' => time(),//支付时间'start' => time()   // 开启按摩椅 时间);$res = DB::name('order')->where('orderno', $out_trade_no)->update($datas);}}
//付款回调 public function payok() { error_reporting(0); define('IN_MOBILE', true); libxml_disable_entity_loader(true); $xml = '<?xml version="1.0" encoding="utf-8"?>'; $xml .= $GLOBALS['HTTP_RAW_POST_DATA']; $obj = simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA); $arrayinfo = xmlToArray($obj); if (($arrayinfo['result_code'] = 'SUCCESS' || $arrayinfo['return_code'] = 'SUCCESS')) { if ($arrayinfo['attach'] == 'char') { $bool = $this->open_char($arrayinfo); } if ($bool) { return '<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[OK]]></return_msg></xml>'; } else { return '<xml><return_code><![CDATA[FAIL]]></return_code><return_msg><![CDATA[NO]]></return_msg></xml>'; } } else { return '<xml><return_code><![CDATA[FAIL]]></return_code><return_msg><![CDATA[NO]]></return_msg></xml>'; } }

微信小程序支付之多次支付相关推荐

  1. 微信小程序前后端配合的支付代码

    这里我直接上代码,附有注释,直接把我的代码粘贴一下就可以用了,也是自己走了好多的弯路..,写在博客里做个记录 直接把里面的参数替换成你的就可以了,前提是你要开通的有微信支付功能,需要商户号,appid ...

  2. 微信小程序基于java实现v2支付,提现,退款

    v2支付 v2微信官方文档 封装支付请求实体 import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import ...

  3. 微信小程序2--登录流程与支付流程简写

    1.获取用户头像user.js opendata //user.js data: {flag:true, // 是否可以获取opendatacanIUseOpenData: wx.canIUse('o ...

  4. 微信小程序开发之微信支付

    概述 最近这段时间接了一个蓝牙车位锁的项目:项目中包括APP和微信小程序:其中涉及在线支付功能,这里记录下微信小程序在线支付完功能 小程序在线支付流程 1.微信小程序登陆微信获取code 调用接口wx ...

  5. 微信小程序实现微信支付

    准备工作 首先要是一个企业账号的微信公众平台,才有资格开启微信支付(毕竟人家帮你收钱相当于),然后还要用微信开通一个商户号mch_id等一下作为参数使用,也就是这个微信可以收到钱的,大概就是这些准备工 ...

  6. 微信小程序引用php函数,php微信小程序支付讲解(JSAPI)

    在早起的某篇文章中我们已经简单介绍了小程序支付, 这里我们在这篇文章中详细的介绍一个微信小程序支付, 顺便附带小程序端的部分支付代码. 微信小程序支付文档地址(微信小程序支付) 微信完整支付类下载地址 ...

  7. 【Node.js】实现微信小程序在线支付功能

    实战项目名称:微信小程序实现在线支付功能 - 文章结尾附上微信小程序码,扫码登录后即可体验!! 文章目录 一.实战步骤 1. 前期准备 2. 添加`wechatpay-node-v3`和`fs`插件 ...

  8. 2022年最新微信小程序支付后端代码通俗易懂一篇文章让你了解微信支付

    一.获取客户资料(百度很简单) #1.微信支付API秘钥 appsecret: d1056292feb*******439f32a0179baf918#2.微信商户IDmchid: 1618****6 ...

  9. 微信小程序+java后台实现支付(java操作)

    支付,在微信小程序上面称为当一个用户使用该小程序,当进入到支付环节,我们需要调用微信支付接口过程,进行一系列的操作,并记录下来. 微信小程序与java接口实现支付操作,大致思路如下: 1.微信小程序调 ...

  10. uniapp之APP/微信小程序/公众号支付

    涉及到微信支付的都需要从后端接口获取支付配置信息: await this.$http({apiName:"wxPayConfig",type:"POST",da ...

最新文章

  1. iOS三种录制视频方式详细对比
  2. 孙丕恕的筹谋:浪潮如何向云而生
  3. 比特币黄金BTG遭遇51%算力攻击,即将归零?
  4. cropper.js 图像旋转问题_JavaScript开源良心插件,纯前端网页图片剪裁插件——cropperjs...
  5. 如何在ChemDraw中打出符号π
  6. SAP Fiori Launchpad的后台配置路径
  7. java 文件解析异常_java中异常的解析
  8. 5.Lock接口及其实现ReentrantLock
  9. 深度解析:Oracle数据库SYSDATE到PostgreSQL数据库最佳转换
  10. 谷歌AI用“深度”学习来虚化背景,单摄手机可用,Jeff Dean表示优秀
  11. 现代质量管理方法的应用思考和实践
  12. 让本地网络与微软windows azure互通
  13. javaSE之多线程vip插队
  14. 使用Xilinx XSCT工具进行烧录
  15. Linux协议栈(1)——协议介绍
  16. Python爬取斗鱼直播网站信息
  17. vue整合videojs插件,播放RTMP,hls直播视频
  18. python web实战视频教程_知乎萧井陌大神Python Flask WEB后端班课程实战视频教程
  19. crc16校验c语言程序源码,CRC16代码(C语言实现)
  20. 华三交换机配置三权账号(V7版本)

热门文章

  1. 2017产品经理白皮书
  2. echarts——map
  3. 做邮件服务系统的一点心得
  4. java计算机毕业设计宠物医院管理源码+数据库+系统+lw文档+部署
  5. python老是提醒双引号错误_避免最常见的python语法错误,建议收藏!
  6. 超级计算机 噪音,加权噪声
  7. 18-----BBS论坛
  8. git可视化工具sourcetree解决中文乱码问题
  9. 如何在Linux下运行Python脚本
  10. VSCode导出jar(超简单)