Vue プロジェクトでの支払い機能の実装 (WeChat 支払いと Alipay 支払い)

Vue プロジェクトでの支払い機能の実装 (WeChat 支払いと Alipay 支払い)

プロジェクトにおける一般的な支払い方法

  • Alipay決済
  • 微信ペイ
  • 残金支払い(AllipayまたはWeChatへのチャージも必要)

注: この記事ではフロントエンドの観点からのみ説明します

Alipay決済

プロジェクトの難易度:

このページは h5 ウェブページです。Alipay で支払うには、Alipay の承認を取得し、Alipay の API を呼び出す必要があります。

(認証方法については、「Alipay APIの呼び出し」を参照してください)

Alipay 支払いの一般的なプロセスは次のとおりです。

注文インターフェースを呼び出して、注文番号、支払い金額などを取得します。
注文番号と金額を前払いインターフェースに渡します
バックエンドはフォームを返し、フォームを送信すると自動的にAlipayの支払いページにジャンプします。

支払い手続き:

次の図はインターフェース文書、支払いインターフェースです

Alipay を選択すると、radio=1 になります。
支払いボタンをクリックすると、pay()メソッドが実行されます。
この時点で、バックエンドの支払いインターフェースを呼び出し、注文番号、金額など、インターフェース ドキュメントに必要なフィールドを渡します。
バックエンドから {code:201,data:""}; が送信されます。
この時点で、フォームをページに挿入し、フォームを送信して、Alipayページにジャンプします。

 支払う(){
      スイッチ(this.radio){
        ケース '3':
        this.yuer();
        壊す;
        ケース '1':
        this.zhifubao();
        ケース '0':
        this.getWechatCode();
      }
    },
   志福宝(){
     支払いByZhifubao(
       {
         OutTradeNo:'Oct20200909095646265303127', // 販売者の注文番号。販売者の Web サイトの注文システムで唯一の注文番号です。必須です。販売者側は一意である必要があります。
          件名:「モバイル ウェブサイト支払いテスト」、//トピック製品コード:「QUICK_WAP_WAY」、
          body: "モバイル ウェブサイトの支払い説明情報", //製品の説明、オプション TotalAmount: 20 //支払い金額、必須}
     ).then(res=>{
       コンソールログ(res);
        (res.code === 201)の場合{
            // vuex にデータを保存します // this.$store.dispatch('addAliFrom', res.data.data)
            this.html = res.data;
            var フォーム = res.data;
            div 要素を document.createElement("div");
            div.innerHTML = form; //ここでformはバックグラウンドによって返されるデータです。document.body.appendChild(div);
            ドキュメント.フォーム[0].送信();
            //これを返します。$router.push('/aliPay')
          } それ以外 {
            アラート(res.data.msg)を返します。
          }
     })
    },

微信ペイ

ステップ:
WeChat 支払いバックエンド プログラマーはアドレスを返します。まず、アドレスを QR コードに変換するために qrcodejs2 をインストールする必要があります。まず npm install qrcodejs2 を実行する必要があります。
次に、WeChat QR コードを保存するための div が必要です。幅と高さのスタイルは CSS で記述できます。ここに読み込みページも追加しました。必要に応じて自分で追加できます。

 <div id="wechatcode" v-loading="読み込み中"
element-loading-text="読み込み中"
要素読み込みスピナー="el-icon-loading"
要素読み込み背景="rgba(0, 0, 0, 0.8)">
</div>

モジュールのインポート

import QRCode from 'qrcodejs2' // qrcodeをインポート

以下はインターフェースデータ取得と操作QRコードです

取得Wechatコード() {
                モデル
                    .getModel("wechatpay")
                    。得る({
                        注文ID:this.注文ID
                    })
                    .then(res => {
                        (res.data.code == 200){
                            this.wechatPayUrl = res.data.resultData
                            if(!this.flag){
                            // 重要なポイントはここにあり、残りはスイッチングビジネスロジックとインターフェース用です。let wechatcode = new QRCode('wechatcode', {
                                    幅: 200,
                                    高さ: 200,
                                    text: this.wechatPayUrl, // QRコードアドレス colorDark: "#000",
                                    カラーライト: "#fff",
                                })
                            }
                            this.flag = true
                            this.loading = false
                            this.isWechatCodeShow = true
                        }
                    })
        },

