ホームページ  >  記事  >  WeChat アプレット  >  WeChat Pay、配送先住所共有インターフェースを開発

WeChat Pay、配送先住所共有インターフェースを開発

高洛峰
高洛峰オリジナル
2017-03-06 10:10:004418ブラウズ

この記事では、WeChat決済における配送先住所共有インターフェースの開発プロセスを紹介します。

1. はじめに

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つのレベル

  • 詳細な住所

  • 郵便番号

  • 連絡先番号

このうち、この地域は「広東省-広州市-天河区」などの国家標準の3段階市外局番に対応しており、対応する郵便番号は510630です。詳細の参照リンク: http://www.stats.gov.cn/tjsj/tjbz/xzqhdm/201401/t20140116_501070.html

II. OAuth2.0 認証

を取得する前に、ログイン認証インターフェイスを呼び出す必要があります。配送先住所 OAuth2.0 アクセストークンを取得しました。したがって、認証は一度行う必要があり、この認証では確認ボックスは表示されません。
本質は、ユーザーが

http://www.fangbei.org/wxpay/js_api_call.php

にアクセスしたときに

https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx8888888888888888&redirect_uri=http://www.php.cn/

にジャンプしてコードパラメータを取得し、そのコードに基づいて認可された access_token と openid を取得することです。配送先住所共有インターフェイスを使用します。

微信支付开发收货地址共享接口

詳細な実装プロセスについては、WeChatパブリックプラットフォーム開発OAuth2.0 Web認証を参照してください

2.ランダムな文字列を取得します

ランダムな文字列を生成する方法は次のとおりです

微信支付开发收货地址共享接口

3. 署名を生成します

addrSign 署名に参加するフィールドには、appId、url (JavaScript API を呼び出す Web ページ URL)、タイムスタンプ、noncestr、accessToken が含まれます

フィールドの ASCII コードに従って署名されるすべてのパラメーターを並べ替えた後URL のキーと値のペアの形式 (つまり、key1=value1&key2=value2…) が文字列 string1 に連結されます。
ここで、署名プロセス中のすべてのパラメーター名は小文字であることに注意してください。たとえば、並べ替え後の appId 文字列は appid です。
string1 には署名アルゴリズムが使用され、フィールド名とフィールド値は元の文字列を使用します。 URL エスケープなしの値。特定の署名アルゴリズムは addrSign = SHA1(string1) です。 addrSign を生成する具体的な例は次のようになります:

appId=wx17ef1eaef46752cb
url=http://open.weixin.qq.com/
timeStamp=1384841012
nonceStr=123456
accessToken=OezXcEiiBSKSxW0eoylIeBFk1b8VbNtfWALJ5g6aMgZHaqZwK4euEskSn78Qd5pLsfQtuMdgmhajVM5QDm24W8X3tJ18kz5mhmkUcI3RoLm7qGgh1cEnCHejWQo8s5L3VvsFAdawhFxUuLmgh5FRA

i: a プロセスのキーと値のペアをソートした後、string1 が取得されます:

accesstoken=OezXcEiiBSKSxW0eoylIeBFk1b8VbNtfWALJ5g6aMgZHaqZwK4euEskSn78Qd5pLsfQtuMdgmhajVM5QDm24W8X3tJ18kz5mhmkUcI3RoLm7qGgh1cEnCHejWQo8s5L3VvsFAdawhFxUuLmgh5FRA&appid=wx17ef1eaef46752cb&noncestr=123456&timestamp=1384841012&url=http://open.weixin.qq.com/?code=CODE&state=STATE

ii: b プロセスの署名の後、

