談?wù)刾hp對(duì)接芝麻信用踩的坑
由于項(xiàng)目需要,接入芝麻信用對(duì)用戶進(jìn)行認(rèn)證,打開(kāi)芝麻信用官方網(wǎng)站( https://b.zmxy.com.cn/index.htm)查看官方demo,在文檔中看到如圖

瞬間覺(jué)得這個(gè)官方demo的垃圾了。
在其中有需要注意如下:
1.本地生成密鑰,可以按照提示進(jìn)行生成
2.在“商家管理”中創(chuàng)建應(yīng)用,通過(guò)第一步生成的密鑰得到芝麻信用給的公鑰,這就得到了加密用的密鑰
注意:芝麻信用給的公鑰只能復(fù)制,但是復(fù)制出來(lái)的格式是不對(duì)的,需要咱們手工處理每行64,和咱們生成的密鑰格式一致,不然加密和解密將不能進(jìn)行;
3.需要傳遞的參數(shù)根據(jù)文檔可以得出,上圖只是生成了一個(gè)參數(shù),需要處理生成對(duì)應(yīng)文檔的數(shù)據(jù)返回;
直接上代碼:
<?php
include('/ZmopClientphp');
include('/ZhimaAuthInfoAuthorizeRequestphp');
class TestAuthFreeze {
//芝麻信用網(wǎng)關(guān)地址
public $gatewayUrl = "https://zmopenapizmxycomcn/openapido";
//商戶公鑰文件
//芝麻公鑰文件
public $privateKeyFile = "path/rsa_private_keypem";
public $zmPublicKeyFile = "path/zima_public_keypem";
//數(shù)據(jù)編碼格式
public $charset = "UTF-8";
//芝麻分配給商戶的appId
public $appId = "1000003";
//生成移動(dòng)端SDK 集成需要的sign 參數(shù) ,并進(jìn)行urlEncode
public function generateSign($certNo,$name,$certType='IDENTITY_CARD'){
$client = new ZmopClient($this->gatewayUrl, $this->appId, $this->charset, $this->privateKeyFile,$this->zmPublicKeyFile);
$request = new ZhimaAuthInfoAuthorizeRequest();
$request->setScene("test");
// 授權(quán)來(lái)源渠道設(shè)置為appsdk
$request->setChannel("appsdk");
// 授權(quán)類型設(shè)置為2標(biāo)識(shí)為證件號(hào)授權(quán)見(jiàn)“章節(jié)4中的業(yè)務(wù)入?yún)⒄f(shuō)明identity_type”
$request->setIdentityType("2");
// 構(gòu)造授權(quán)業(yè)務(wù)入?yún)⒆C件號(hào),姓名,證件類型;“章節(jié)4中的業(yè)務(wù)入?yún)⒄f(shuō)明identity_param”
$request->setIdentityParam("{\"certNo\":\"$certNo\",\"certType\":\"IDENTITY_CARD\", \"name\":\"$name\"}");
// 構(gòu)造業(yè)務(wù)入?yún)U(kuò)展參數(shù)“章節(jié)4中的業(yè)務(wù)入?yún)⒄f(shuō)明biz_params”
$request->setBizParams("{\"auth_code\":\"M_APPSDK\"}");
$params = $client->generateEncryptedParamWithUrlEncode($request);
$sign = $client->generateSignWithUrlEncode($request);
$data['gatewayUrl'] = $this->gatewayUrl;
$data['appId'] = $this->appId;
$data['charset'] = $this->charset;
$data['params']=$params;
$data['sign'] = $sign;
return $data;
}
// 解密
public function zhimacallback($params){
$this->privateKeyFile= "path/rsa_private_keypem";
$client = new ZmopClient($this->gatewayUrl, $this->appId, $this->charset, $this->privateKeyFile,$this->zmPublicKeyFile);
$result=$client->generateSignCallBack($params,$this->privateKeyFile);
return $result;
}
}
?>
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Laravel 隊(duì)列使用的實(shí)現(xiàn)
這篇文章主要介紹了Laravel 隊(duì)列使用的實(shí)現(xiàn),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-01-01
Yii2學(xué)習(xí)筆記之漢化yii設(shè)置表單的描述(屬性標(biāo)簽attributeLabels)
這篇文章主要介紹了Yii2學(xué)習(xí)筆記之漢化yii設(shè)置表單的描述(屬性標(biāo)簽attributeLabels),非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-02-02
Laravel框架執(zhí)行原生SQL語(yǔ)句及使用paginate分頁(yè)的方法
這篇文章主要介紹了Laravel框架執(zhí)行原生SQL語(yǔ)句及使用paginate分頁(yè)的方法,以類函數(shù)的形式給出了Laravel框架執(zhí)行原生SQL語(yǔ)句以及paginate分頁(yè)的相關(guān)操作技巧,需要的朋友可以參考下2018-08-08
PHP 獲取 ping 時(shí)間的實(shí)現(xiàn)方法
這篇文章主要介紹了PHP 獲取 ping 時(shí)間的實(shí)現(xiàn)方法的相關(guān)資料,希望通過(guò)本文能幫助到大家,讓大家實(shí)現(xiàn)這樣的功能,需要的朋友可以參考下2017-09-09
Zend Framework生成驗(yàn)證碼并實(shí)現(xiàn)驗(yàn)證碼驗(yàn)證功能(附demo源碼下載)
這篇文章主要介紹了Zend Framework生成驗(yàn)證碼并實(shí)現(xiàn)驗(yàn)證碼驗(yàn)證功能,較為詳細(xì)的分析講述了Zend Framework實(shí)現(xiàn)操作驗(yàn)證碼操作的具體步驟與相關(guān)技巧,并附帶demo源碼供讀者下載參考,需要的朋友可以參考下2016-03-03

