微信小程序调用微信支付
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版本的编辑器并替换文件 ...
随机推荐
- Datatable 导出到execl 官网demo
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-type" content ...
- [bzoj2242][SDOI2011][计算器] (Baby-Step-Giant-Step+快速幂+exgcd)
Description 你被要求设计一个计算器完成以下三项任务: 1.给定y,z,p,计算Y^Z Mod P 的值: 2.给定y,z,p,计算满足xy≡ Z ( mod P )的最小非负整数: 3.给 ...
- saltstack(二) master、minion常用配置选项
master常用配置选项: interface: 指定bind的地址(默认0.) publish_port:指定发布端口(默认4505) ret_port: 指定结果返回端口,与minion配置文件的 ...
- 【Codeforces 600C】Make Palindrome
[链接] 我是链接,点我呀:) [题意] 题意 [题解] 计算出来每个字母出现的次数. 把字典序大的奇数出现次数的字母换成字典序小的奇数出现次数的字母贪心即可. 注意只有一个字母的情况 然后贪心地把字 ...
- ZOJ 3349 Special Subsequence
Special Subsequence Time Limit: 5000ms Memory Limit: 32768KB This problem will be judged on ZJU. Ori ...
- [luoguP2387] 魔法森林(LCT + 并查集)
传送门 并查集真是一个判断连通的好东西! 连通性用并查集来搞. 把每一条边按照 a 为关键字从小到大排序. 那么直接枚举,动态维护 b 的最小生成树 用 a[i] + 1 ~ n 路径上最大的 b[i ...
- [poj2234]Matces Game_博弈论
Matches Game poj-2234 题目大意:n堆石子的Nim游戏,anti-SG. 注释:$1\le n\le 20$. 想法:用Colon定理即可.具体见:小约翰的游戏 最后,附上丑陋的代 ...
- Java获取系统环境变量(System Environment Variable)和系统属性(System Properties)以及启动参数的方法
系统环境变量(System Environment Variable): 在Linux下使用export $ENV=123指定的值.获取的方式如下: Map<String,String> ...
- Ubuntu 16.04下MySQL 5.7.18取消开机启动(解决无法使用Sysvinit(update-rc.d/sysv-rc-conf)脚本关闭)
首先了解以下运行级别对应工具的变化历史: 1.Ubuntu 6.10及以前版本使用Sysvinit. 2.Ubuntu 14.10及以前版本使用Upstart但是还留着Sysvinit并存. http ...
- Effictive Java学习笔记1:创建和销毁对象
建议1:考虑用静态工厂方法代替构造器 理由:1)静态方法有名字啊,更容易懂和理解.构造方法重载容易让人混淆,并不是好主意 2)静态工厂方法可以不必每次调用时都创建一个新对象,而公共构造函数每次调用都会 ...