準備
WeChatパブリックアカウント-appid
WeChatマーチャントアカウント-mch_id
キーの値(署名アルゴリズムで必要です。実際には32ビットのパスワードで、md5を使用して生成できます)(キー設定パス) : WeChat マーチャント プラットフォーム (pay.weixin.qq.com) --> アカウント設定 --> API セキュリティ --> キー設定)
QR コードをスキャンして支払い - 統一された注文
以下はWeChat モード 2 番目に、比較的シンプルなので
let MD5 = require('md5'), xml2js = require('xml2js'), url = "https://api.mch.weixin.qq.com/pay/unifiedorder",// 下单请求地址 appid = '公众号id', mch_id = '微信商户号'; notify_url = '回调地址', out_trade_no = '自己设置的订单号',// 微信会有自己订单号、我们自己的系统需要设置自己的订单号 total_fee = '订单金额',// 注意,单位为分 body = '商品简单描述', trade_type = 'NATIVE',// 交易类型,JSAPI--公众号支付、NATIVE--原生扫码支付、APP--app支付 nonce_str = moment().format('YYYYMMDDHHmmssSSS'),// 随机字符串32位以下 stringA = `appid=${公众号id}&body=${body}&mch_id=${微信商户号}&nonce_str=${nonce_str}¬ify_url=${ notify_url}&out_trade_no=${out_trade_no}&spbill_create_ip=${ctx.request.ip}&total_fee=${total_fee}&trade_type=${trade_type}`, stringSignTemp = stringA + "&key=xxxxxxxxxxxxxxxxx", //注:key为商户平台设置的密钥key sign = MD5(stringSignTemp).toUpperCase(); //注:MD5签名方式
上記は必要なパラメータの一部です
署名生成アルゴリズムについては、WeChat 公式を参照してください: https://pay.weixin.qq.com/wiki/doc /api/native.php ?chapter=4_3
spbill_create_ip は端末の IP アドレスです
すべてのパラメータは以下の XML に結合されます
const formData = "<xml>"; formData += "<appid>" + appid + "</appid>"; //appid formData += "<body>" + body + "</body>"; //商品或支付单简要描述 formData += "<mch_id>" + mch_id + "</mch_id>"; //商户号 formData += "<nonce_str>" + nonce_str + "</nonce_str>"; //随机字符串,不长于32位 formData += "<notify_url>" + notify_url + "</notify_url>"; //支付成功后微信服务器通过POST请求通知这个地址 formData += "<out_trade_no>" + out_trade_no + "</out_trade_no>"; //订单号 formData += "<total_fee>" + total_fee + "</total_fee>"; //金额 formData += "<spbill_create_ip>" + ctx.request.ip + "</spbill_create_ip>"; //ip formData += "<trade_type>NATIVE</trade_type>"; //NATIVE会返回code_url ,JSAPI不会返回 formData += "<sign>" + sign + "</sign>"; formData += "</xml>"; // 这里使用了egg里面请求的方式 const resultData = yield ctx.curl(url, { method: 'POST', content: formData, headers: { 'content-type': 'text/html', }, }); // xml转json格式 xml2js.parseString(resultData.data, function (err, json) { if (err) { new Error("解析xml报错") } else { var result = formMessage(json.xml); // 转换成正常的json 数据 console.log(result) //打印出返回的结果 } }) var formMessage = function (result) { var message = {}; if (typeof result === 'object') { var keys = Object.keys(result); for (var i = 0; i < keys.length; i++) { var item = result[keys[i]]; var key = keys[i]; if (!(item instanceof Array) || item.length === 0) { continue; } if (item.length === 1) { var val = item[0]; if (typeof val === 'object') { message[key] = formMessage(val); } else { message[key] = (val || '').trim(); } } else { message[key] = []; for (var j = 0, k = item.length; j < k; j++) { message[key].push(formMessage(itemp[j])); } } } } return message; }
egg リクエストメソッドは上で使用されており、ネイティブノードはuse request
var request = require('request'); request({ url: url, method: "POST", body: formData }, function(error, response, body) { if (!error && response.statusCode == 200) { } });
リクエストが成功すると、最終的に XML が返され、それを code_url と out_trade_no を持つ json 形式に解析して、これら 2 つをフロントエンドに返す必要があります。 QR コードを生成してユーザーに表示し、コードをスキャンして支払いを完了します
支払いが成功したかどうかを監視します
上記の操作が完了した後、ユーザーが支払いを完了したかどうかを知る必要があります。ユーザーはこのページに留まり、ユーザーが支払いを完了した後に支払いが成功したことをユーザーに通知する必要があるためです。
まず、ユーザーが支払いを開始するときに、ユーザーがコードをスキャンして支払いできるようにするための QR コードを生成します。また、タイマーを設定し、毎回リクエストを送信する必要もあります。この時点で、バックエンドは注文クエリ用のインターフェイスを作成する必要があります。これはシステム内の注文番号です。このデータをバックエンドの注文クエリ インターフェイスに送信します。バックエンドは WeChat クエリ インターフェイス アドレス https://api.mch.weixin.qq.com/pay/orderquery を要求します。インターフェイス アドレスが WeChat によって返される XML とは異なることを除いて、プロセスは上記と同じです。返されたフィールドには SUCCESS と NOTPAY のステータスがあり、支払いがフロントエンドに返されたかどうかによって判断できます。成功した場合、ユーザーは正常に支払うように求められ、タイマーが閉じられます。
コールバックアドレス
これは非常に重要な部分であり、実際にはほとんどの操作を完了できますが、たとえば、ユーザーのコンピュータが切断されているため、リクエストを送信できない場合や、支払いができない場合など、特殊な状況が発生します。携帯電話で行われるため、ユーザーの支払い情報を記録できなくなります。このとき、コールバック アドレスは非常に重要です
コールバック アドレスを設定します
WeChat Merchant Center -> Product Center -> Development Configuration -> QR コードをスキャンして支払います
その後行う必要があることつまり、バックエンドで post を使用します。WeChat によって送信された非同期コールバック情報を受信します。これも XML 形式です。XML の受信がサポートされていない場合は、空のデータを取得する可能性があることに注意してください
また、保存中に注意する必要があります。ユーザーの支払い情報を確認するには、繰り返しの操作を避けるために、まず注文が支払われるかどうかを確認する必要があります。 概要
初めての場合は、次の点を確認してください。注意すべきことのリストです
- WeChatはデータをXML形式で返す必要があります。データを取得するのに便利なように、プラグインを介して JSON に変換します
- 返された code_url は、フロントエンドの QR コードを生成するために使用されます。その後、タイマーを設定して、注文が支払われ、最後にユーザーに結果が通知されます
- コールバック アドレスは非常に重要です。バックエンドは、WeChat 情報によって返されたコールバックを受信するためにポストする必要があります。その後、情報を保存しますが、その前に、ユーザーの支払い情報を確認するには、追加が繰り返されることを避けるために、注文が保存されているかどうかを知る必要があります。また、返された XML データは、通常の方法では受信できないため、バックエンドで受信できるようにする必要があり、追加の設定が必要です。
- 関連する推奨事項:
PC で WeChat スキャン支払いが成功した後、PHP バージョンのコード共有に自動的にジャンプ
WeChat スキャン コード支払いを実装するための php サンプル コード共有
以上がNodejsはWeChatコードスキャン決済機能を実装しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

