キーワード: WeChat パブリック プラットフォーム JSSDK 友達に送信 受信アドレス共有インターフェース openAddress
著者: Fangbei Studio
原文: http://www .cnblogs.com /txw1958/p/weixin-openaddress.html
この WeChat パブリック プラットフォーム開発チュートリアルでは、Web ページに配送先住所を取得する機能を実装する方法を紹介します。
配送先住所共有インターフェースは、2016年4月13日にアップグレードされました。2016年5月20日からは、新しいインターフェースのみが使用可能になります。このチュートリアルは、新しいバージョンのインターフェースのチュートリアルです。
この記事は次の 2 つの部分に分かれています:
アクセストークンの取得方法については、「WeChatパブリックプラットフォーム開発(26)アクセストークン
」を参照してください。署名を生成する前に、まず jsapi_ticket が WeChat JS インターフェースを呼び出すためにパブリック アカウントによって使用される一時的なチケットであることを理解する必要があります。通常の状況では、access_token によって取得される jsapi_ticket の有効期間は 7200 秒です。 jsapi_ticket を取得するための API 呼び出しの数は非常に限られているため、jsapi_ticket を頻繁に更新すると API 呼び出しが制限され、開発者は jsapi_ticket を独自のサービスでグローバルにキャッシュする必要があります。
access_token を取得するには、次のドキュメントを参照してください (有効期間は 7200 秒、開発者は独自のサービスで access_token をグローバルにキャッシュする必要があります):
最初のステップで取得した access_token を使用して、http GET メソッドを使用して jsapi_ticket をリクエストします (有効期間は 7200 秒、開発者はそれを独自のサービスにキャッシュする必要があります) サービス グローバル キャッシュ jsapi_ticket)、インターフェイス アドレスは次のとおりです
次の JSON が正常に返されます:
リーリーjsapi_ticket を取得したら、JS-SDK 権限検証用の署名を生成できます。
署名生成ルールは次のとおりです: 署名に参加するフィールドには、noncestr (ランダムな文字列)、有効な jsapi_ticket、timestamp (タイムスタンプ)、url (# とそれに続く部分を除く、現在の Web ページの URL) が含まれます。署名されるすべてのパラメータをフィールド名の ASCII コードに従って小さいものから大きいもの (辞書順) に並べ替えた後、URL キーと値のペアの形式 (つまり、key1=value1&key2=value2...) を使用してそれらを連結します。文字列 string1。ここで、パラメータ名はすべて小文字であることに注意してください。 string1 に対して sha1 暗号化を実行し、フィールド名とフィールド値には元の値を使用し、URL エスケープは実行しません。
つまり、signature=sha1(string1)です。 例:
リーリーステップ 1. 署名されるすべてのパラメータをフィールド名の ASCII コードに従って小さいものから大きいもの (辞書順) に並べ替えた後、URL のキーと値のペアの形式 (つまり、key1=value1&key2=value2...) を使用します。文字列 string1 に結合します:
リーリーステップ 2. sha1 で string1 に署名し、署名を取得します:
リーリー完全なコードは次のとおりです
リーリー
WeChat の配送先アドレスの共有とは、ユーザーが WeChat ブラウザで Web ページを開いてアドレスを入力することを意味し、その後の手順を入力することなくすぐに選択でき、追加や編集も可能です。このアドレスはユーザー属性であり、さまざまな販売者の Web ページで共有できます。住所を入力するためのネイティブ コントロールをサポートしており、住所データは販売者に渡されます。
アドレス共有はWeChat JavaScript APIに基づいており、WeChat内蔵ブラウザでのみ使用できます。他のブラウザからの通話は無効です。同時に、これをサポートするには WeChat バージョン 5.0 が必要です。アドレス インターフェイスを呼び出す前に、ユーザー エージェントを使用してユーザーの現在のバージョン番号を確認することをお勧めします。 iPhone のバージョンを例に挙げると、useragent を通じて次の WeChat バージョンのサンプル情報を取得できます。「Mozilla/5.0(iphone;CPU iphone OS 5_1_1 like Mac OS」。ユーザーがインストールした WeChat のバージョン番号については、販売者が判断できます。バージョン番号は 5.0 以上です。
アドレス形式
WeChat アドレス共有に使用されるデータ フィールドは次のとおりです:
その中で、この地域は「広東省-広州市-天河区」などの国家標準の3段階市外局番に対応しており、対応する郵便番号は510630です。詳細は参考リンク:http://www.stats.gov.cn/tjsj/tjbz/xzqhdm/201401/t20140116_501070.html
まず、WeChatパブリックプラットフォームにログインし、「公式アカウント設定」の「機能設定」に入り、「JSインターフェースセキュリティドメイン名」を入力します。
JS インターフェースを呼び出す必要があるページに次の JS ファイルを導入します。
特記事項: JS-SDK バージョンでは http://res.wx.qq.com/open/js/jweixin-1.1.0.js を使用する必要があります
リーリーJS-SDK を使用する必要があるすべてのページは、最初に構成情報を挿入する必要があります。そうしないと、ページは呼び出されません。
リーリー5. 準備ができたインターフェースを通じて成功した検証を処理します
需要在页面加载时就调用,需要把相关接口放在ready函数中调用来确保正确执行
wx.ready(<span>function</span><span> () { });</span>
5.1 通过checkJsApi判断当前客户端版本是否支持分享参数自定义
<span> wx.checkJsApi({ jsApiList: [ </span>'openAddress'<span>, ], success: </span><span>function</span><span> (res) { alert(JSON.stringify(res)); } });</span>
5.3. 实现收货地址共享
<span> wx.openAddress({ trigger: </span><span>function</span><span> (res) { alert(</span>'用户开始拉出地址'<span>); }, success: </span><span>function</span><span> (res) { alert(</span>'用户成功拉出地址'<span>); alert(JSON.stringify(res)); document.form1.address1.value </span>=<span> res.provinceName; document.form1.address2.value </span>=<span> res.cityName; document.form1.address3.value </span>=<span> res.countryName; document.form1.detail.value </span>=<span> res.detailInfo; document.form1.national.value </span>=<span> res.nationalCode; document.form1.user.value </span>=<span> res.userName; document.form1.phone.value </span>=<span> res.telNumber; document.form1.postcode.value </span>=<span> res.postalCode; document.form1.errmsg.value </span>=<span> res.errMsg; document.form1.qq.value </span>= 1354386063<span>; }, cancel: </span><span>function</span><span> (res) { alert(</span>'用户取消拉出地址'<span>); }, fail: </span><span>function</span><span> (res) { alert(JSON.stringify(res)); } });</span>
返回说明
返回值 |
说明 |
---|---|
errMsg |
获取编辑收货地址成功返回“openAddress:ok”。 |
userName |
收货人姓名。 |
postalCode |
邮编。 |
provinceName |
国标收货地址第一级地址(省)。 |
cityName |
国标收货地址第二级地址(市)。 |
countryName |
国标收货地址第三级地址(国家)。 |
detailInfo |
详细收货地址信息。 |
nationalCode |
收货地址国家码。 |