WeChat モールの WeChat 支払いインターフェースを使用してユーザーのアドレスを取得します
人に釣りを教えるよりも釣りを教える方が良いです
ユーザーの住所を取得するための WeChat 決済
WeChat を使用した住所情報の取得は、WeChat 決済の申請が完了すると、この機能を使用できるようになります。
WeChat Mall では、WeChat Pay を使用してユーザーの配送先住所を取得することで、ユーザーが住所情報を入力する複雑なプロセスを省略し、ユーザー エクスペリエンスを向上させることができます。
ただし、ユーザーのプライバシーに関わるため、使用中はユーザーが積極的にこの機能を使用することを選択する必要があり、クリック操作を通じてのみユーザーの配送先アドレスを取得できることが重要です。注意してください。
操作プロセスは次のとおりです:
1. ユーザーはショッピング カート ページを開き、チェックアウトをクリックして、アドレス https://open.weixin の WeChat oauth2 ページにジャンプします。 .qq.com/connect/oauth2/authorize
2. oauth2 ページはリンクを決済ページにリダイレクトし、PHP を使用してリンク内のコード パラメーターを取得し、処理後に accessToken 値を取得します。署名を生成し、それをパラメータの配列に組み立てて、ページに渡します。
3. 決済ページはユーザーのクリックイベントを使用し、2で生成した配列パラメータを組み合わせてアドレスを取得する機能を完了します。ここで取得したアドレスをajaxを利用してデータベースに記録する機能を持たせると、次回購入時に気にする必要がなくなります。
注意すべき点について詳しく説明します。
1. WeChat にジャンプする手順に大きな違いはありません。ユーザーの観点から見た oauth2 はい、しかし、このプログラムではやるべきことがたくさんあります。 1 つ目は oauth2 ページのパラメータです。ここで、appid は WeChat appid、redirect_uri は urlencode の後の注文決済ページのアドレス、response_type は固定コード、scope は固定の snsapi_base、状態は自由に入力できます。 #wechat_redirect もあります。リンクの最終的な外観は次のようになります:
https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID<span style="color: #ff0000;">&redirect_uri</span>=订单结算地址<span style="color: #ff0000;">&response_type</span>=code<span style="color: #ff0000;">&scope</span>=snsapi_base<span style="color: #ff0000;">&state</span>=随意填写#wechat_redirect
2. ユーザーはこのアドレスにアクセスし、コード パラメーターを使用して注文決済アドレスにリダイレクトされます。このページは、accessToken に移動するプログラムによって取得する必要があります。ユーザー情報の取得に使用される accessToken は、WeChat との対話に使用される別のアクセス トークンと同じではないことに注意してください。
GET リクエストを使用して accessToken を取得します。curl または file_get_contents を使用できます。リクエストアドレスは次のとおりです:
https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID<span style="color: #ff0000;">&secret</span>=APP_SECRET<span style="color: #ff0000;">&code</span>=CODE<span style="color: #ff0000;">&grant_type</span>=authorization_code;
ここで注意すべき点は、時々 WeChat が発作を起こし、注文決済ページを連続して複数回リクエストし、accessToken が無効になり、特別な処理が必要になります。
ここでの署名の生成は、WeChat 支払いの署名とは異なり、文字列を暗号化するだけです: accesstoken=ACCESSTOKEN&appid=APPID&noncestr=32 ビットのランダムな文字列×tamp=timestamp&url =現在のページの文字列を削除し、その文字列に対して sha1 暗号化を実行します。
アドレスを取得する機能を実現するには、フロントエンド ページで一連のパラメーター、つまり appID、scope (デフォルトは jsapi_address)、signType (デフォルトは sha1)、addrSign (文字列) を使用する必要があります。上記の sha1 によって暗号化されます)、timeStamp (上記のタイムスタンプ)、nonceStr (上記のランダムな文字列)。
3. フロントエンド ページで、次の js 関数を使用してユーザー アドレスを取得する操作を完了します。
<span style="color: #000000;">function get_addr(){ WeixinJSBridge.invoke('editAddress',{ "appId" : "</span><span style="color: #0000ff;"><?</span><span style="color: #ff00ff;">php echo $sign['appId']</span><span style="color: #0000ff;">?></span><span style="color: #000000;">", "scope" : "jsapi_address", "signType" : "sha1", "addrSign" : "</span><span style="color: #0000ff;"><?</span><span style="color: #ff00ff;">php echo $sign['addrSign']</span><span style="color: #0000ff;">?></span><span style="color: #000000;">", "timeStamp" : "</span><span style="color: #0000ff;"><?</span><span style="color: #ff00ff;">php echo $sign['timeStamp']</span><span style="color: #0000ff;">?></span><span style="color: #000000;">", "nonceStr" : "</span><span style="color: #0000ff;"><?</span><span style="color: #ff00ff;">php echo $sign['nonceStr']</span><span style="color: #0000ff;">?></span><span style="color: #000000;">", },function(res){ if(res.err_msg == 'edit_address:ok') { </span><span style="color: #000000;"> <br> //将地址信息存入数据库 //将地址信息显示在当前页面 </span>
<span> document.getElementById("address_info").innerHTML="<b>收件人:"+res.userName+"</b> <b>"+res.telNumber+"</b><br /><span> 收货地址:"+res.proviceFirstStageName+res.addressCitySecondStageName+res.addressCountiesThirdStageName+res.addressDetailInfo; </span></span>
<span style="color: #000000;"> } else{ alert("获取地址失败,请重新点击"); } }); }</span>
この時点で、WeChatを使用します ユーザーの共有アドレスを取得する開発は完了しました。
ご不明な点がございましたら、QQ:97695870