当前位置: 首页 > 编程笔记 >

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

酆英达
2023-03-14
本文向大家介绍微信扫码支付零云插件版实例详解,包括了微信扫码支付零云插件版实例详解的使用技巧和注意事项,需要的朋友参考一下

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

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

向微信统一下单地址发送详细的订单信息,微信返回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中也适用。

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

 类似资料:
  • 本文向大家介绍thinkphp5实现微信扫码支付,包括了thinkphp5实现微信扫码支付的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了thinkphp5微信扫码支付的具体代码,供大家参考,具体内容如下 配置WxPay.Config.php 控制器 视图 生成二维码 进行扫描付款 支付回调 简单的写了一下 能实现简单的thinkphp5+微信扫码支付的大体流程 若有有问题的地方 还

  • 本文向大家介绍微信扫码支付(PC端),包括了微信扫码支付(PC端)的使用技巧和注意事项,需要的朋友参考一下 这里的扫码支付指的是PC网站上面使用微信支付,也就是官方的模式二,网站是Asp.net MVC,整理如下。(demo在最下方) 一、准备工作 使用的微信API中的统一下单方法,关键的参数是‘公众账号ID(appid)',‘商户号(mch_id)'和'商户支付密钥(KEY)‘,所以首先要有一个

  • 本文向大家介绍基于C#实现微信支付宝扫码支付功能,包括了基于C#实现微信支付宝扫码支付功能的使用技巧和注意事项,需要的朋友参考一下 为公司系统业务需要,这几天了解了一下微信和支付宝扫码支付的接口,并用c#实现了微信和支付宝扫码支付的功能。 微信支付分为6种支付模式:1.付款码支付,2.native支付,3.jsapi支付,4.app支付,5.h5支付,6.小程序支付 我在这里用到的是native支

  • 本文向大家介绍微信、支付宝二码合一扫码支付实现思路(java),包括了微信、支付宝二码合一扫码支付实现思路(java)的使用技巧和注意事项,需要的朋友参考一下 一、支付二维码(预订单) 根据需要购买的信息创建预订单,将订单信息保存到Redis中,并设置有效期,注意生产二维码的链接后的参数可以关联到Redis中的key; QRCode  为servlet扫码请求的URL; UUIDUtils.get

  • 本文向大家介绍Java SpringMVC实现PC端网页微信扫码支付(完整版),包括了Java SpringMVC实现PC端网页微信扫码支付(完整版)的使用技巧和注意事项,需要的朋友参考一下 一:前期微信支付扫盲知识 前提条件是已经有申请了微信支付功能的公众号,然后我们需要得到公众号APPID和微信商户号,这个分别在微信公众号和微信支付商家平台上面可以发现。其实在你申请成功支付功能之后,微信会通过

  • 本文向大家介绍java微信扫码支付模式一线下支付功能实现,包括了java微信扫码支付模式一线下支付功能实现的使用技巧和注意事项,需要的朋友参考一下 一、准备工作 无数人来追问模式一的开发,所以在这就贴出来,仅供参考。关于模式一和模式二的区别,我有解释过很多次,无非就是模式一的二维码是针对商品的,模式二的二维码是针对订单的,其他具体细节我就不费口舌了,各位可以自行去官方查看文档,然后是选模式一还是模