博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
小程序微信支付
阅读量:6078 次
发布时间:2019-06-20

本文共 1374 字,大约阅读时间需要 4 分钟。

后端

后端分为两部分:

  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回调函数
无论如何不能以此作为业务支付成功的判断

结果回调

和公众号支付回调相同

转载地址:http://mjagx.baihongyu.com/

你可能感兴趣的文章
LintCode 第一题fizz buzz
查看>>
5002.课件和视频下载--防火墙虚拟系统技术说明
查看>>
fragment中查看view的宽度以及单位px和dip换算
查看>>
第 5 章 网络 - 031 - none和host网络的适用场景
查看>>
第 5 章 Nova - 041 - Resize Instance 操作详解
查看>>
满满都是回忆:微软带你回顾XP时代的100个经典(转自远景论坛)
查看>>
起死回生:专治Linux各种“起不来”
查看>>
PPT制造精巧水晶收获组织机构图好看的ppt模板下载
查看>>
【零基础手把手教你学Python】02 与Python的第一次亲密接触——HelloWorld
查看>>
我的友情链接
查看>>
mysql数据库基础知识
查看>>
mysql中 ${param}与#{param}区别
查看>>
docker基础
查看>>
Java代码实现发送邮件
查看>>
IBM将宣布建立英国数据中心,跻身世界一流AI阵营
查看>>
电脑调整分区后分区不见的数据找回方法
查看>>
SD卡操作
查看>>
机械硬盘显示位置不可用要怎样办啊
查看>>
Apache构建虚拟Web主机
查看>>
nmcli命令使用以及网卡绑定bond
查看>>