小程序提供了微信支付接口,但需要后端服務器先調用統一下單接口先下單,得到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集成包部署