實戰(zhàn):云開發(fā)·實現在線充值小程序

2020-5-3

文章編號:007/100

以前很少寫文章。從今天開始我要挑戰(zhàn)一下自己疼邀,連續(xù)輸出100篇技術類文章喂江。這100篇文章我盡量以實戰(zhàn)案例為主。

如果你覺得本文還不錯旁振,記得關注或者給個 star获询,你們的贊和star是我編寫更多更精彩文章的動力!
GitHub 地址

serverless 在小程序上體現的淋漓盡致规求,開發(fā)體驗太爽了筐付。我發(fā)現用云開發(fā)實現微信支付更為簡單卵惦!

如果你也想學習小程序支付阻肿,但是有沒有商戶號。我的商戶號可以借你用用沮尿,反正里面也沒錢丛塌。我 wx: guzhan321 備注 小程序

本文重點內容

  • 小程序布局
  • 云函數實現統一下單接口
  • 功能測試

成品演示

demo_007_1.gif

關鍵技術點

  • 小程序調用統一下單接口

內容大綱

  • 創(chuàng)建小程序
  • 頁面布局
  • 實現云函數接口
  • 頁面聯調

開始擼代碼

創(chuàng)建小程序

使用最新版的微信開發(fā)者工具较解,創(chuàng)建小程序時默認會使用云開發(fā)模板。
demo_007_2.png
剛創(chuàng)建好的云開發(fā)模板就是這樣的赴邻,默認的模板已經實現了一些功能印衔。所以有些是要刪除的
demo_07_3.png

頁面布局

打開 index 頁面,實現基本的頁面布局姥敛,需要將原來的代碼刪掉奸焙。
目錄:/miniprogram/pages/index/index.wxml
<!--index.wxml-->
<view class="container">

<input class="phone" value="{{phone}}" placeholder="請輸入手機號" />

<view class="money" >
  <view><button bindtap="pay" type="primary" data-money="0.01" >0.01</button></view>
  <view><button bindtap="pay" type="primary" data-money="0.02" >0.02</button></view>
  <view><button bindtap="pay" type="primary" data-money="0.03" >0.03</button></view>
</view>
<view class="money" >
  <view><button bindtap="pay" type="primary" data-money="0.04" >0.04</button></view>
  <view><button bindtap="pay" type="primary" data-money="0.05" >0.05</button></view>
  <view><button bindtap="pay" type="primary" data-money="0.06" >0.06</button></view>
</view>
  <view>
    這是一個測試版,并沒有實際功能
  </view>
</view>

修改樣式
目錄:/miniprogram/pages/index/index.wxml

/**index.wxss**/
page {
  background: #f6f6f6;
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
}
.phone{
  width: 95vw;
  height: 100rpx;
  font-size: 70rpx;
  border-bottom: 1px solid green;
  margin-bottom: 15rpx;
  margin-top: 100rpx;
}
.money{
  width: 95vw;
  display: flex;
  flex-direction: row;
}
.money view{
  flex: 1;
  display: flex;
  flex-direction: row;
  padding: 5rpx;
}
.money view button{
  flex: 1;
  width: auto;
}
這個時候彤敛,頁面已經渲染出來了

實現云函數接口

  • 創(chuàng)建云函數

      右鍵點擊 cloudfunctions 文件夾与帆,選擇新建 Node.js 云函數,輸入 pay 然后按下回車鍵
    
  • 安裝依賴

      在 pay/package.json 文件中的 dependencies 字段下新增一行 "tenpay": "^2.1.18"
    
      右鍵點擊 pay 文件夾墨榄,選擇在終端打開玄糟。然后在終端輸入 npm i
    
  • 開始編寫接口

      打開 pay/index.js 開始編寫 支付接口
    
// 云函數入口文件
const cloud = require('wx-server-sdk')
const tenpay = require('tenpay')

const config = {
  appid: 'wxf25e232c63a1111a', // 小程序 appid
  mchid: '1515679431',  // 商戶號
  partnerKey: '3a816922aba3ee43a8920024b9444996',  // api 秘鑰
  notify_url: 'https://www.qq.com/',  
  spbill_create_ip: '127.0.0.1'
}

const wxApi = new tenpay(config)

cloud.init()

// 云函數入口函數
exports.main = async (event, context) => {
  const { money } = event
  const wxContext = cloud.getWXContext()
  let out_trade_no = Date.now() + '_' + parseInt(Math.random() * 1e5)
  let result = await wxApi.getPayParams({
    out_trade_no: out_trade_no,
    body: '模擬充值',
    total_fee: money,
    openid: wxContext.OPENID
  });
  
  return {
    payParams: result
  }
}
  • 提交云函數

      右鍵點擊 pay 文件夾,選擇 上傳并部署:所有文件
    

