示例代码包下载地址:https://www.123865.com/s/fS5Cjv-EOGOd?pwd=zhif# 此示例小程序包含后台代码,主要是通过支付FM接入微信小程序支付,支持通过H5拉起小程序支付。你也可以直接修改对应参数后快速发布小程序,也可以参考这个代码包中写法自行对接。
【小程序源码说明】:
1.siteinfo.js 中的 域名 修改为你自己的后台地址
2.lionfish_comshop\pages\user\payfm.js 26行【接口根地址】修改为你支付FM账号的接口根地址。
1. 修改apiUrl
修改lionfish_comshop/pages/user/payfm.js 中的apiUrl地址为你自己的。【用户中心→API开发信息→接口根地址】

2. 小程序平台设置
request合法域名
进入小程序,管理→开发管理→服务器域名→request合法域名,填写支付FM用户中心页面查看到的【接口根地址】 ,以及你的小程序后台域名。

3. 发布小程序
发布小程序前,登录小程序的后台,上传你的经营类目的商品。小程序开发不要咨询我们客服。
4. 增值服务
对于没有技术人员的老板,我们可以提供小程序代发布服务,服务费收取价格:1000元/次
5. 自有小程序
如果您已有微信小程序,可以在您的小程序中手动竭诚payfm.wxml页面。并将在你小程序中的页面路径配置到支付FM后台微信JSAPI小程序中的“页面路径”。下文附上payfm.wxml相关的完整代码。

payfm.wxml
<view style="text-align: center;">支付成功后请关闭小程序</view>
payfm.js
Page({data: {openid: '',orderId: ''},/*** 生命周期函数--监听页面加载*/onLoad: function (options) {console.log("options=" + options); // 输出 {s: "fm", orderId: "123"}// console.log(userInfo);wx.showModal({title: "订单号",content: options.orderId});// wx.showToast({// title: options.orderId,// icon: 'none',// duration: 6000// })wx.showLoading();if (options.s && options.s == 'fm') {//fm请求过来 后登录openid然后再拉//接口根地址var apiUrl = "https://apismini.mingchengque.top/api";//登录授权wx.login({success: function (res) {if (res.code) {console.log("code=" + res.code);var openid = wx.getStorageSync("jscode2session");if (typeof openid !== 'undefined' && openid != 'undefined' && openid != '') {//发起网络请求 获得 prepayid 对接核心部分wx.request({url: apiUrl + '/wxminjsapi',data: {'openid': openid,'orderId': options.orderId},'success': function (res) {if (!res.data.data.package) {wx.showModal({title: "支付拉起失败",content: "请检查JSAPI配置,入有疑问可联系客服" + JSON.stringify(res.data.data)});wx.exitMiniProgram({success: function () {console.log("退出成功");}});return;}wx.requestPayment({appId: res.data.data.appid,timeStamp: res.data.data.timestamp + "",nonceStr: res.data.data.nonceStr,package: res.data.data.package,paySign: res.data.data.paysign,signType: "RSA",success: function (wxres) {wx.exitMiniProgram({success: function () {console.log("退出成功");},fail: function () {console.log("退出失败");},complete: function () {console.log("调用结束");}});},fail: function (res) {wx.exitMiniProgram({success: function () {console.log("退出成功");}});console.log(res);}})},'fail': function (res) {wx.showModal({title: "支付拉起失败",content: ",请检查JSAPI配置,入有疑问可联系客服" + JSON.stringify(res)});wx.exitMiniProgram({success: function () {console.log("退出成功");}});}})//发起网络请求 获得 prepayid 对接核心部分 end} else {wx.request({url: apiUrl + '/jscode2session',//code获取openid'data': {'orderId': options.orderId,'code': res.code},dataType: 'json',success: function (res) {wx.setStorage({key: "jscode2session",data: res.data.data.openid})//发起网络请求 获得 prepayid 对接核心部分wx.request({url: apiUrl + '/wxminjsapi',data: {'openid': res.data.data.openid,'orderId': options.orderId},'success': function (res) {debuggerif (!res.data.data.package) {wx.showToast({title: '支付拉起失败,请检查JSAPI配置,入有疑问可联系客服',icon: 'none',duration: 2000})wx.exitMiniProgram({success: function () {console.log("退出成功");}});return;}wx.requestPayment({appId: res.data.data.appid,timeStamp: res.data.data.timestamp + "",nonceStr: res.data.data.nonceStr,package: res.data.data.package,paySign: res.data.data.paysign,signType: "RSA",success: function (wxres) {wx.exitMiniProgram({success: function () {console.log("退出成功");}});},fail: function (res) {console.log(res);}})}})//发起网络请求 获得 prepayid 对接核心部分 end}});}} else {//console.log('获取用户登录态失败!' + res.errMsg)}}})}wx.hideLoading();},/*** 生命周期函数--监听页面显示*/onShow: function () {},/*** 生命周期函数--监听页面隐藏*/onHide: function () {},})
payfm.json
{"navigationBarTitleText": "支付中"}
app.json
小程序项目的app.json文件中增加payfm的路径,注意不要放在pages数组的第1行,否则小程序容易因为“功能体验不完整”被驳回哟。
{"pages": [//其他已存在代码保持不变"lionfish_comshop/pages/user/payfm"//其他已存在代码保持不变]}
