ホームページ >バックエンド開発 >PHPチュートリアル >WeChat 支払いインターフェースを使用して WeChat デパートのユーザー アドレスを取得する

WeChat 支払いインターフェースを使用して WeChat デパートのユーザー アドレスを取得する

WBOY
WBOYオリジナル
2016-06-13 12:25:14795ブラウズ

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

までお問い合わせください。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。