微信扫码支付零云插件版实例详解


Posted in Javascript onApril 26, 2017

微信扫码支付零云插件版实例详解

微信的扫码支付主要有以下过程:

向微信统一下单地址发送详细的订单信息,微信返回json数据,里面包含生成二维码的字段,使用生成二维码的插件qrcode生成二维码返回给前端,让用户扫码完成支付,然后页面跳转到return_url告知用户支付成功,微信服务器正式通知支付成功之后修改数据库数据。

//Pay类下的主要方法
public function buildRequestForm($pay_data){
  $UNIFIED_ORDER_URL = 'weixin://wxpay/bizpayurl?sign'; //统一下单地址

  $data = array();
  $data['appid'] = $this->config['appid'];
  $data['mch_id'] = $this->config['mchid'];
  $data['nonce_str'] = $this->getNonceStr(32); //随机32位字符串
  $data['sign'] = $this->MakeSign($data);  //签名
  $data['product_id'] = $pay_data['out_trade_no'];
  $data['body'] = $pay_data['title'];
  $data['detail'] = $pay_data['title'].' Wechat Payment';
  $data['out_trade_no'] = $pay_data['out_trade_no'];
  $data['fee_type'] = 'USD'; //使用美元支付
  $data['total_fee'] = 1; //注意 单位是分
  $data['spbill_create_ip'] = $_SERVER['REMOTE_ADDR'];
  $data['notify_url'] = $this->config['notify_url'];
  $data['trade_type'] = "NATIVE"; //交易类型

  //转为xml格式
  $xml_param = $this->ToXml($data);

  // //发送请求 使用封装好的curl_post
  $result = $this->FromXml($this->postXmlCurl($xml_param, $this->gateway));
  if ($result['return_code'] === 'SUCCESS') {
    if ($this->CheckSign($result)) {
      $code_img = $this->get_code_src($result['code_url']);
      $return_data['code_img'] = $code_img;
      $return_data['pay_data'] = $data;
      return $return_data;
    } else {
      E("微信订单错误!");
    }
  } else {
    E("微信订单错误!". $result['return_msg']);
  }
}

 

/*
 * 生成二维码
 * @param string $code_url,需要生成二维码的地址;
 * @return $filepath,生成的二维码图片所在地址;
 */
public function get_code_src($code_url) {
  $QRcode = new \PHPQRCode\QRcode();
  $filename = time().$this->getNonceStr(3).'.png';
  $filepath = request()->domain() . __ROOT__ .'/Uploads/qrcode/'.$filename;
  $res = $QRcode->png($code_url,'./Uploads/qrcode/'.$filename);
  return $filepath;
}

调用过程如下:

/* 调用是在Controller的一个方法下面,这里只截取了一段,具体如何使用视自己情况而定。
 * @param string $pay_type,支付类型‘wxpay';
 * @param array $pay_info详细的支付信息,包括订单标题、金额、商品数量等等信息;
 * @param array $pay_config,支付配置,包括appID,appSecrt;
 */
$pay = new Pay($info['pay_type'], $pay_config);
if($info['pay_type'] == 'wxpay' && !isset ($_SERVER['HTTP_X_WAP_PROFILE'])) {
  $return_data = $pay->buildRequestForm($info);
  $this->assign('return_data',$return_data);
  $this->assign('return_json',json_encode($return_data));
  $this->display(); //向用户展示二维码
  exit();
}

注:零云是基于thinkPHP的快速建站的框架,所以这个插件在TP中也适用。

 感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Javascript 相关文章推荐
javascript while语句和do while语句的区别分析
Dec 08 Javascript
一个javascript图片阅览组件
Nov 09 Javascript
点弹代码 点击页面任何位置都可以弹出页面效果代码
Sep 17 Javascript
JS截取url中问号后面参数的值信息
Apr 29 Javascript
加随机数引入脚本不让浏览器读取缓存
Sep 04 Javascript
Atitit.js的键盘按键事件捆绑and事件调度
Apr 01 Javascript
大型JavaScript应用程序架构设计模式
Jun 29 Javascript
详解JavaScript模块化开发
Dec 04 Javascript
js 两个日期比较相差多少天的实例
Oct 19 Javascript
vue.js中npm安装教程图解
Apr 10 Javascript
关于JavaScript数组去重的一些理解汇总
Sep 10 Javascript
vue实现可移动的悬浮按钮
Mar 04 Vue.js
JavaScript实现的冒泡排序法及统计相邻数交换次数示例
Apr 26 #Javascript
微信小程序 实例开发总结
Apr 26 #Javascript
AngularJS 霸道的过滤器小结
Apr 26 #Javascript
JavaScript纯色二维码变成彩色二维码
Jul 23 #Javascript
xmlplus组件设计系列之按钮(2)
Apr 26 #Javascript
xmlplus组件设计系列之列表(4)
Apr 26 #Javascript
JS实现数组按升序及降序排列的方法
Apr 26 #Javascript
You might like
PHP输出XML到页面的3种方法详解
2013/06/06 PHP
Yii2框架实现注册和登录教程
2016/09/30 PHP
php和nginx交互实例讲解
2019/09/24 PHP
PHP Trait功能与用法实例分析
2020/06/03 PHP
学习YUI.Ext 第三天
2007/03/10 Javascript
JavaScript 题型问答有答案参考
2010/02/17 Javascript
javascript 放大镜 v1.0 基于Yui2 实现的放大镜效果
2010/03/08 Javascript
JavaScript 基础篇之对象、数组使用介绍(三)
2012/04/07 Javascript
javascript弹出层输入框(示例代码)
2013/12/11 Javascript
浅析Node.js中使用依赖注入的相关问题及解决方法
2015/06/24 Javascript
jquery带有索引按钮且自动轮播切换特效代码分享
2015/09/15 Javascript
使用 bootstrap modal遇到的问题小结
2016/11/09 Javascript
JavaScript无缝滚动效果的实例代码
2017/03/27 Javascript
JS奇技之利用scroll来监听resize详解
2017/06/15 Javascript
javaScript中封装的各种写法示例(推荐)
2017/07/03 Javascript
使用vue构建一个上传图片表单
2017/07/04 Javascript
vue单页面应用打开新窗口显示跳转页面的实例
2018/09/21 Javascript
Vue中的Props(不可变状态)
2018/09/29 Javascript
利用JS动态生成隔行换色HTML表格的两种方法
2018/10/09 Javascript
微信小程序 scroll-view 实现锚点跳转功能
2019/12/12 Javascript
python将字典列表导出为Excel文件的方法
2019/09/02 Python
PyCharm 专业版安装图文教程
2020/02/20 Python
Spanx塑身衣官网:美国知名内衣品牌
2017/01/11 全球购物
AMAVII眼镜官网:时尚和设计师太阳镜
2019/05/05 全球购物
为什么要有struct关键字
2012/05/08 面试题
全陪导游欢迎词
2014/01/17 职场文书
安全生产大检查方案
2014/05/07 职场文书
股票投资建议书
2014/05/19 职场文书
基层党员对照检查材料
2014/09/24 职场文书
共产党员批评与自我批评
2014/10/15 职场文书
2015年控辍保学工作总结
2015/05/18 职场文书
大国崛起观后感
2015/06/02 职场文书
2016年第32个教师节致辞
2015/11/26 职场文书
开网店计划分析
2019/07/30 职场文书
MySQL pt-slave-restart工具的使用简介
2021/04/07 MySQL
实操Python爬取觅知网素材图片示例
2021/11/27 Python