addrSign=SHA1(accesstoken=OezXcEiiBSKSxW0eoylIeBFk1b8VbNtfWALJ5g6aMgZHaqZwK4euEskSn78Qd5pLsfQtuMdgmhajVM5QDm24W8X3tJ18kz5mhmkUcI3RoLm7qGgh1cEnCHejWQo8s5L3VvsFAdawhFxUuLmg
h5FRA&appid=wx17ef1eaef46752cb&noncestr=123456&timestamp=1384841012&url=http://open.weixin.qq.com/?code=CODE&state=STATE)=ca604c740945587544a9cc25e58dd090f200e6fb

実装コードは次のとおりです

微信支付开发收货地址共享接口

4. 配送先住所を取得します

ユーザーの配送先住所の editAddress インターフェイスを編集して取得し、フロントエンドで呼び出します。ウェブページの。

パラメータリスト:

パラメータ必須説明appIdはパブリックアカウントappIDスコープはい「jsapi_address」を入力して取得しますアドレス編集許可signTypeは署名メソッドであり、現在はSHA1のみをサポートしていますaddrSignは署名であり、すべてのパラメータによって一緒に生成されますtimeStampはTime Poke nonceStrはランダムな文字列です

调用方法如下

微信支付开发收货地址共享接口

参数返回:

です
返回值 说明
err_msg edit_address:ok获取编辑收货地址成功
edit_address:fail获取编辑收货地址失败
username 收货人姓名
telNumber 收货人电话
addressPostalCode 邮编
proviceFirstStageName 国标收货地址第一级地址
addressCitySecondStageName 国标收货地址第二级地址
addressCountiesThirdStageName 国标收货地址第三级地址
addressDetailInfo 详细收货地址信息
nationalCode 收货地址国家码

 

 

五、示例

微信支付开发收货地址共享接口  微信支付开发收货地址共享接口  微信支付开发收货地址共享接口  微信支付开发收货地址共享接口  微信支付开发收货地址共享接口

 

六、完整代码

0ab009c1c6d980c0253937acfceafa69appid = $appid;
            $this->appsecret = $appsecret;
        }
    }

    //生成OAuth2的URL
    public function oauth2_authorize($redirect_url, $scope, $state = NULL)
    {
        $url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=".$this->appid."&redirect_uri=".$redirect_url."&response_type=code&scope=".$scope."&state=".$state."#wechat_redirect";
        return $url;
    }

    //生成OAuth2的Access Token
    public function oauth2_access_token($code)
    {
        $url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=".$this->appid."&secret=".$this->appsecret."&code=".$code."&grant_type=authorization_code";
        $res = $this->http_request($url);
        return json_decode($res, true);
    }

    //生成随机字符串
    function create_noncestr($length = 16) 
    {
        $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
        $str = "";
        for ($i = 0; $i 91031963a914a1b7ad87b66e6af1c857 $v){
            $bizParameters[strtolower($k)] = $v;
        }
        //字典序排序
        ksort($bizParameters);
        //URL键值对拼成字符串
        $buff = "";
        foreach ($bizParameters as $k => $v){
            $buff .= $k."=".$v."&";
        }
        //去掉最后一个多余的&
        $buff2 = substr($buff, 0, strlen($buff) - 1);
        //sha1签名
        return sha1($buff2);
    }

    //HTTP请求(支持HTTP/HTTPS,支持GET/POST)
    protected function http_request($url, $data = null)
    {
        $curl = curl_init();
        curl_setopt($curl, CURLOPT_URL, $url);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
        if (!empty($data)){
            curl_setopt($curl, CURLOPT_POST, 1);
            curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
        }
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
        $output = curl_exec($curl);
        curl_close($curl);
        return $output;
    }

}

76249c644544e2723b673f512ec3ca64oauth2_authorize($url, "snsapi_base", "fangbei");
    Header("Location: $jumpurl");
}else{
    $oauth2_access_token = $weixin->oauth2_access_token($_GET["code"]);
    $access_token = $oauth2_access_token['access_token'];
}


$timestamp = strval(time());
$noncestr = $weixin->create_noncestr();

$obj['appId']               = $weixin->appid;
$obj['url']                 = $url;
$obj['timeStamp']           = $timestamp;
$obj['noncestr']            = $noncestr;
$obj['accesstoken']         = $access_token;

$signature  = $weixin->get_biz_sign($obj);