頁面聯調

  • 新增 js 事件
//pages/index/index.js
const app = getApp()

Page({
  data: {
    phone: '15021134415',
  },
  pay: async (e) => {
    try {
      const { money } = e.currentTarget.dataset
      console.log('調用支付', money)
      wx.cloud.callFunction({
        name: 'pay',
        data: {
          money: parseFloat(money) * 100 + ''
        },
        success: (data) => {
          const { payParams } = data.result
          wx.requestPayment({
            nonceStr: payParams.nonceStr,
            package: payParams.package,
            paySign: payParams.paySign,
            timeStamp : payParams.timeStamp,
            signType : 'MD5',
            success: () => {
              wx.showToast({
                title: '支付成功'
              })
              wx.showShareMenu({
                withShareTicket: true,
                complete: (res) => {},
              })
            },
            fail: (err) => {
              wx.showToast({
                title: '支付失敗',
                icon: 'none'
              })
              console.log(err)
            }
          })
        }
      })
    } catch (error) {
    }
  }
})
  • 調試:點擊預覽袄秩,微信掃描二維碼即可在手機上調試

總結

云開發(fā) serverless 模式一定會在不久的將來大行其道阵翎,因為開發(fā)周期和開發(fā)成本都會降低很多。并且前端開發(fā)人員很容易就能上手為全站工程師之剧。

下一篇文章:taro + 云開發(fā) 實現奶茶店小程序

如果你也想學習小程序支付郭卫,但是有沒有商戶號。我的商戶號可以借你用用背稼,反正里面也沒錢箱沦。我 wx: guzhan321 備注 小程序


demo_07_3.png
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市雇庙,隨后出現的幾起案子谓形,更是在濱河造成了極大的恐慌,老刑警劉巖疆前,帶你破解...
    沈念sama閱讀 218,607評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件寒跳,死亡現場離奇詭異,居然都是意外死亡竹椒,警方通過查閱死者的電腦和手機童太,發(fā)現死者居然都...
    沈念sama閱讀 93,239評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來胸完,“玉大人书释,你說我怎么就攤上這事∩蘅” “怎么了爆惧?”我有些...
    開封第一講書人閱讀 164,960評論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長锨能。 經常有香客問我扯再,道長芍耘,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,750評論 1 294
  • 正文 為了忘掉前任熄阻,我火速辦了婚禮斋竞,結果婚禮上,老公的妹妹穿的比我還像新娘秃殉。我一直安慰自己坝初,他們只是感情好,可當我...
    茶點故事閱讀 67,764評論 6 392
  • 文/花漫 我一把揭開白布钾军。 她就那樣靜靜地躺著脖卖,像睡著了一般。 火紅的嫁衣襯著肌膚如雪巧颈。 梳的紋絲不亂的頭發(fā)上畦木,一...
    開封第一講書人閱讀 51,604評論 1 305
  • 那天,我揣著相機與錄音砸泛,去河邊找鬼十籍。 笑死,一個胖子當著我的面吹牛唇礁,可吹牛的內容都是我干的勾栗。 我是一名探鬼主播,決...
    沈念sama閱讀 40,347評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼盏筐,長吁一口氣:“原來是場噩夢啊……” “哼围俘!你這毒婦竟也來了?” 一聲冷哼從身側響起琢融,我...
    開封第一講書人閱讀 39,253評論 0 276
  • 序言:老撾萬榮一對情侶失蹤界牡,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后漾抬,有當地人在樹林里發(fā)現了一具尸體宿亡,經...
    沈念sama閱讀 45,702評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,893評論 3 336
  • 正文 我和宋清朗相戀三年纳令,在試婚紗的時候發(fā)現自己被綠了挽荠。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,015評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡平绩,死狀恐怖圈匆,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情捏雌,我是刑警寧澤跃赚,帶...
    沈念sama閱讀 35,734評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站腹忽,受9級特大地震影響来累,放射性物質發(fā)生泄漏砚作。R本人自食惡果不足惜窘奏,卻給世界環(huán)境...
    茶點故事閱讀 41,352評論 3 330
  • 文/蒙蒙 一嘹锁、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧着裹,春花似錦领猾、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,934評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至少孝,卻和暖如春继低,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背稍走。 一陣腳步聲響...
    開封第一講書人閱讀 33,052評論 1 270
  • 我被黑心中介騙來泰國打工袁翁, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人婿脸。 一個月前我還...
    沈念sama閱讀 48,216評論 3 371
  • 正文 我出身青樓粱胜,卻偏偏與公主長得像,于是被迫代替她去往敵國和親狐树。 傳聞我的和親對象是個殘疾皇子焙压,可洞房花燭夜當晚...
    茶點故事閱讀 44,969評論 2 355