PythonとJavaScriptには、コミュニティ、ライブラリ、リソースの観点から、独自の利点と短所があります。 1)Pythonコミュニティはフレンドリーで初心者に適していますが、フロントエンドの開発リソースはJavaScriptほど豊富ではありません。 2)Pythonはデータサイエンスおよび機械学習ライブラリで強力ですが、JavaScriptはフロントエンド開発ライブラリとフレームワークで優れています。 3)どちらも豊富な学習リソースを持っていますが、Pythonは公式文書から始めるのに適していますが、JavaScriptはMDNWebDocsにより優れています。選択は、プロジェクトのニーズと個人的な関心に基づいている必要があります。

C/CからJavaScriptへのシフトには、動的なタイピング、ゴミ収集、非同期プログラミングへの適応が必要です。 1)C/Cは、手動メモリ管理を必要とする静的に型付けられた言語であり、JavaScriptは動的に型付けされ、ごみ収集が自動的に処理されます。 2)C/Cはマシンコードにコンパイルする必要がありますが、JavaScriptは解釈言語です。 3)JavaScriptは、閉鎖、プロトタイプチェーン、約束などの概念を導入します。これにより、柔軟性と非同期プログラミング機能が向上します。

さまざまなJavaScriptエンジンは、各エンジンの実装原則と最適化戦略が異なるため、JavaScriptコードを解析および実行するときに異なる効果をもたらします。 1。語彙分析:ソースコードを語彙ユニットに変換します。 2。文法分析:抽象的な構文ツリーを生成します。 3。最適化とコンパイル:JITコンパイラを介してマシンコードを生成します。 4。実行:マシンコードを実行します。 V8エンジンはインスタントコンピレーションと非表示クラスを通じて最適化され、Spidermonkeyはタイプ推論システムを使用して、同じコードで異なるパフォーマンスパフォーマンスをもたらします。

現実世界におけるJavaScriptのアプリケーションには、サーバー側のプログラミング、モバイルアプリケーション開発、モノのインターネット制御が含まれます。 2。モバイルアプリケーションの開発は、ReactNativeを通じて実行され、クロスプラットフォームの展開をサポートします。 3.ハードウェアの相互作用に適したJohnny-Fiveライブラリを介したIoTデバイス制御に使用されます。

私はあなたの日常的な技術ツールを使用して機能的なマルチテナントSaaSアプリケーション(EDTECHアプリ)を作成しましたが、あなたは同じことをすることができます。 まず、マルチテナントSaaSアプリケーションとは何ですか? マルチテナントSaaSアプリケーションを使用すると、Singの複数の顧客にサービスを提供できます

この記事では、許可によって保護されたバックエンドとのフロントエンド統合を示し、next.jsを使用して機能的なedtech SaaSアプリケーションを構築します。 FrontEndはユーザーのアクセス許可を取得してUIの可視性を制御し、APIリクエストがロールベースに付着することを保証します

JavaScriptは、現代のWeb開発のコア言語であり、その多様性と柔軟性に広く使用されています。 1)フロントエンド開発:DOM操作と最新のフレームワーク(React、Vue.JS、Angularなど)を通じて、動的なWebページとシングルページアプリケーションを構築します。 2)サーバー側の開発:node.jsは、非ブロッキングI/Oモデルを使用して、高い並行性とリアルタイムアプリケーションを処理します。 3)モバイルおよびデスクトップアプリケーション開発:クロスプラットフォーム開発は、反応および電子を通じて実現され、開発効率を向上させます。

JavaScriptの最新トレンドには、TypeScriptの台頭、最新のフレームワークとライブラリの人気、WebAssemblyの適用が含まれます。将来の見通しは、より強力なタイプシステム、サーバー側のJavaScriptの開発、人工知能と機械学習の拡大、およびIoTおよびEDGEコンピューティングの可能性をカバーしています。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

SublimeText3 中国語版
中国語版、とても使いやすい

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、
