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,
})
}
})
},
buybuy:function(){
var that=this;
var http = getApp();
var openid = http.globalData.openid;
var url = http.globalData.url;
wx.requestPayment({
timeStamp: that.data.timeStamp,
nonceStr: that.data.nonceStr,
package: 'prepay_id=' + that.data.package,
signType: 'MD5',
paySign: that.data.paySign,
success: function (res) {
console.log('支付成功');
},
complete: function (res) {
console.log(res);
}
})
}

希望对你有所帮助!

微信小程序调用微信支付的更多相关文章

  1. 微信小程序调用微信支付接口

    本文链接:https://blog.csdn.net/u012667477/article/details/80940578前言:应项目要求,需要使用微信小程序做支付,写完后告知手续费太高方案不予通过 ...

  2. 微信小程序调用微信登陆获取openid及用户信息 java做为服务端

    转载的文章,很不错 https://blog.csdn.net/weilai_zhilu/article/details/77932630

  3. 微信小程序之微信支付C#后台(统一下单)

    一.微信小程序支付 1.微信小程序端请求支付接口 商户在小程序中先调用该接口在微信支付服务后台生成预支付交易单,返回正确的预支付交易后调起支付.具体可以查看接口示例. 接口传入参数示例: <xm ...

  4. 图解微信小程序---调用API操作步骤

    图解微信小程序---调用API操作步骤 什么是API API(Application Programming Interface,应用程序编程接口:是一些预先定义的函数,目的是提供应用程序与开发人员基 ...

  5. 微信小程序之微信登陆 —— 微信小程序教程系列(20)

    简介: 微信登陆,在新建一个微信小程序Hello World项目的时候,就可以看到项目中出现了我们的微信头像,其实这个Hello World项目,就有一个简化版的微信登陆.只不过是,还没有写入到咱们自 ...

  6. 微信小程序和微信公众号的id是一个吗

    首先,简单说下我遇到的问题是我们的程序调用微信小程序得到openid,然后通过openID得到用户的唯一标识,用户得以登录,然而,当我们调用微信公众号也同样的到openid,同一以用户两个不同的ope ...

  7. 微信小程序与微信公众号同一用户登录问题

    微信小程序与微信公众号同一用户登录问题 最近在做微信小程序与微信公众号登录合并的接口.整理相关资料以及个人认识的心得写了这篇文章与大家一起分享. 首先,简单说下我遇到的问题是我们的程序调用微信小程序得 ...

  8. 微信小程序结合微信公众号进行消息发送

    微信小程序结合微信公众号进行消息发送 由于小程序的模板消息已经废弃了,官方让使用订阅消息功能.而订阅消息的使用限制比较大,用户必须得订阅.需要获取用户同意接收消息的权限.用户必须得和小程序有交互的时候 ...

  9. 微信小程序(微信应用号)开发ide安装解决方法

    这两天整个技术圈都炸锅了,微信小程序(微信应用号)发布内测,首批200家收到邀请,但是没受邀请的同学,也不用担心,下面介绍一下解决方法. 首先需要下载ide,昨天只需要下载0.9版本的编辑器并替换文件 ...

随机推荐

  1. Python习题之列表排序,4种方法

    def sort_list_method_1(a): return sorted(a) print(sort_list_method_1([1, 4, 2])) def sort_list_metho ...

  2. MVC 中如果js,css文件放到视图文件夹无法访问的解决办法

    在视图配置文件web.config 中添加如下节点,注意:此web.config 是视图文件夹中的,在你的views视图中可以找到<system.webServer>开头的<hand ...

  3. Windows 硬件开发人员怎样选择代码签名证书类型

    在建立 Windows 开发人员中心硬件仪表板帐户之前,你需要获取代码签名证书以保护数字信息的安全.此证书是用于建立你的公司对你所提交代码的所有权的接受标准.它让你可以用数字形式签署 PE 二进制文件 ...

  4. Garden of Eden

    Garden of Eden Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others ...

  5. Android BottomSheet:便捷易用的底部滑出面板(1)

    Android BottomSheet:便捷易用的底部滑出面板(1) Android BottomSheet是github上的一个第三方开源项目,其主页:https://github.com/Flip ...

  6. noip模拟赛 剪纸

    题目描述 小芳有一张n*m的长方形纸片.每次小芳将会从这个纸片里面剪去一个最大的正方形纸片,直到全部剪完(剩下一个正方形)为止. 小芳总共能得到多少片正方形纸片? 输入输出格式 输入格式: 一行两个整 ...

  7. MEAN,从MONGO DB里弄出点东东来啦,以REST风格显示JSON

    最近一直在弄弄的... javascript的风格弄熟了,我觉得肯定很快,,但心中有种感觉,DJANGO和MEAN这种结构,搞大的不行. 因为MVC这种结构感觉不如SPRING这些严谨,是不是我有偏见 ...

  8. kfk: async disk IO深度解析

    http://www.itpub.net/thread-1724044-1-1.html

  9. Linux自己主动挂载第二块硬盘分区

    改动/etc/fstab文件,如果挂载到/data文件夹.在最后一行加上 /dev/sdb1 /data ext4 defaults 1 1 最后结果例如以下: # # /etc/fstab # Cr ...

  10. sgu101Domino

    给你一些边,假设存在欧拉路径就打出来 我的代码例如以下: #include<iostream> #include<cstring> using namespace std; i ...