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

瞬間覺得這個(gè)官方demo的垃圾了。
在其中有需要注意如下:
1.本地生成密鑰,可以按照提示進(jìn)行生成
2.在“商家管理”中創(chuàng)建應(yīng)用,通過第一步生成的密鑰得到芝麻信用給的公鑰,這就得到了加密用的密鑰
注意:芝麻信用給的公鑰只能復(fù)制,但是復(fù)制出來的格式是不對(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)來源渠道設(shè)置為appsdk
$request->setChannel("appsdk");
// 授權(quán)類型設(shè)置為2標(biāo)識(shí)為證件號(hào)授權(quán)見“章節(jié)4中的業(yè)務(wù)入?yún)⒄f明identity_type”
$request->setIdentityType("2");
// 構(gòu)造授權(quán)業(yè)務(wù)入?yún)⒆C件號(hào),姓名,證件類型;“章節(jié)4中的業(yè)務(wù)入?yún)⒄f明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明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中unique和exists驗(yàn)證規(guī)則的優(yōu)化詳解
這篇文章主要給大家介紹了關(guān)于Laravel中unique和exists驗(yàn)證規(guī)則的優(yōu)化的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2018-01-01
ThinkPHP5&5.1框架關(guān)聯(lián)模型分頁(yè)操作示例
這篇文章主要介紹了ThinkPHP5&5.1框架關(guān)聯(lián)模型分頁(yè)操作,結(jié)合實(shí)例形式分析了thinkPHP5、5.1關(guān)聯(lián)模型的建立、控制器、模型的實(shí)現(xiàn)及分頁(yè)操作相關(guān)技巧,需要的朋友可以參考下2019-08-08
joomla實(shí)現(xiàn)注冊(cè)用戶添加新字段的方法
這篇文章主要介紹了joomla實(shí)現(xiàn)注冊(cè)用戶添加新字段的方法,實(shí)例分析了Joomla注冊(cè)用戶添加新字段的步驟與相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2016-05-05
Laravel?Eloquent的九個(gè)實(shí)用特性詳解
這篇文章主要為大家介紹了LaravelEloquent的九個(gè)實(shí)用特性詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-06-06
Laravel框架運(yùn)行出錯(cuò)提示RuntimeException No application encryption ke
這篇文章主要介紹了Laravel框架運(yùn)行出錯(cuò)提示RuntimeException No application encryption key has been specified.解決方法,涉及Laravel框架相關(guān)配置、設(shè)置與運(yùn)行操作技巧,需要的朋友可以參考下2019-04-04
PHP驗(yàn)證終端類型是否為手機(jī)的簡(jiǎn)單實(shí)例
下面小編就為大家?guī)硪黄狿HP驗(yàn)證終端類型是否為手機(jī)的簡(jiǎn)單實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-02-02
thinkPHP框架中l(wèi)ayer.js的封裝與使用方法示例
這篇文章主要介紹了thinkPHP框架中l(wèi)ayer.js的封裝與使用方法,結(jié)合實(shí)例形式分析了thinkPHP中調(diào)用layer.js的具體操作技巧與注意事項(xiàng),需要的朋友可以參考下2019-01-01

