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 で複数のフォームのテキスト ボックスを揃える方法

推薦する

Alpine イメージに Ansible サービスを追加する方法

apk add ansible を使用して、alpine イメージに ansible サービスを追加...

MySQL 8.0.15 winx64 圧縮パッケージのインストールと設定方法のグラフィックチュートリアル

この記事では、MySQL 8.0.15 winx64 圧縮パッケージのインストールと設定方法を参考ま...

MySQL の分離レベル、ロック、MVCC の紹介

この記事の目的は、これらの概念とその機能の関係を明らかにすることです。 Mysql がトランザクショ...

MySQLでよく使われる4つのストレージエンジンについて簡単に説明します。

よく使われる4つのMySQLエンジンの紹介(1):MyISAMストレージエンジン:トランザクションや...

Nginx の break と last の違いの詳細な分析

まずは違いについて話しましょう最後に、書き換えられたルールは、次の場所と一致させるために書き換えられ...

MySql でリモート接続を許可する方法

MySql でリモート接続を許可する方法この目標を達成するには、2つのことを行う必要がある。ユーザー...

MySql 8.0.16-win64 インストール チュートリアル

1. ダウンロードしたファイルを以下のように解凍します。 。 2. 環境変数に解凍ディレクトリを追加...

CSSスタイルとセレクターの使い方

HTML で CSS を使用する 3 つの方法: 1. インラインスタイル: 要素のスタイル属性を通...

Windows 上で Zookeeper サーバーを構築するチュートリアル

インストールと設定Apacheの公式ウェブサイトには多くのミラーダウンロードアドレスが用意されており...

Dockerはコンテナポートバインディングのローカルポートを実装します

今日、イメージを起動した後、HTTP リクエスト経由でアクセスできないという小さな問題が発生しました...

ウェブ画像のホットリンクと座標値を設定するサンプルコード

時には、画像上に複数の領域を設定する必要があります。マウスで画像のさまざまな領域をクリックしてさまざ...

SQL効率を分析する方法を説明する

Explain コマンドは、データベースのパフォーマンス問題を解決するために最初に推奨されるコマンド...

Windows での mysql-5.7.28 のダウンロード、インストール、および構成に関する詳細なグラフィックとテキストのチュートリアル

最近MySQLデータベースのバージョンを変更する必要があり、それを記録するために記事を書きます1. ...

vue構成ファイルはルーティングとメニューインスタンスコードを自動的に生成します

目次前面に書かれたルータ.jsonルート生成メニュー生成効果要約する前面に書かれたルートを繰り返し記...

Centos7 環境でソースコードから mysql5.7.16 をインストールする方法の詳細な説明

この記事では、centos7 環境でソース コードから mysql5.7.16 をインストールする方...