本文目錄一覽:
- 1、基於Spring的Fabric區塊鏈Gateway,簡化區塊鏈開發
- 2、fabric-sdk-go的簡單使用
- 3、paypal merchant-sdk-php怎麼用
- 4、PHPSDK是什麼?怎麼解釋這個英文?
- 5、Docker PHP 入門實踐(三)
- 6、phpsdk怎麼開始開發
基於Spring的Fabric區塊鏈Gateway,簡化區塊鏈開發
學習Hyperledger Fabric有一陣子了,從網路搭建、SDK調用到基於Spring的Gateway的開發,一路走來,感覺還是有不少的坑。最近,終於有空,將這些東西整理出來,希望能幫到同路的小夥伴們。詳細文檔地址: 。
前一陣子,曾整理過一篇文章,詳細的介紹了Fabirc網路的搭建和部署,小夥伴們請自行查閱:推薦幾個開源項目,教你快速搭建Hyperledger Fabric區塊鏈網路
1. Java SDK: GitHub – hyperledger/fabric-sdk-java
2. Gateway: GitHub – hyperledger/fabric-gateway-java
這是我基於官方的Gateway項目,結合Spring MVC做出的一套框架。主要是將Chaincode的函數調用,包裝成了Spring的服務。
1. 項目地址: GitHub – ecsoya/spring-fabric-gateway
2. 詳細文檔:
3. Maven地址:
一個精簡版的Fabric區塊鏈瀏覽器。
1. 項目地址: GitHub – ecsoya/spring-fabric-gateway
2. 詳細文檔:
3. Maven地址:
以上的項目,包含官方的SDK和Gateway,都離不開 Fabric 網路配置文件的支持。
所謂的配置文件,就是將所有的組織、Peer和其相關的證書,全部配置到一個JSON文件或YAML文件中,方便在項目中讀取。
詳細文檔:
1. 文檔:
2. 源碼: GitHub – ecsoya/fabric-demo
fabric-sdk-go的簡單使用
使用fabric提供的cryptogen工具生成文件模板
$ cryptogen showtemplate crypto-config.yaml
進行修改,添加一個組織,一個orderer節點.
根據crypto-config.yaml文件生成證書文件:
$ cryptogen generate –config=crypto-config.yaml
查看生成的證書文件夾結構:
需要從fabric的源碼案例中拷貝configtx.yaml文件
$ cp $GOPATH/src/github.com/hyperledger/fabric-samples/first-network/configtx.yaml ./
對configtx.yaml文件進行修改.
修改之前,創建一個文件夾,來保存即將創建的創世區塊文件
將創建區塊文件和通道的命令寫到一個腳本中! generate.sh
腳本文件和配置文件的目錄結構:
執行generate.sh文件生成創世區塊文件和通道,其實只有一個組織,也沒必要生成錨節點更新文件..
$ ./generate.sh
配置docker-compose文件:
啟動容器, 啟動後查看容器運行情況
$ docker-compose up -d
$ docker-compose ps
在這裡,創建兩個腳本文件,用於docker容器的管理
clear_docker.sh 文件:
restart.sh 文件:
創建配置文件的時候,有兩個文件可以進行參考…
修改後的sdk配置文件:
創建出一個模型對象,給其賦值,並開始初始化sdk
使用 pkg/fabsdk/fabsdk.go中的New()方法進行實例化
創建請求之前,需要使用 gopackager.NewCCPackage 方法生成一個resource.CCPackage 對象,傳遞兩個參數,一個是鏈碼的路徑(相對於工程的路徑), 一個是GOPATH的路徑.
安裝鏈碼,使用pkg/client/resmgmt/resmgmt.go文件中的方法
創建請求之前,需要生成一個*cb.SignaturePolicyEnvelope類型的對象,使用 third_party/github.com/hyperledger/fabric/common/cauthdsl/cauthdsl_builder.go 文件中的方法即可,提供了好幾個方法, 使用任意一個即可.這裡使用 SignedByAnyMember 方法: 需要傳入所屬組織ID
實例化鏈碼
使用 pkg/client/channel/chclient.go 中的 Execute() 方法,來進行數據寫入的操作:
rsp, err := model.Channelclient.Execute(req)
寫入之前,要創建請求:
tempArgs是要傳給鏈碼的參數,可以做下封裝,就不受參數個數的限制了
使用 pkg/client/channel/chclient.go 中的 Query() 方法,來進行數據查詢的操作: 查詢之前,同樣需要創建請求.
鏈碼在工程中的路徑應該是 工程名/chaincode文件夾
比如:
driverFabricDemo/chaincode
而不應該省略掉工程名這樣寫: chaincode
錯誤原因:cert.URIs 和 tpl.URIs 這兩個欄位沒有被定義.
進入tpl對象中, /usr/local/go/src/crypto/x509/x509.go 是個結構體,並沒有發現 URIs 欄位
對go版本進行升級,從1.9.3升級到1.11.3, 再次進入 /usr/local/go/src/crypto/x509/x509.go 文件中,查看結構體內容:
在執行sdk的Excute()方法時報錯.
方法不存在,一般是由於鏈碼的Invoke方法中的方法名和Excute()方法傳入的方法名不一樣.
但是可以肯定的是,鏈碼的Invoke方法中的方法名和,項目中執行Excute()方法時傳入的方法名是完全一樣的! 但是很奇怪了,為什麼會出現這個錯誤呢? 使用 docker rmi 刪除掉 dev-peerx.travle.xq.com 的鏡像,再重新運行即可.
在創建實例化鏈碼請求的時候
總是提示
Cannot use str (type *cb.SignaturePolicyEnvelope) as type *common.SignaturePolicyEnvelope less… (⌘F1) Inspection info: Reports composite literals with incompatible types and values
明明是相同的類型,卻總是報錯,應該是IDE的問題.把vendor文件夾刪除後,就不會有提示了. 再使用vendor對工程進行init 和 add +external 就好了!!
出現這個錯誤,一般都是配置文件哪個地方寫錯了,需要細心檢查
paypal merchant-sdk-php怎麼用
v3.9.1 2015-12-09 17:55 UTC
需要
php: = 5.3.0
ext-curl:*
貝寶/ sdk-core-php:3。*
需要(dev)
沒有一個
建議
沒有一個
提供了
沒有一個
衝突
沒有一個
替換
沒有一個
輸入b2dd6628177904d9fe118da13df373e59be61b31貝寶
phpsdk貝寶
dev-master
v3.9.1
v3.9.0
v3.8.107
v3.8.106
v3.6.106
v3.5.103
v3.4.102
2. x-dev
v2.11.118
v2.11.117
v2.10.116
v2.9.115
v2.8.114
v2.7.113
v2.6.112
v2.5.106
v2.4.103
v2.3.101
v2.3.100
v2.2.98
自述
商人SDK可以用於整合與表達檢測,質量支付、網路支付支持的api。
TLSv1.2更新
支付卡行業(PCI)委員會授權早期版本的TLS是退出服務。 所有處理信用卡信息的組織都必須符合這個標準。 作為義務的一部分,貝寶正在更新它的服務為所有的HTTPS連接需要TLS 1.2。 這時,貝寶將為所有連接還需要HTTP / 1.1。點擊這裡的更多信息一個新的mode創建測試如果您的伺服器/機器處理TLSv1.2連接。 請使用tls模式,而不是sandbox來驗證。 你可以返回sandbox一旦驗證方式。 請看看這個示例配置。
貴賓犬更新
因為貴賓犬的脆弱性,貝寶SSLv3禁用。
要啟用TLS加密,發生了改變PPHttpConfig.php在SDK的核心使用一個特定於TLS加密密碼列表。
/ * *
*一些捲曲的默認選項
*這些通常由PPConnectionManager覆蓋
* /
公共 靜態 DEFAULT_CURL_OPTS美元 = 數組(
CURLOPT_SSLVERSION = 1,
CURLOPT_CONNECTTIMEOUT = 10,
CURLOPT_RETURNTRANSFER = 真正的,
CURLOPT_TIMEOUT = 60,/ /最大允許旋度函數執行的秒數CURLOPT_USERAGENT = 」PayPal-PHP-SDK」,CURLOPT_HTTPHEADER = 數組(),
CURLOPT_SSL_VERIFYHOST = 2,
CURLOPT_SSL_VERIFYPEER = 1,
CURLOPT_SSL_CIPHER_LIST = 」TLSv1」,
);
有兩個主要的變化做捲髮選項:
CURLOPT_SSLVERSION設置為1。 看到在這裡的更多信息CURLOPT_SSL_CIPHER_LIST TLSv1,看到在這裡的更多信息所有這些變化都包含在最近的版本中,以及其他許多bug修復。 我們強烈鼓勵你更新你的版本,通過使用composer或者運行此命令如下所示:
curl -k -L | phpOR
wget install.php
先決條件
貝寶的PHP商人SDK要求
PHP 5.3及以上
旋度/ openssl PHP擴展
運行示例
運行捆綁樣本,首先將樣本文件夾複製到您的web伺服器根。 然後,您將需要安裝SDK依賴使用作曲家(PHP V5.3 +只)。
運行composer update從樣本文件夾。
使用SDK
使用SDK,
創建一個作曲家。 json文件包含以下內容。
{」的名字」:」我/ shopping-cart-app」,」需要」:{」貝寶/ merchant-sdk-php」:」3.8 . *」}
}
安裝SDK的依賴使用作曲家。
需要PPBootStrap.php在您的應用程序。
選擇您想如何配置SDK——你可以
創建一個hashmap包含配置參數並將其傳遞給服務對象或創建一個sdk_config.ini文件和設置PP_CONFIG_PATH常數存在指向這個文件的目錄。
實例化一個服務包裝器對象和一個請求對象根據您的項目的需要。
服務對象上調用適當的方法。
例如,
/ /設置配置文件路徑(如果使用配置文件)和註冊類載入器需要(」PPBootStrap.php」);
/ /數組包含憑證和confiuration參數。 (如果使用配置文件不是必需的)美元配置 = 數組(
」模式」 = 」沙盒」,
」acct1.UserName」 = 」jb-us-seller_api1.paypal.com」,」acct1.Password」 = 」WX4WTU3S8MY44S7F」
…..
);
/ /創建請求的詳細信息
itemAmount美元 = 新 BasicAmountType(currencyId美元,美元金額);setECReqType美元 = 新 SetExpressCheckoutRequestType();setECReqType美元- SetExpressCheckoutRequestDetails = setECReqDetails美元;/ /創建請求
setECReq美元 = 新 SetExpressCheckoutReq();setECReq美元- SetExpressCheckoutRequest = setECReqType美元;……
/ /執行請求
paypalService美元 = 新 PayPalAPIInterfaceServiceService(美元配置);setECResponse美元 = paypalService美元- SetExpressCheckout(setECReq美元);/ /檢查結果
如果(strtoupper(setECResponse美元- 消)= = 」成功」){/ /成功
}
身份驗證
SDK提供了多種方法來驗證你的API調用。
paypalService美元 = 新 PayPalAPIInterfaceServiceService(美元配置);/ /使用默認的帳戶(第一個帳戶)sdk_config.ini中配置美元的反應 = paypalService美元- SetExpressCheckout(setECReq美元);/ /使用一個特定的帳戶在sdk_config.ini配置美元的反應 = paypalService美元- SetExpressCheckout(setECReq美元,」jb-us-seller_api1.paypal.com」);/ /傳入一個動態創建對象API憑證
美元的信譽 = 新 PPCertificateCredential(」用戶名」,」密碼」,」path-to-pem-file」);美元的信譽- setThirdPartyAuthorization(新 PPTokenAuthorization(」accessToken」,」tokenSecret」));美元的反應 = paypalService美元- SetExpressCheckout(setECReq美元,美元的信譽);SDK配置
SDK允許您配置以下參數
集成模式(沙盒/生活)
(多個)API帳戶憑據。
HTTP連接參數
日誌記錄
動態配置值可以通過憑證的地圖設置和配置值(如果配置地圖是通過配置文件被忽略)美元配置 = 數組(
」模式」 = 」沙盒」,
」acct1.UserName」 = 」jb-us-seller_api1.paypal.com」,」acct1.Password」 = 」WX4WTU3S8MY44S7F」
…..
);
美元服務 = 新 PayPalAPIInterfaceServiceService(美元配置);或者,您可以配置通過sdk_config SDK。 ini文件。
定義(」PP_CONFIG_PATH」,」/ /包含/ sdk_config.ini /目錄」);美元服務 = 新 PayPalAPIInterfaceServiceService();您可以參考配置參數的完整列表維基頁面。
即時付款通知(IPN)
請參閱IPN-README在「樣品/ IPN」目錄中。
PHPSDK是什麼?怎麼解釋這個英文?
你要知道SDK的意思就知道是什麼東西了:
SDK通俗來講就是軟體開發工具包(Software Development Kit);
PHPSDK就是跟php有關的軟體開發工具包,比如現在市面上有很多別人集成好的SDK,你就可以拿來直接使用的;就比如說APP推送,阿里就有集成好的phpSDK,你就可以按照官方文檔進行使用啦,還有很多很多,可以自行百度
Docker PHP 入門實踐(三)
在本教程的其餘部分,我們將基於 ThinkPHP 框架完成一個天氣查詢的應用。使用 天氣查詢-API文檔-開發指南-Web服務 API | 高德地圖API 的介面來實現我們的功能。把查詢數據緩存到 MySql 中,這樣就不用每次頻繁的請求第三方的介面了(有請求次數限制)
選擇高德開放平台-天氣查詢 API 主要是因為它是免費的。當然你也可以使用其他的第三方天氣查詢介面,看個人喜好。
該應用是一個非常簡單的 REST API 應用,主要實現兩個介面。
在我們進行應用編碼之前,首先使用 Docker 安裝並運行 ThinkPHP
ThinkPHP 是一個免費開源的,快速、簡單的面向對象的 輕量級PHP開發框架 ,是為了敏捷WEB應用開發和簡化企業應用開發而誕生的。ThinkPHP從誕生以來一直秉承簡潔實用的設計原則,在保持出色的性能和至簡代碼的同時,更注重易用性。遵循 Apache2 開源許可協議發布,意味著你可以免費使用ThinkPHP,甚至允許把你基於ThinkPHP開發的應用開源或商業產品發布/銷售 。
這就是為什麼我選擇它作為本教程的教學框架。我不想讓你因為一個框架而放棄,但我也不想從頭開始建立所有的東西,因為該教程的重點是Docker,而不是我們的PHP應用。
用Docker 創建 ThinkPHP 應用 實際上比用本地配置PHP環境所需的操作少。並且為我們還需要使用 Composer,多虧了Docker,我們甚至不需要在主機上安裝它。
首先打開你的終端,創建一個項目目錄。
並進入到該目錄中
現在使用[官方Composer Docker鏡像]()安裝 ThinkPHP 。
如果你查看weather-app/目錄,你會看到 ThinkPHP 6 的項目目錄,如下所示:
我們的 docker 運行命令與第二章中的命令相似,但我們使用了不同的鏡像。我們沒有使用運行hello.php 腳本的 PHP 鏡像,而是使用了一個 Composer 鏡像。讓我們來看看有什麼變化。
項目創建完成後,我們需要添加幾個路由 URL 和 Controller 文件 。讓我們打開 weather-app 目錄下的 app/controller , 然後新建 Weather.php 文件,內容如下:
然後打開 weather-app 目錄下的 app/route , 在 app.php 文件中追加如下內容:
現在我們可以在 Docker 容器中運行我們的應用程序,只是為了驗證我們的程序是否運行正常,因為我們只添加了兩個路由 URL。打開命令行,運行。
現在,在瀏覽器中打開 ,你應該看到一個空頁面,上面有以下文字:
那麼恭喜你,你剛剛已經成功地在 Docker 中運行了你的第一個 ThinkPHP 應用程序。
這次我們使用的docker run命令與我們用來運行 hello.php 腳本 和composer create-project …的兩個命令不同。原因是這次我們想獲得包含 Apache 的最新版本的PHP,這樣我們就可以為我們的 Web 應用提供服務。讓我們更詳細地了解新增的命令部分。
你可以通過向終端發送一個 “中斷 “信號來停止和退出終端。在 windows 上,這可以通過按 Ctrl 和按c來實現。
運行你的新網路應用程序的另一個選擇是在 “Detached”模式中運行容器。這意味著你在終端將不會看到來自你的容器的輸出。這可以通過在我們之前的命令中添加-d標誌來實現。
在分離模式下啟動容器後,你的終端將顯示新容器的完整ID–類似於a70d25c2a7cedae673f8ab…如果你想停止這個容器,你可以使用docker stop命令,用容器的ID告訴Docker。比如說
因為輸入整個ID是很麻煩的,如果你願意,Docker允許你只輸入前三個或更多的字元。
最後,我建議為你的容器命名。我們在本書後面的許多例子中都會這樣做,因為用名字來記住一個容器比用隨機分配的ID要容易得多,再加上ID是隨機的,所以每次你運行一個新版本的容器時,它都會得到一個新的ID。只要不是已經有一個同名的容器,名字就可以多次發出來。為了給我們的新應用容器命名,我們可以用傳入的–name標誌重新創建它。
在使用docker run命令時,還有許多可用的選項,所以你可能想更詳細地閱讀文檔。在我們開發其餘的應用程序時,我們會涉及其中的一些選項。
現在我們要引入高德的天氣 SDK ,在使用該 SDK 之前你需要閱讀高德開放平台-天氣查詢的技術文檔,再添加 SDK 之前我們首先要確保所有現有的容器都停止了。
這個命令將列出所有正在運行的容器。你也可以通過添加-a標誌來查看停止的容器。
如果有任何容器正在運行,那麼在我們繼續前進之前,使用docker stop 來停止它們。
該命令將在你的項目中裝新的軟體包。在這個過程中,你應該在終端看到一些類似這樣的輸出。
現在 SDK 已經安裝完畢,可以使用了。
我們將使用剛剛添加的高德天氣 SDK 來完善我們的業務邏輯,打開 controller 目錄下的 Weather.php 添加以下內容:
我們做了一些更新–主要是對引入天氣 API 初始化天氣類
我們的應用程序已經初步完成了向API傳遞一個真實的位置ID並返回一些數據。首先,使用這個高德位置查詢找到一個位置ID。我使用的是上海的ID進行測試。310000,當然你直接傳 上海 也是可以的。ok,讓我們再次運行Docker容器。
並在你的瀏覽器中訪問正在運行的應用程序,地址是。你應該可以看到一個JSON數據,看起來像這樣。
你的 Docker 化的 PHP 應用程序現在正從外部數據源返回真實數據,並在Apache中提供服務,但你可能會注意到,它的速度並不快(我的頁面載入時間為1.92秒!)。
高德天氣 API 是一個免費的服務,其他國家可能無法訪問。為了解決這個問題,我們將把查詢的數據保存在我們自己的 MySQL 資料庫中,可以再下次訪問的時候可以快速地響應。這將極大地提高性能,下個章節我們將學習如何用 Docker 將 MySql 與 PHP 應用程序相結合。
phpsdk怎麼開始開發
你的問題有兩種理解:
1.你有自己的網站,想開發一個php的sdk,然後開放出去給別人調用。
2.你已經下載了別人的sdk,然後想基於該sdk開發自己的應用。
第一種情況,無非是寫一些開放介面,讓別人可以對你網站進行有限的讀寫操作。
第二種情況很常見。最常見的就是我們下載微博的sdk,然後開發自己的應用。如果是這樣,你可以多參考sdk的wiki頁面,上面一般都有實例代碼。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/238475.html