この記事では、特定のコードパス0-1を言っていない、私はいくつかの問題を解決する方法に焦点を当てます
次のように支払われた主な問題が発生しました:
1.取得のOpenID
単一の下で統一2.事前に注文番号を取得する(私は立ち上がって、フルネームプリペイドトランザクションセッション識別子)
3.呼び出し元の支払い
支払い処理後4
非常にシンプルなのOpenIDを取得1、コードを取得するにはTaro.login()を呼び出して、バックエンドのOpenIDに渡されます、これは終わりを取り戻す必要があります
受注の下2.統合いくつかの問題:
おそらくあなたは非常に多くの必須パラメータが必要になります。
{ のAppID: ''、// AppIDを mch_id: ''、 // マーチャントIDの nonce_str: ''、// ランダムな文字列 ボディ: ''、// 製品について簡単に説明する out_trade_no: ''、// マーチャントシステム内部注文番号唯一 total_fee:「」、// 注文合計、数分で spbill_create_ip:「」、// あなたのIPは、あなたがバックエンドに渡す :「」、notify_url // 支払うことを知らせる通知アドレス、マイクロチャネルトーン、ケース trade_type: 'JSAPI' 、 OpenIDの: '' }
①ランダムな文字列
②署名
③XMLアセンブリと分析
①
エクスポート関数 randomString(LEN = 32 ){ CONST文字の = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890' 。 constのmaxPos = chars.length。 PWDてみましょう '=' ; 以下のために(iは++; iがLEN <I = 0せ{) PWD(Math.floor(Math.random()* + = chars.charAt )maxPos)を、 } 戻りPWD。 }
②
次のようにパラメータを準備
CONSTのparams = { APPID: '' 、 mch_id: '' 、 nonce_str:randomString( 32 )、 本体: '' 、 out_trade_no: '' 、 total_fee: '' 、 spbill_create_ip: '' 、 notify_url: '' 、 trade_type:「JSAPI " 、 OpenIDの: '' }
署名:
CONST記号= signFunc(paramsは)
params.sign =符号
署名機能
エクスポート機能signFunc(データ){ // キーの1辞書の並べ替え のconst = sortArr Object.keys(データ).sort() // キーURL 2.ターン // constの=文字列化(sortObjを)qsString qsStringをしましょう= ' ' sortArr.map((T、指数) => { IF(インデックス=== 0 ){ qsString =' $ {T} = $ {DATA [T]} ` } 他{ qsString =` $&$} {qsString T} = { $ {DATA [T]} ` } }) // 3.キー+スプライシング文字列 CONST = qsString stringSignTemp +`キー=&$ '} {キー // 4.MD5签名 CONST記号= MD5(stringSignTemp).toUpperCase() 戻り記号 }
私はフレーズをコメントしています、ので、URLパラメータのキーと値のペアを生成するためにそれを使用していない、NPMライブラリーの適量と呼ばれています
③