小程序微信支付

简介: 后端后端分为两部分:统一下单二次签名// 统一下单$payment = app('payment');$result = $payment->order->unify([ 'body'=>self::$typeMap[$this->type].

后端

后端分为两部分:

  1. 统一下单
  2. 二次签名
// 统一下单
$payment = app('payment');
$result = $payment->order->unify([
    'body'=>self::$typeMap[$this->type].'订单',
    'out_trade_no'=>$this->no,
    'total_fee'=>$this->price * 100,
    'trade_type' => 'JSAPI',
    'openid'=>$this->user->weapp_openid
]);

小程序和公众号的的统一下单是相同的,类型传的参数都是JSAPI
曾经也自己看着支付文档封装过通用支付类,不过现在成熟的库已经很多了,这里用的是easywechat

use function EasyWeChat\Kernel\Support\generate_sign;
...
// 二次签名
$params = false;
if($result['return_code'] === 'SUCCESS'){
    $params = [
        'appId'     => env('WECHAT_PAYMENT_APPID'), // 小程序的AppId
        'timeStamp' => time(),
        'nonceStr'  => $result['nonce_str'], // 统一下单返回的随机字符串
        'package'   => 'prepay_id=' . $result['prepay_id'], // 统一下单Id
        'signType'  => 'MD5', // 签名方法
    ];
    // 注意这里用的是商户平台的Key进行二次签名
    $params['paySign'] = generate_sign($params, env('WECHAT_PAYMENT_KEY'));
}

按照文档的要求准备好参数之后,使用easywechat中的签名方法generate_sign
注意一下perpay_id的处理方式,需要拼接为查询字符串放倒package中
曾经也自己写过签名方法,错了很多次,现在PHP的开发氛围真的比以前好太多了

前端

let responsePayment = await wepy.requestPayment({
  timeStamp: params.timeStamp.toString(),
  nonceStr: params.nonceStr,
  package: params.package,
  signType: params.signType,
  paySign: params.paySign
})
if (responsePayment.errMsg === 'requestPayment:ok') {
  // 用户付款成功
}

从服务器接到签名好的支付参数后调用requestPayment方法
如果这里做了await处理的话,判断用户支付操作成功可以用errMsg属性,否则用success回调函数
无论如何不能以此作为业务支付成功的判断

结果回调

和公众号支付回调相同

目录
相关文章
|
2月前
|
小程序
【微信小程序-原生开发】实用教程12 - 注册页(含获取用户微信昵称,原生form的表单提交,t-result 的使用)
【微信小程序-原生开发】实用教程12 - 注册页(含获取用户微信昵称,原生form的表单提交,t-result 的使用)
29 0
|
2月前
|
小程序 数据库
【微信小程序-原生开发】实用教程10 - 动态的新增、修改、删除(含微信云数据库的新增、修改、删除,表单弹窗、确认弹窗、日期选择器、单行输入框、多行输入框、滑动组件的使用)
【微信小程序-原生开发】实用教程10 - 动态的新增、修改、删除(含微信云数据库的新增、修改、删除,表单弹窗、确认弹窗、日期选择器、单行输入框、多行输入框、滑动组件的使用)
49 0
|
2月前
|
小程序 API 数据库
【微信小程序-原生开发】实用教程09 - 可滚动选项,动态列表-步骤条(含事件传参),动态详情(含微信云查询单条数据 doc)
【微信小程序-原生开发】实用教程09 - 可滚动选项,动态列表-步骤条(含事件传参),动态详情(含微信云查询单条数据 doc)
55 0
|
15天前
|
移动开发 小程序 前端开发
|
23天前
|
JSON 小程序 JavaScript
超详细微信小程序开发学习笔记,看完你也可以动手做微信小程序项目
这篇文章是一份全面的微信小程序开发学习笔记,涵盖了从小程序介绍、环境搭建、项目创建、开发者工具使用、文件结构、配置文件、模板语法、事件绑定、样式规范、组件使用、自定义组件开发到小程序生命周期管理等多个方面的详细教程和指南。
|
22天前
|
小程序 前端开发
微信小程序商城,微信小程序微店 【毕业设计参考项目】
文章推荐了一个微信小程序商城项目作为毕业设计参考,该项目在Github上获得18.2k星,提供了详细的使用教程和前端页面实现,适合学习微信小程序开发和作为毕业设计项目。
微信小程序商城,微信小程序微店 【毕业设计参考项目】
|
28天前
|
小程序 开发者
第一个微信小程序的初始化过程、小程序微信开发平台的下载、如何注册一个微信小程序的账号
这篇文章介绍了微信小程序的初始化过程,包括如何注册微信小程序账号、下载微信小程序开发者平台,并指导了新建小程序的详细步骤。
第一个微信小程序的初始化过程、小程序微信开发平台的下载、如何注册一个微信小程序的账号
|
30天前
|
小程序 前端开发 JavaScript
微信小程序实现微信支付(代码和注释很详细)
微信小程序实现微信支付(代码和注释很详细)
|
2月前
|
小程序
【亲测有效】支持横竖屏 微信小程序video禁止进度条拖动,微信小程序遮罩进度条,
【亲测有效】支持横竖屏 微信小程序video禁止进度条拖动,微信小程序遮罩进度条,
57 1
【亲测有效】支持横竖屏 微信小程序video禁止进度条拖动,微信小程序遮罩进度条,
|
2月前
|
小程序 安全 搜索推荐
【微信小程序开发实战项目】——如何制作一个属于自己的花店微信小程序(3)
这是一篇关于微信小程序开发的文章摘要,作者介绍了如何创建一个网上花店小程序,旨在提供便捷的购花体验。小程序包含鲜花分类功能,允许用户按品种、颜色和用途筛选,确保快速找到合适的鲜花。它还提供了配送服务,保证鲜花的新鲜度。文章展示了`cash.wxml`、`cash.wxss`和`cash.js`的部分代码,用于实现分类和商品展示,以及`qin.wxml`、`qin.wxss`和`qin.js`,涉及商品详情和购买付款流程。代码示例展示了商品列表渲染和交互逻辑,包括页面跳转、数据传递和点击事件处理。文章最后提到了购买付款界面,强调了安全和便捷的支付体验。
79 0
【微信小程序开发实战项目】——如何制作一个属于自己的花店微信小程序(3)

热门文章

最新文章