小程序提供了微信支付接口,但需要后端服务器先调用统一下单接口先下单,得到prepay_id才能支付。
因此首先我们需要先让后端服务统一下单,下单需要的参数如下
| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| money | Float(10,2) | 是 | 单位:元,订单的金额 |
| body | String(128) | 否 | 商品描述,格式: 商家名称-销售商品类目 |
| out_trade_no | String(32) | 否 | 商户订单号,商户系统内部的订单号,32个字符内、可包含字母 |
| openid | String(128) | 否 | 用户标识 |
调用例子:
~~~
order: function () {
var url = app.url + 'Api/Api/payment&PHPSESSID=' + wx.getStorageSync('PHPSESSID')
var that = this
wx.request({ //让服务器端统一下单,并返回小程序支付的参数
url: url,
data: {
money: 1, //支付1元
openid: wx.getStorageSync('openid')
},
success: function (res) {
if (res.data.status == 0) {//服务器参数返回不正常,显示错误信息
wx.showToast({
title: res.data.msg,
icon: '../../images/icon_wrong.png',
duration: 2000,
})
} else { //服务器参数返回正常,调用小程序支付接口
that.payment(res.data)
}
}
})
},
~~~
后端服务器PHP的payment方法,在这方法里我们指定Home/Service/payok 为异步接收微信的支付结果
~~~
function payment() {
$info = get_app_info ();
$money = I ( 'money' );
$body = I ( 'body' );
if (empty ( $body )) {
// 商家名称-销售商品类目
$body = $info ['public_name'] . '-服务购买';
}
$out_trade_no = I ( 'out_trade_no' );
if (empty ( $out_trade_no )) {
$out_trade_no = date ( 'ymd' ) . NOW_TIME . rand ( 100, 999 );
}
$openid = I ( 'openid' );
if (empty ( $openid )) {
$token = get_token ();
$openid = $GLOBALS ['myinfo'] [$token] ['openid'];
}
$appid = $info ['appid'];
$param ['body'] = $body;
$param ['out_trade_no'] = $out_trade_no;
$param ['total_fee'] = $money * 100;
$param ['openid'] = $openid;
$param ['mch_id'] = $info ['mch_id'];
$param ['partner_key'] = $info ['partner_key'];
$order = D ( 'Common/Payment' )->weiapp_pay ( $appid, $param, 'Home/Service/payok' );
echo json ( $order );
}
~~~
下完单后返回小程序支付需要的全部参数,直接使用即可
~~~
payment: function (data) {
wx.requestPayment({
'timeStamp': data.timeStamp,
'nonceStr': data.nonceStr,
'package': data.package,
'signType': data.signType,
'paySign': data.paySign,
success: function (res) { //支付成功,提示用户
wx.showToast({
title: '支付成功',
icon: 'success',
duration: 2000,
})
},
fail: function (res) { //支付失败,提示失败原因
wx.showToast({
title: res.errMsg,
icon: '../../images/icon_wrong.png',
duration: 2000,
})
}
})
}
~~~
要查询微信支付结果,可参考公众号的微信支付 [异步接收支付结果](异步接收支付结果.md) 章节
- 序言
- 基础
- 安装WeiPHP
- 目录结构
- 错误码分配
- 错误码问答系统
- 入答疑群方法
- 快速入门
- 谈谈开发目标
- 前期准备
- 增加应用
- 编写微信响应代码
- 激动的时刻_体验测试
- 用户
- 用户体系
- 超级管理员
- 运营人员
- 粉丝
- 扫码登录
- 公众号
- 手工绑定
- 一键绑定
- 自定义菜单
- 微信支付
- 微信平台支付配置
- 公众号支付
- 原生扫码支付
- 异步接收支付结果
- 现金红包
- 发放普通红包
- 查询红包记录
- 红包记录数据结构
- 现金支付
- 下发支付
- 查询支付记录
- 现金支付数据结构
- 刷卡支付
- 提交刷卡支付
- 查询刷卡支付记录
- 撤销刷卡支付
- 支付记录数据结构
- API服务
- oauth2.0安全验证
- 后台配置API
- 小程序
- HTTPS部署
- 腾讯云服务器部署
- 阿里云HTTPS部署
- 自发证书HTTPS部署
- openssl升级到1.02
- 自动登录注册
- 短信验证码
- 网络请求
- 上传图片
- 生成事件二维码
- 小程序支付
- 小程序微信支付配置
- 小程序调用支付功能
- 模板消息
- 消息模板配置
- 支付后发模板消息
- 提交表单后发模板消息
- 卡券(会员卡、优惠券)
- 客服
- 与公众号互通
- 微信开放平台
- 一键绑定公众号
- 积分等级
- 积分规则
- 积分操作
- 积分等级数据结构
- 日志
- 后台日志
- 运营日志
- 接口日志
- 调试日志
- 错误日志
- 日志数据结构
- 应用管理
- 应用管理列表
- 新增应用
- 应用开发
- 安装应用
- 模型
- 模型介绍
- 模型管理
- 新增加模型
- 新增加字段
- 列表定义
- 通用视图模板
- 定时任务
- 定时任务介绍
- 配置定时任务
- 开启定时器
- 系统自触发
- window定时器
- Linux定时器
- Mac定时器
- 定时任务数据结构
- 商业应用
- 分销商城
- 教育培训
- 摇红包
- 梦云社区
- 婚庆派
- 部署
- Linux服务器一键安装包部署
- Window集成包部署