ホームページ >バックエンド開発 >PHPチュートリアル >PHP 開発 IIS7 の落とし穴を埋める WeChat アプレット
この記事は主に WeChat アプレットを紹介し、PHP 開発 IIS7 の落とし穴を詳しく説明します。興味のある友人は参考にしてください。
7 日間モール アプレットに取り組んできました。ドキュメントは包括的ではないので、すべてを自分で調べる必要があります
オンラインにした後は、バージョンが 1.2 以降である必要があります。 Alibaba Cloud 上の無料の CA 証明書 インターネット上にはたくさんのチュートリアルがあります。2018.4.16 親愛なるあなたはそれを申請することができますが、証明書を申請するにはナビゲーションでランダムにクリックし、無料の CA 証明書をクリックする必要があります
Windows Power を通じて Windows 2008 r2 のバージョンを 1.2 以降にアップグレードするには、インターネット上にも多くのチュートリアルがあります1: まずピットにログインします 。
session_key と openid を取得するhttps://developers.weixin.qq.com/miniprogram/dev/api/api-login.html フロントエンド code
wx.login({ success: (loginRes) => { loginRes.code } })が
server に移動します 取得したコードをフロントエンドで完了させるのではなく、サーバーに送信する必要があるのはなぜですか?
セッションキー session_key は、ユーザーデータの暗号化と署名のためのキーです。アプリケーション自身のデータのセキュリティを確保するために、開発者サーバーはセッション キーをアプレットに配信したり、このキーを外部に提供したりすべきではありません。
サーバーサイドphpはhttps://api.weixin.qq.com/sns/jscode2sessionを通じてsession_keyとopenidを取得しますユーザーのアバターニックネームなどはフロントエンドを通じて取得できます wx.getUserInfo インターフェイス
データの改ざんを防ぐために、WeChat は公式に encryptedData 戻り値を提供しており、これはサーバー
1: Payment Pit
これについては WeChat 公式を賞賛したいと思います。この文書は本当に乱雑です。ページがあります。ここ、そこのページ、特に最後のステップ支払いの検証で失敗しました これは間違いなくケースの問題です。たとえば、appId はどこでも appid ですが、ここでは大文字にする必要があります。以下に php コードを投稿します。ご不明な点がある場合は、公式がオンライン認証を提供しますhttps://pay.weixin.qq.com/wiki/tools/signverify/
支払い手順
ユーザーがフロントエンドで支払いを開始します -> サーバーと通信します -> サーバーがパラメータを送信します WeChat 支払いインターフェース (https://api.mch.weixin.qq.com/pay/unifiedorder) に移動して prepay_id を取得します -> ; サーバーは検証パラメータを生成し、フロントエンドに送信します。フロントエンドは、統一された注文を行うために wx.requestPayment
を実行します。ドキュメント: https://pay.weixin.qq.com/wiki/doc /api/wxa/wxa_api.php?chapter=9_1
統一注文を通過した後appid と nonce_Str の 2 つの間違った記述方法を長い間繰り返し確認しました。以下に例を示します。配列と疑似クエリの変換に便利な変換関数もいくつか提供します。
$params=array( 'appId'=>'', 'package'=>'prepay_id='.'', 'timeStamp'=>'', 'signType'=>'MD5', 'nonceStr'=>'' ); $params['paySign']=md5Sign($params); unset($params['appId']);次に、$params をフロントエンドに渡して、wx.requestPayment インターフェイスを呼び出します
以下は、アカウントをブロックするために私が一般的に使用する PHP 側の開発関数です
/* by 醉亦逝愁 md5Sign用于小程序服务端签名校验 */ function md5Sign($params){ ksort($params); $stringA=arr2str($params); $stringSignTemp=$stringA.'&key='.'商户key(mch_key)'; $sign=strtoupper(md5($stringSignTemp)); return $sign; } /* by 醉亦逝愁 arr2str用于小程序服务端Array转伪Query */ function arr2str($array){ $string = []; if($array && is_array($array)){ foreach ($array as $key=> $value){ $string[] = $key.'='.$value; } } return implode('&',$string); }
/* by 醉亦逝愁 arr2str用于小程序服务端Array转Xml 用途https://api.mch.weixin.qq.com/pay/unifiedorder */ function arr2xml($arr,$item='root'){ $dom = new DOMDocument("1.0"); $item = $dom->createElement($item); $dom->appendChild($item); foreach ($arr as $key=>$val){ $itemx = $dom->createElement(is_string($key)?$key:"item"); $item->appendChild($itemx); if (!is_array($val)){ $text = $dom->createCDATASection($val); $itemx->appendChild($text); }else { arrayToXml($val,$dom,$itemx); } } return $dom->saveXML($item); }
https://api.mch.weixin.qq.com/pay/unifiedorder インターフェースから返される xml は、以下の関数により Array になります
$xmlstring=simplexml_load_string($data, 'SimpleXMLElement', LIBXML_NOCDATA); $data=get_object_vars($xmlstring);
その他は後ほど追加します。
php WeChatパブリックアカウント開発現金赤い封筒
、
以上がPHP 開発 IIS7 の落とし穴を埋める WeChat アプレットの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。