PS:在上一篇文章中,通过对主体上传xml数据进行签名获取到了微信返回的数据,将返回的xml数据中的prepay_id提取出来后就可以进行下一步: 对prepay_id以及其他所需参数进行在此签名并将数据返回小程序端
PHP代码:

$timeStamp = time();
$postData = array(                            //再次签名的主体内容'appId' => 'appId=此处写你的appid','nonceStr' => 'nonceStr=' . $nonce_str,'package' => 'package=prepay_id=' . $prepay_id,'signType' => 'signType=MD5','timeStamp' => 'timeStamp=' . $timeStamp,'key' => 'key=此处写你的APIv2key',
);$disposeData = implode('&', $postData);  //将签名主体内容由数组转化为字符串
$getPaySign = MD5($disposeData);  //使用MD5进行签名
$paySign = strtoupper($getPaySign);
$payBody = array(          //返回给小程序的内容'timeStamp' => (string)$timeStamp,'nonceStr' => $nonce_str,'package' => 'prepay_id='.$prepay_id,'signType' => 'MD5','paySign' => $paySign,
);
$getpreData = json_encode($payBody);
echo $getpreData;

PS:上方PHP代码中需要注意的是:进行再签名的数据中,appId中的I是大写,在上一篇文章中的appid是小写,在此签名中的nonce_str与上一篇中获取prepay_id所需要的nonce_str是同一个变量,不需要再次生成第二个32位随机字符串,参与签名的时间戳与返回给微信的时间戳做好保持相同

小程序端JS代码:

