小程序接口1

class XpayController extends WapBaseController{

public function payweixinx(){      $appid=‘wx00000000000000‘;      $openid= ‘openid‘;      $mch_id=‘1111111111‘;      $key=‘888888888888888888888888888‘;      $out_trade_no = $mch_id. time();      $total_fee = I(‘money‘);        if(empty($total_fee)) //押金        {            $body = "充值押金";            $total_fee = floatval(99*100);        }else {            $body = "现金打赏";            $total_fee = floatval($total_fee*100);        }        //账单记录

$weixinpay = new WeixinPay($appid,$openid,$mch_id,$key,$out_trade_no,$body,$total_fee);      $return=$weixinpay->pay();      $data[‘name‘] = get_user_nickname(get_uid_by_session3rd(I(‘session3rd‘)));      $data[‘money‘] = $total_fee;      $data[‘time‘] = time();      $data[‘out_trade_no‘] = $out_trade_no;      if (!empty($return)){          M(‘yj_bill‘)->add($data);        }      $this->ajaxReturn($return);      }}

class WeixinPay {      protected $appid;      protected $mch_id;      protected $key;      protected $openid;      protected $out_trade_no;      protected $body;      protected $total_fee;      function __construct($appid, $openid, $mch_id, $key,$out_trade_no,$body,$total_fee) {          $this->appid = $appid;          $this->openid = $openid;          $this->mch_id = $mch_id;          $this->key = $key;          $this->out_trade_no = $out_trade_no;          $this->body = $body;          $this->total_fee = $total_fee;      }      public function pay() {          //统一下单接口          $return = $this->weixinapp();          return $return;      }      //统一下单接口      private function unifiedorder() {          $url = ‘https://api.mch.weixin.qq.com/pay/unifiedorder‘;          $parameters = array(              ‘appid‘ => $this->appid, //小程序ID              ‘mch_id‘ => $this->mch_id, //商户号              ‘nonce_str‘ => $this->createNoncestr(), //随机字符串  //            ‘body‘ => ‘test‘, //商品描述              ‘body‘ => $this->body,  //            ‘out_trade_no‘ => ‘2015450806125348‘, //商户订单号              ‘out_trade_no‘=> $this->out_trade_no,  //            ‘total_fee‘ => floatval(0.01 * 100), //总金额 单位 分              ‘total_fee‘ => $this->total_fee,             ‘spbill_create_ip‘ => $_SERVER[‘REMOTE_ADDR‘], //终端IP              // ‘spbill_create_ip‘ => ‘192.168.0.161‘, //终端IP              ‘notify_url‘ => ‘http://www.weixin.qq.com/wxpay/pay.php‘, //通知地址  确保外网能正常访问              ‘openid‘ => $this->openid, //用户id              ‘trade_type‘ => ‘JSAPI‘//交易类型          );          //统一下单签名          $parameters[‘sign‘] = $this->getSign($parameters);          $xmlData = $this->arrayToXml($parameters);          $return = $this->xmlToArray($this->postXmlCurl($xmlData, $url, 60));          return $return;      }      private static function postXmlCurl($xml, $url, $second = 30)       {          $ch = curl_init();          //设置超时          curl_setopt($ch, CURLOPT_TIMEOUT, $second);          curl_setopt($ch, CURLOPT_URL, $url);          curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);          curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); //严格校验          //设置header          curl_setopt($ch, CURLOPT_HEADER, FALSE);          //要求结果为字符串且输出到屏幕上          curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);          //post提交方式          curl_setopt($ch, CURLOPT_POST, TRUE);          curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);          curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 20);          curl_setopt($ch, CURLOPT_TIMEOUT, 40);          set_time_limit(0);          //运行curl          $data = curl_exec($ch);          //返回结果          if ($data) {              curl_close($ch);              return $data;          } else {              $error = curl_errno($ch);              curl_close($ch);              throw new WxPayException("curl出错,错误码:$error");          }      }      //数组转换成xml      private function arrayToXml($arr) {          $xml = "<root>";          foreach ($arr as $key => $val) {              if (is_array($val)) {                  $xml .= "<" . $key . ">" . arrayToXml($val) . "</" . $key . ">";              } else {                  $xml .= "<" . $key . ">" . $val . "</" . $key . ">";              }          }          $xml .= "</root>";          return $xml;      }      //xml转换成数组      private function xmlToArray($xml) {          //禁止引用外部xml实体           libxml_disable_entity_loader(true);          $xmlstring = simplexml_load_string($xml, ‘SimpleXMLElement‘, LIBXML_NOCDATA);          $val = json_decode(json_encode($xmlstring), true);          return $val;      }      //微信小程序接口      private function weixinapp() {          //统一下单接口          $unifiedorder = $this->unifiedorder();  //        print_r($unifiedorder);          $parameters = array(              ‘appId‘ => $this->appid, //小程序ID              ‘timeStamp‘ => ‘‘ . time() . ‘‘, //时间戳              ‘nonceStr‘ => $this->createNoncestr(), //随机串              ‘package‘ => ‘prepay_id=‘ . $unifiedorder[‘prepay_id‘], //数据包              ‘signType‘ => ‘MD5‘//签名方式          );          //签名          $parameters[‘paySign‘] = $this->getSign($parameters);          return $parameters;      }      //作用:产生随机字符串,不长于32位      private function createNoncestr($length = 32) {          $chars = "abcdefghijklmnopqrstuvwxyz0123456789";          $str = "";          for ($i = 0; $i < $length; $i++) {              $str .= substr($chars, mt_rand(0, strlen($chars) - 1), 1);          }          return $str;      }      //作用:生成签名      private function getSign($Obj) {          foreach ($Obj as $k => $v) {              $Parameters[$k] = $v;          }          //签名步骤一:按字典序排序参数          ksort($Parameters);          $String = $this->formatBizQueryParaMap($Parameters, false);          //签名步骤二:在string后加入KEY          $String = $String . "&key=" . $this->key;          //签名步骤三:MD5加密          $String = md5($String);          //签名步骤四:所有字符转为大写          $result_ = strtoupper($String);          return $result_;      }      ///作用:格式化参数,签名过程需要使用      private function formatBizQueryParaMap($paraMap, $urlencode) {          $buff = "";          ksort($paraMap);          foreach ($paraMap as $k => $v) {              if ($urlencode) {                  $v = urlencode($v);              }              $buff .= $k . "=" . $v . "&";          }          $reqPar;        if (strlen($buff) > 0) {              $reqPar = substr($buff, 0, strlen($buff) - 1);          }          return $reqPar;      }   }?>
时间: 2024-11-09 17:49:52

小程序接口1的相关文章

×××小程序接口调试

×××小程序接口实现 https 并通过域名进行访问 关于tomcat接口调试的问题 :要实现通过这个接口https:/域名/具体路径,访问后端tomcat 重点:因为我们公司是阿里的云服务器,所以需要现在阿里上生成证书,并绑定域名,然后在反向代理服务器的nginx配置文件里面 https下面 添加信息,实现通过域名跳转至后端tomcat指定端口. vim /etc/nginx/nginx.conf vim /etc/nginx/nginx.conf .... .... .... server

小程序接口请求成功,得不到请求数据

小程序接口请求成功但是请求不到数据,解决办法:在wx.request({})的header中添加 'content-type': 'application/x-www-form-urlencoded', 主要代码如下: header: { 'content-type': 'application/x-www-form-urlencoded',//解决请求不到数据 'cookie': wx.getStorageSync("sessionid")//读取sessionid,当作cookie

Java生鲜电商平台-APP/小程序接口传输常见的加密算法及详解

说明:Java生鲜电商平台-APP/小程序接口传输常见的加密算法及详解,加密算法,是现在每个软件项目里必须用到的内容. 广泛应用在包括了用户登入.数字签名.数据传输等多个场合.今天我把常见的加密算法全部整理在这里,供大家学习参考. 首先,大家要知道加密算法能干什么,利用加密算法来对数据通信的过程进行加密传输是一种最常见的安全手段.利用该手段能够达到一下三个目的: 1.数据保密性,防止用户数据被窃取或泄露: 2.数据完整性,防止用户传输的数据被篡改: 3.通信双方身份确认,确保数据来源合法: 常见

.Net开源oss项目进度更新(含小程序接口)

和大家分享下当前OSS开源项目的进度情况: 一. OSS.Common [开源中国] [github] 经过昨天的努力,oss.common项目初步完成了对.net standard的支持,迁移过程本周以新文章的形式开放给大家,当前解决方案有两个: OSS.Common.NET40 - 针对原来.net framework项目继续提供支持. OSS.Common.Standard - 针对新的可以多平台的可移植项目支持(已经转为.net standard)项目. 二. OSS.Social  [

Java小程序---接口中抽象方法的实现(解决了JAVA语言不能多继承的问题)

                                                                      程序作者:刘聪聪 public interface Sing { public static final String eyecolor="black"; public void sleep(); public void sing(); } public interface Print { public static final String se

小程序接口2

<?php/** * 微信企业付款接口 * @author jorsh20160108 */class QypayController extends WapBaseController { protected $payurl = 'https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers'; protected $appid = 'appid'; //appid protected $mchid = 'mchid';

打卡小程序接口设计流程图

打卡系统基础功能主要功能概述. * 创建打卡计划, * 打卡签到,签到时可以上传图片,语音等数据保存 * 查看打卡记录.查询个人的打卡数据统计(所有打卡计划总次数,所有超时未打卡次数) 根据这些需求,分析后台接口 1. 上传文件接口简要概述流程图 下图主要是实现图片上传接口独立,可以实现多图片上传,返回多个图片上传后返回的图片地址列表 详细实现步骤是 1 设置文件存放路径,按日期 ( 8位长度日期,如20190122 ) 作为相对目录存放文件 2 循环遍历所有上传的文件数组 前置条件过滤,如果非

微信小程序接口调用

1.先调用封装好的方法: var server = require("../.."); 2.调用接口 data: { listdata: {}, }, loadData: function() { let that = this; server.sendRequest({ url: '/.../',  //接口地址 data: { id: 3, //接口参数 }, method: 'POST',  //请求方法 success: function(res) { console.log(

微信小程序接口配置问题

安疫逆战,加油!!! 一.在微信开发者工具中配置 打开微信开发者工具,右上角">>"点击“详情“ 点击”本地设置“ 勾选上”不校验安全域名.TLS 版本以及 HTTPS 证书“ 二.上线配置 打开微信公众平台,侧边栏点击点击“开发“——>"开发设置" 找到下面的服务器域名进行配置 原文地址:https://www.cnblogs.com/yqq520/p/12349526.html