WeChat がスキャンして支払いを済ませた後、バックエンド スタッフは支払い成功の結果を取得し、フロントエンド スタッフに返すことができます。その後、フロントエンド スタッフはインターフェイスを呼び出し続けて、支払いが行われたかどうかを確認するだけです。ここでは、ライフサイクルを使用してポーリングを行うことができ、ジャンプアウト後に破棄する必要があります。

マウント() {
        this.getWechatCode()
        //ポーリングを実装する this.interval = window.setInterval(() => {
        タイムアウトを設定します(this.getOrderStatus(), 0);
        }, 3000);
        
    },
    破棄する前に() {
        // ポーリングをクリアする clearInterval(this.interval)
        this.interval = null
    },

ここでの`getOrderStatus()メソッドは、バックエンドの支払いステータスを照会するためのものです。支払いページに正常にジャンプした場合は、If elseの判断を行うだけです。

これで、vueプロジェクトの支払い機能(WeChat支払いとAlipay支払い)の実装に関するこの記事は終了です。より関連性の高いvueプロジェクトの支払いコンテンツについては、123WORDPRESS.COMで以前の記事を検索するか、次の関連記事を引き続き閲覧してください。今後とも123WORDPRESS.COMを応援してください。

以下もご興味があるかもしれません:
  • springboot+vue+ドッキング Alipay インターフェース+QR コードスキャン決済機能 (サンドボックス環境)
  • VueでWeChat決済機能を実装する際に遭遇する落とし穴
  • VueのH5ページはAlipayの支払い機能を呼び出す
  • Vue が Alipay の支払い機能を模倣
  • Vueプロジェクトの支払い機能コードの詳細な説明

<<:  ホバー画像のポップアウトポップアップ効果を実現するための純粋な CSS のサンプルコード

>>:  HTML で複数のフォームのテキスト ボックスを揃える方法

推薦する

VUE ユニアプリコア知識の簡単な紹介

目次仕様a. ページファイルはVueの単一ファイルコンポーネント仕様に準拠しています。 b. コンポ...

Vue+Openlayerはグラフィックスのドラッグと回転変形効果を実現します

目次序文関連資料成果を達成する実装手順序文Openlayer には独自の拡張プラグイン ol-ext...

webkit-box-reflect を巧みに使用してさまざまな動的効果を実現する (要約)

かなり前の記事で、 -webkit-box-reflectプロパティについて説明しました。リフレクシ...

HTML で選択ドロップダウン ボックスのコンテンツが不完全に表示され、部分的にカバーされる問題の解決策

今日、問題が発生しました。クエリ バーのドロップダウン ボックスの内容が長すぎて、一部が隠れてしまっ...

Linux のさまざまなロックメカニズムの使用方法と違いについて詳しく説明します

序文:この知識を理解する必要がある人は、すでにプロセス間通信とスレッド間通信の基本的な理解を持ってい...

MySQL データベース アーキテクチャの詳細

目次1. MySQL アーキテクチャ2. ネットワーク接続層3. データベースサービス層4. 接続プ...

MySQL max_allowed_pa​​cket 設定

max_allowed_pa​​cket は、受け入れるパケットのサイズを設定するために使用される ...

CSS の子要素の Z インデックスと親要素の兄弟ノードの階層問題を解決する

1. 問題の出現フラット リストを作成しました。リストの一部には、マウスをホバーすると表示されるポッ...

Nginx のパフォーマンスを向上させるための提案

Web アプリケーションが 1 台のマシンでのみ実行される場合、パフォーマンスを向上させるのは非常に...

MySQLクエリのソートとページング関連

概要通常、データベース内のデータを直接表示することは望ましくないため、最後の 2 つのセクションでは...

W3Cチュートリアル(1):W3Cを理解する

1994 年に設立された組織である W3C は、共通プロトコルの開発を促進し、それらの相互運用性を確...

html5 の新しいメソッドを使用して JavaScript で要素クラス名を操作する方法の詳細な説明

目次1. classList属性2. 実用化以前の JavaScript では、最初にクラス属性を取...

js でクラスセレクターと名前属性セレクターを実装する手順の例

jQuery の登場により、DOM の操作効率が大幅に向上し、開発がより高いレベルに引き上げられまし...

JavaScript でツリー構造を構築するための効率的なアルゴリズムについての簡単な説明

目次導入アイデアID配列インデックスのマッピング関係を確立するツリー構造の構築原理要約する導入組織階...

mysql8.0.18 で winx64 をインストールするための詳細なチュートリアル (画像とテキスト付き)

MySQLデータベースをダウンロードするには、https://dev.mysql.com/down...