getxml(){var test = thiswx.getStorage({        //此处openid是从缓存中获取,我在app.js中获取openid,并将其存入本地缓存之中key:'openid',success(res){console.log(res)test.setData({'openid':res.data})console.log(test.data.openid)}})wx.request({url: 'http://192.168.0.103:2908/wxPayV2/getPrepay_id.php', //此处改为你的PHP文件地址method:'POST',header:{'content-type':'application/x-www-form-urlencoded'},data:{'openid':test.data.openid,'description':'0.38mm.pen', //商品描述,这里我写死了,方便后期测试用的,注意修改'total':1  //总费用,单位为分,实际使用请乘100使其变为元},success(res){console.log(res)//      test.setData({                         //这一段内容看情况可以舍弃//        'nonceStr':res.data.nonceStr,//        'package':res.data.package,//        'paySign': res.data.paySign,//        'timeStamp': res.data.timeStamp//       })wx.requestPayment({nonceStr: res.data.nonceStr,package: res.data.package,paySign: res.data.paySign,timeStamp: res.data.timeStamp,signType: res.data.signType,success(res){console.log(res)}})}})},

以上就是如何在小程序端拉起微信支付收银台,总体来看,完成微信支付v2 JSAPI支付,总计需要两次签名,可以选择使用MD5与HMAC-SHA256进行签名,注意appid参数的大小写,注意两次签名中生成的nonce_str要相同,参与签名的时间戳参数也要与返回小程序端的时间戳保持相同


本文原创为CSDN用户:缱绻淡蓝海

PHP获取微信支付v2预支付参数prepay_id后在小程序端完成支付相关推荐

  1. 微信小程序接入微信支付(三):小程序端调用支付接口

    微信小程序调用支付接口官方文档:https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=7_7&index=5 在上一节中 ...

  2. c语言学籍管理系统小程序,学籍业务办理系统(开源 v2.0发布 优化代码,增加小程序端)...

    更新说明: 1.此2.0版,大幅度优化代码,增加小程序端方便使用 2.v1.0测试地址已关,请勿测试 学生在校期间避免不了要和各种证明打交道,比如学籍证明.转专业申请.休学申请.退学申请等等.此类业务 ...

  3. 微信小程序开发笔记 支付篇③——微信支付JSAPI下单和微信小程序调起支付(V2版本)

    文章目录 一.前文 二.流程图 三.SpringBoot接口实现 2.1 微信调起支付所需数据 2.2 下单接口 2.3 支付回调接口 三.微信小程序实现 3.1 JSAP统一下单 3.2 小程序调起 ...

  4. 微信小程序服务商模式支付巨坑解决!

    今日有个在同一个小程序支付 款项需要付到不同的银行卡里去??? 于是找了下微信小程序支付文档,只有个requestPayment方法 emmm 去看看小程序后台吧 ok 有个微信支付  但是只能绑定一 ...

  5. java 微信支付成功回调_微信支付成功但并未走回调方法(小程序支付)

    问题描述 项目采用: Spring Cloud + Boot + Gateway服务网关 + Consu 注册中心 在小程序发起微信支付后, 调用后台服务的发起微信预支付,通过预支付拿到的返回信息小程 ...

  6. 微信小程序订单生成支付二维码接口 code

    手机的小程序订单是直接拉起支付界面的,有些朋友需要生成支付二维码 这边就需要去调用微信的支付二维码接口了 需要的参数是 session_id, timeStamp, nonceStr, package ...

  7. 微信小程序—微信小程序端支付代码

    只有微信小程序端的代码,如下 Page({data: {},onLoad: function (options) {// 页面初始化 options为页面跳转所带来的参数var that = this ...

  8. 微信小程序如何实现支付功能?看官方文档头疼(使用云函数的方式操作)

    先来个效果图  ^_^ 微信支付功能,个人公众号是没有办法进行开发支付功能的,需要是使用非个人公众号进行注册(如:营业执照等,可以去淘宝购买一个也行 大概500左右) 公众平台的配置可以参考文档,这里 ...

  9. 【SpringBoot学习】39、SpringBoot 集成 wxJava 微信小程序:订单支付

    文章目录 SpringBoot 集成 wxJava 微信小程序:订单支付 1.整合 wxJava 小程序 2.支付配置类 3.application.yml 配置 4.授权登录流程 5.uniapp ...

最新文章

  1. python宏替换_#和##在宏替换中的作用
  2. python stringvar函数_Tkinter 求助,怎么获取StringVar() 的值
  3. mysql + keepalived高可用
  4. 对tf.nn.softmax的理解
  5. android中的mvp模式怎么定义,详解MVP模式在Android开发中的应用
  6. 心理阴影面积 (5 分)
  7. 【HDOJ2222】Keywords Search(AC自动机)
  8. 稀疏编码: LASSO,近端梯度优化(PGD),迭代软阈值算法(ISTA),L-Lipschitz条件,软阈值
  9. 洗衣机一边进水一边出水 更换排水阀皮碗
  10. Jquery读取.Net WebService Json数据
  11. QCC300x学习笔记:自定义一个GATT client
  12. HTML5轮播图全代码
  13. 如何修改计算机mac,苹果电脑MAC地址修改的方法
  14. 3y开发都不的不写单元测试,然后被被批了
  15. 惠州环境监测实验室建设面积要求
  16. 批量修改操作成功,但是Oracle返回的结果为-1
  17. 上位机软件开发项目案例(一)_C#开发
  18. C# USB转串口编程 - 查找COM口
  19. Spring中 List赋值 以及 util:list 全局使用
  20. MyEclipse2014安装jadeclipse插件

热门文章

  1. JAVA对图片进行等比/非等比压缩处理
  2. 不是有效的win32应用程序_什么是模块,VBA各种模块的有效行为
  3. matlab从csv文件中读取时间转换异常
  4. 旅行商问题在现代物流中的意义
  5. 20190827-Ubuntu查看内存槽的数目及内存信息
  6. 用计算机和手算标准差不一致,统计基础知识与统计实务学习指导(2015版).doc
  7. windows 8 新登陆方式(图片密码、Pin码)
  8. 学python多大年龄可以学车_考驾照的最小年龄,多少岁可以考驾照
  9. STM32用cube配置FATFS模式下SPI读写SD卡
  10. PgRouting求解大数据量最短路径