微信小程序调用微信支付
1,首先我们先缕清支付的整个流程,详见https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=7_4&index=3,第一步在自己的服务器上吊起微信支付,获取预支付订单id,第二步根据获取得APPID、随机数、预支付订单prepay_id、签名类型、时间生成签名,第三部将生成的签名和第一步获取得到信息一同返回给小程序,第四步小程序接收值发起支付
2.话不多说直接看代码
第一:吊起微信支付该方法返回的值有你需要得到prepay_id、随机字符串、签名类型、时间。还有一个签名切记这个签名不是我们给小程序的
protected function weixin_pay($order)
{
Loader::import("weixinpay.lib.WxPay", EXTEND_PATH, ".Api.php");
Loader::import("weixinpay.example.log", EXTEND_PATH, ".php");
Loader::import("weixinpay.example.WxPay", EXTEND_PATH, ".Config.php");
$notify=new NativePay();
$logHandler= new \CLogFileHandler(EXTEND_PATH."weixinpay/logs/".date('Y-m-d').'.log');
$log = \Log::Init($logHandler, 15);
$input = new \WxPayUnifiedOrder();
$input->SetBody("xiaoasdhjasd");
$input->SetAttach("asdasd");
$input->SetOut_trade_no($order["order_number"]);
// $input->SetTotal_fee($order["money"]*100);
$input->SetTotal_fee("1");
$input->SetTime_start(date("YmdHis"));
$input->SetTime_expire(date("YmdHis", time() + 600));
$input->SetGoods_tag("test");
$input->SetNotify_url("https://test.gdzhisheng.top/index.php/index/index/notify.html");
$input->SetTrade_type("JSAPI");
$input->SetProduct_id("407038");
$openid=$this->openid;
$input->SetOpenid($openid);
$api=new \WxPayApi();
$config=new \WxPayConfig();
$order = $api->unifiedOrder($config,$input);
return $order;
}
第二:将上一个方法得到的参数进行签名
private function genPaySign($unifiedOrder, $time)
{
//$unifiedOrder是上一个方法返回的参数$time是一个时间戳
$appId = "你的appid";
$key="你的商户密钥";
$nonceStr = $unifiedOrder['nonce_str'];
$package = 'prepay_id='.$unifiedOrder['prepay_id'];
$signType = "MD5";
$timeStamp = $time; $sign = MD5("appId={$appId}&nonceStr={$nonceStr}&package={$package}&signType={$signType}&timeStamp={$timeStamp}&key={$key}"); return $sign;
}
第三:微信小程序下单,去后台获取, 发起支付
xiadan: function (options) {var that = this;
var http = getApp();
var url = http.globalData.url
var openid = http.globalData.openid
wx.request({
url: url + '/index.php/index/index/buy_oneorder',
method: 'POST',
data: {
openid: openid,
order_id: options.order_id
},
success: function (res) {
that.setData({
order_id: options.order_id,
timeStamp: res.data.time,
nonceStr: res.data.pay.nonce_str,
package: res.data.pay.prepay_id,
paySign: res.data.sign,
})
}
})
},
希望对你有所帮助!
微信小程序调用微信支付的更多相关文章
- 微信小程序调用微信支付接口
本文链接:https://blog.csdn.net/u012667477/article/details/80940578前言:应项目要求,需要使用微信小程序做支付,写完后告知手续费太高方案不予通过 ...
- 微信小程序调用微信登陆获取openid及用户信息 java做为服务端
转载的文章,很不错 https://blog.csdn.net/weilai_zhilu/article/details/77932630
- 微信小程序之微信支付C#后台(统一下单)
一.微信小程序支付 1.微信小程序端请求支付接口 商户在小程序中先调用该接口在微信支付服务后台生成预支付交易单,返回正确的预支付交易后调起支付.具体可以查看接口示例. 接口传入参数示例: <xm ...
- 图解微信小程序---调用API操作步骤
图解微信小程序---调用API操作步骤 什么是API API(Application Programming Interface,应用程序编程接口:是一些预先定义的函数,目的是提供应用程序与开发人员基 ...
- 微信小程序之微信登陆 —— 微信小程序教程系列(20)
简介: 微信登陆,在新建一个微信小程序Hello World项目的时候,就可以看到项目中出现了我们的微信头像,其实这个Hello World项目,就有一个简化版的微信登陆.只不过是,还没有写入到咱们自 ...
- 微信小程序和微信公众号的id是一个吗
首先,简单说下我遇到的问题是我们的程序调用微信小程序得到openid,然后通过openID得到用户的唯一标识,用户得以登录,然而,当我们调用微信公众号也同样的到openid,同一以用户两个不同的ope ...
- 微信小程序与微信公众号同一用户登录问题
微信小程序与微信公众号同一用户登录问题 最近在做微信小程序与微信公众号登录合并的接口.整理相关资料以及个人认识的心得写了这篇文章与大家一起分享. 首先,简单说下我遇到的问题是我们的程序调用微信小程序得 ...
- 微信小程序结合微信公众号进行消息发送
微信小程序结合微信公众号进行消息发送 由于小程序的模板消息已经废弃了,官方让使用订阅消息功能.而订阅消息的使用限制比较大,用户必须得订阅.需要获取用户同意接收消息的权限.用户必须得和小程序有交互的时候 ...
- 微信小程序(微信应用号)开发ide安装解决方法
这两天整个技术圈都炸锅了,微信小程序(微信应用号)发布内测,首批200家收到邀请,但是没受邀请的同学,也不用担心,下面介绍一下解决方法. 首先需要下载ide,昨天只需要下载0.9版本的编辑器并替换文件 ...
随机推荐
- Django 缓存之配置Redis
一.cache介绍 由于Django是动态网站,所有每次请求均会去数据进行相应的操作,当程序访问量大时,耗时必然会更加明显,最简单解决方式是使用:缓存. 缓存工作原理:缓存是将一些常用的数据保存内存或 ...
- Python面向对象一些阶段性总结
什么时候用面向对象??? 1.共同的方法,提出来.共同的方法可以产生一个连接,其他方法可以使用,例如传文件,和执行命令都需要建立连接,关闭连接 例如 获取连接,...操作..关闭连接 2.创建模板.造 ...
- linux tload-显示系统负载状况
推荐:更多linux 性能监测与优化 关注:linux命令大全 tload命令以图形化的方式输出当前系统的平均负载到指定的终端.假设不给予终端机编号,则会在执行tload指令的终端机显示负载情形. 语 ...
- The C Programming Language-4.1
下面是c程序设计语言4.1代码以及我的一些理解 strindex函数,通过嵌套两次循环,在s[ ]和t[ ]两个数组对映元素相等且t[ ]尚未遍历完毕的情况下,不断循环,最终返回正数或-1 代码如下 ...
- 算(tyvjP4700)
背景 zhx和他的妹子出去玩. 描述
- 使用ajax传值,后台乱码
spring mvc,使用ajax传值,后台发现是乱码 解决方法: 后台的方法里加入 request.setCharacterEncoding("UTF-8"); 就行了 我前 ...
- java虚拟机(一)-java内存区域与内存溢出异常
1.简述:java虚拟机在执行java程序的过程中,会把他所管理的内存分为以下几个区域, 1.1.程序计数器 1.2.虚拟机栈 1.3.本地方法栈 1.4.java堆 1.5.方法区 如图所示: 2. ...
- alpha版出炉,实现win2008 service的session 0穿透
指定用户名,拿最小session,实现和用户ui交互. 这样,搞windows的自动化部署,就可以向前一大步啦. 比以前用psexec要用户名密码,指定session要先进多啦. 安全保密性也提高了. ...
- 用JQuery实现选中select里面的option显示对应的div
HTML: <select name="" onchange="select(this)"> <option value="1&q ...
- linux 运行tensorflow文件缺少_bz2问题及解决
今天,终于把如何在linux服务器上运行tensorflow程序的问题解决: 1.首先要在服务器上python下安装tensorflow(要看好是在python2还是python3下安装,还要看好是C ...