?>
76c82f278ac045591c9159d381de2c57
100db36a723c770d327fc0aef2ce13b1
    93f0f5c25f18dab9d176bd4f6de5d30e
        a71ddd814d1e6bfc91cd420de31796d5
        b2386ffb911b14667cb8f0f91ea547a7获取共享收货地址6e916e0f7d1e588d4f442bf645aedb2f
        5a9b9ad0f88600bf5b6691a4ccfdc587
        5e18004130b03fd4aaa01fe61a84ebb1
            function callpay()
            {
                WeixinJSBridge.invoke('editAddress',{
                    "appId" : "cc07cc36e588017f83a75f3858bb8b40",
                    "scope" : "jsapi_address",
                    "signType" : "sha1",
                    "addrSign" : "1d3d1c7e9759d351642d39a10497f992",
                    "timeStamp" : "03882a4ce45308c35874272e3b57511d",
                    "nonceStr" : "7b41e26f1ec98d9091c9d3f4ffb4253e",
                },function(res){ 
                    alert(JSON.stringify(res));  
                    document.form1.address1.value         = res.proviceFirstStageName;
                    document.form1.address2.value         = res.addressCitySecondStageName;
                    document.form1.address3.value         = res.addressCountiesThirdStageName;
                    document.form1.detail.value           = res.addressDetailInfo;
                    document.form1.national.value         = res.nationalCode;
                    document.form1.user.value            = res.userName;
                    document.form1.phone.value            = res.telNumber;
                    document.form1.postcode.value         = res.addressPostalCode;
                    document.form1.errmsg.value         = res.err_msg;
                });
            }
        2cacc6d41bbb37262a98f745aa00fbf0
    9c3bca370b5104690d9ef395f2c5f8d1
    6c04bd5ca3fcae76e30b72ad730ca86d
        6d9483dab1de84c6f6bdd44f695e3158
            c684e25378608a0aa02c2e4b83206e6f
                879b49175114808d868f5fe5e24c4e0b5de06d44a19d3566e996d5b6826f61ad256dedeae30dbd1452c2575fb192a8234b4a09fdb935961d48b7bd6517f5757f
                f70d0ebff76a19226909a4a79919b5e8b4d429308760b6c2d20d6300079ed38e结果01c3ce868d2b3d9bce8da5c1b7e41e5bb4d429308760b6c2d20d6300079ed38e0e0f2ed3d0c19f42385c923e27fc6c9701c3ce868d2b3d9bce8da5c1b7e41e5b
                f70d0ebff76a19226909a4a79919b5e8b4d429308760b6c2d20d6300079ed38e国家码01c3ce868d2b3d9bce8da5c1b7e41e5bb4d429308760b6c2d20d6300079ed38e8792275d6589524c351b58a284fab79301c3ce868d2b3d9bce8da5c1b7e41e5b
                f70d0ebff76a19226909a4a79919b5e8b4d429308760b6c2d20d6300079ed38e国家01c3ce868d2b3d9bce8da5c1b7e41e5bb4d429308760b6c2d20d6300079ed38ecbb728e5bdd4f595980245b17dd3775e01c3ce868d2b3d9bce8da5c1b7e41e5b
                f70d0ebff76a19226909a4a79919b5e8b4d429308760b6c2d20d6300079ed38e省01c3ce868d2b3d9bce8da5c1b7e41e5bb4d429308760b6c2d20d6300079ed38e33910a441ee46ebda4a7c3f5cbe59f6301c3ce868d2b3d9bce8da5c1b7e41e5b
                a34de1251f0d9fe1e645927f19a896e8b4d429308760b6c2d20d6300079ed38e市01c3ce868d2b3d9bce8da5c1b7e41e5bb4d429308760b6c2d20d6300079ed38e4c751d017c1077dfbc998d326a6cc75801c3ce868d2b3d9bce8da5c1b7e41e5b
                f70d0ebff76a19226909a4a79919b5e8b4d429308760b6c2d20d6300079ed38e详细01c3ce868d2b3d9bce8da5c1b7e41e5bb4d429308760b6c2d20d6300079ed38e43f17b3bca69dd70c6c6331a09dad3ab01c3ce868d2b3d9bce8da5c1b7e41e5b
                f70d0ebff76a19226909a4a79919b5e8b4d429308760b6c2d20d6300079ed38e收货人01c3ce868d2b3d9bce8da5c1b7e41e5bb4d429308760b6c2d20d6300079ed38e3a8fb09ff3825288ec29e7aa04c405b901c3ce868d2b3d9bce8da5c1b7e41e5b
                f70d0ebff76a19226909a4a79919b5e8b4d429308760b6c2d20d6300079ed38e电话01c3ce868d2b3d9bce8da5c1b7e41e5bb4d429308760b6c2d20d6300079ed38ea07580e7f67acefbd8d7a09498dbedee01c3ce868d2b3d9bce8da5c1b7e41e5b
                f70d0ebff76a19226909a4a79919b5e8b4d429308760b6c2d20d6300079ed38e邮编01c3ce868d2b3d9bce8da5c1b7e41e5bb4d429308760b6c2d20d6300079ed38eb5ec44fb979e70a3b1ecf0b7c9d4d23501c3ce868d2b3d9bce8da5c1b7e41e5b
            f16b1740fad44fb09bfe928bcc527e08
        f5a47148e367a6035fd7a2faa965022e
        dc6dce4a544fdca2df29d5ac0ea9906b
            44e8bc14140e4029c4c8663c9eed246f获取收货地址65281c5ac262bf6d81768915a4a77ac0
        16b28748ea4df4d9c2150843fecfba68

    36cc49f0c466276486e50c850b7e4956
73a6ac4ed44ffec12cee46588e518a5e

 更多微信支付开发收货地址共享接口 相关文章请关注PHP中文网!

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