本文目录一览:
- 基于Spring的Fabric区块链Gateway,简化区块链开发
- fabric-sdk-go的简单使用
- paypal merchant-sdk-php怎么用
- PHPSDK是什么?怎么解释这个英文?
- Docker PHP 入门实践(三)
- phpsdk怎么开始开发
基于Spring的Fabric区块链Gateway,简化区块链开发
学习Hyperledger Fabric有一阵子了,从网络搭建、SDK调用到基于Spring的Gateway的开发,一路走来,感觉还是有不少的坑。最近,终于有空,将这些东西整理出来,希望能帮到同路的小伙伴们。详细文档地址: 。 前一阵子,曾整理过一篇文章,详细的介绍了Fabirc网络的搭建和部署,小伙伴们请自行查阅:推荐几个开源项目,教你快速搭建Hyperledger Fabric区块链网络
- Java SDK: GitHub - hyperledger/fabric-sdk-java
- Gateway: GitHub - hyperledger/fabric-gateway-java 这是我基于官方的Gateway项目,结合Spring MVC做出的一套框架。主要是将Chaincode的函数调用,包装成了Spring的服务。
- 项目地址: GitHub - ecsoya/spring-fabric-gateway
- 详细文档:
- Maven地址: 一个精简版的Fabric区块链浏览器。
- 项目地址: GitHub - ecsoya/spring-fabric-gateway
- 详细文档:
- Maven地址: 以上的项目,包含官方的SDK和Gateway,都离不开 Fabric 网络配置文件的支持。 所谓的配置文件,就是将所有的组织、Peer和其相关的证书,全部配置到一个JSON文件或YAML文件中,方便在项目中读取。 详细文档:
- 文档:
- 源码: 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
- 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覆盖
*/
public static DEFAULT_CURL_OPTS = array(
CURLOPT_SSLVERSION = 1,
CURLOPT_CONNECTTIMEOUT = 10,
CURLOPT_RETURNTRANSFER = 真正的,
CURLOPT_TIMEOUT = 60, //最大允许旋度函数执行的秒数
CURLOPT_USERAGENT = "PayPal-PHP-SDK",
CURLOPT_HTTPHEADER = array(),
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 | php
OR
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常数存在指向这个文件的目录。
- 实例化一个服务包装器对象和一个请求对象根据您的项目的需要。
- 服务对象上调用适当的方法。 例如,
//设置配置文件路径(如果使用配置文件)和注册类加载器
require("PPBootStrap.php");
//数组包含凭证和confiuration参数。 (如果使用配置文件不是必需的)
$config = array(
"模式" = "沙盒",
"acct1.UserName" = "jb-us-seller_api1.paypal.com",
"acct1.Password" = "WX4WTU3S8MY44S7F"
//...
);
//创建请求的详细信息
$itemAmount = new BasicAmountType($currencyId, $amount);
$setECReqType = new SetExpressCheckoutRequestType();
$setECReqType->SetExpressCheckoutRequestDetails = $setECReqDetails;
//创建请求
$setECReq = new SetExpressCheckoutReq();
$setECReq->SetExpressCheckoutRequest = $setECReqType;
//...
//执行请求
$paypalService = new PayPalAPIInterfaceServiceService($config);
$setECResponse = $paypalService->SetExpressCheckout($setECReq);
//检查结果
if(strtoupper($setECResponse->Ack) == "成功") {
//成功
}
身份验证
SDK提供了多种方法来验证你的API调用。
$paypalService = new PayPalAPIInterfaceServiceService($config);
//使用默认的帐户(第一个帐户)sdk_config.ini中配置
$response = $paypalService->SetExpressCheckout($setECReq);
//使用一个特定的帐户在sdk_config.ini配置
$response = $paypalService->SetExpressCheckout($setECReq, "jb-us-seller_api1.paypal.com");
//传入一个动态创建对象API凭证
$cred = new PPCertificateCredential("用户名", "密码", "path-to-pem-file");
$cred->setThirdPartyAuthorization(new PPTokenAuthorization("accessToken", "tokenSecret"));
$response = $paypalService->SetExpressCheckout($setECReq, $cred);
SDK配置
SDK允许您配置以下参数
- 集成模式(沙盒/生活)
- (多个)API帐户凭据
- HTTP连接参数
- 日志记录 动态配置值可以通过凭证的地图设置和配置值(如果配置地图是通过配置文件被忽略)
$config = array(
"模式" = "沙盒",
"acct1.UserName" = "jb-us-seller_api1.paypal.com",
"acct1.Password" = "WX4WTU3S8MY44S7F"
//...
);
$service = new PayPalAPIInterfaceServiceService($config);
或者,您可以配置通过sdk_config SDK。 ini文件。
define("PP_CONFIG_PATH", "//包含/sdk_config.ini/目录");
$service = new 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,我们甚至不需要在主机上安装它。 首先打开你的终端,创建一个项目目录。
mkdir weather-app
cd weather-app
现在使用[官方Composer Docker镜像]()安装 ThinkPHP 。
docker run --rm -v $(pwd):/app composer create-project topthink/think
如果你查看weather-app/目录,你会看到 ThinkPHP 6 的项目目录,如下所示: 我们的 docker 运行命令与第二章中的命令相似,但我们使用了不同的镜像。我们没有使用运行hello.php 脚本的 PHP 镜像,而是使用了一个 Composer 镜像。让我们来看看有什么变化。 项目创建完成后,我们需要添加几个路由 URL 和 Controller 文件 。让我们打开 weather-app 目录下的 app/controller , 然后新建 Weather.php 文件,内容如下:
<?php
namespace app\controller;
use think\facade\View;
class Weather
{
public function index()
{
return 'Hello, Weather!';
}
}
然后打开 weather-app 目录下的 app/route , 在 app.php 文件中追加如下内容:
use think\facade\Route;
Route::get('weather', 'Weather/index');
现在我们可以在 Docker 容器中运行我们的应用程序,只是为了验证我们的程序是否运行正常,因为我们只添加了两个路由 URL。打开命令行,运行。
docker run -d -p 8000:80 --name weather-app -v $(pwd)/weather-app:/var/www/html php:7.4-apache
现在,在浏览器中打开 http://localhost:8000/weather,你应该看到一个空页面,上面有以下文字:
Hello, Weather!
那么恭喜你,你刚刚已经成功地在 Docker 中运行了你的第一个 ThinkPHP 应用程序。 这次我们使用的docker run命令与我们用来运行 hello.php 脚本 和composer create-project ...的两个命令不同。原因是这次我们想获得包含 Apache 的最新版本的PHP,这样我们就可以为我们的 Web 应用提供服务。让我们更详细地了解新增的命令部分。 你可以通过向终端发送一个 "中断 "信号来停止和退出终端。在 windows 上,这可以通过按 Ctrl 和按c来实现。 运行你的新网络应用程序的另一个选择是在 "Detached"模式中运行容器。这意味着你在终端将不会看到来自你的容器的输出。这可以通过在我们之前的命令中添加-d标志来实现。
docker run -d -p 8000:80 --name weather-app -v $(pwd)/weather-app:/var/www/html php:7.4-apache
在分离模式下启动容器后,你的终端将显示新容器的完整ID--类似于a70d25c2a7cedae673f8ab...如果你想停止这个容器,你可以使用docker stop命令,用容器的ID告诉Docker。比如说
docker stop a70d25c2a7ce
因为输入整个ID是很麻烦的,如果你愿意,Docker允许你只输入前三个或更多的字符。 最后,我建议为你的容器命名。我们在本书后面的许多例子中都会这样做,因为用名字来记住一个容器比用随机分配的ID要容易得多,再加上ID是随机的,所以每次你运行一个新版本的容器时,它都会得到一个新的ID。只要不是已经有一个同名的容器,名字就可以多次发出来。为了给我们的新应用容器命名,我们可以用传入的--name标志重新创建它。
docker run -d -p 8000:80 --name weather-app -v $(pwd)/weather-app:/var/www/html php:7.4-apache
在使用docker run命令时,还有许多可用的选项,所以你可能想更详细地阅读文档。在我们开发其余的应用程序时,我们会涉及其中的一些选项。 现在我们要引入高德的天气 SDK ,在使用该 SDK 之前你需要阅读高德开放平台-天气查询的技术文档,再添加 SDK 之前我们首先要确保所有现有的容器都停止了。
docker ps
这个命令将列出所有正在运行的容器。你也可以通过添加-a标志来查看停止的容器。 如果有任何容器正在运行,那么在我们继续前进之前,使用docker stop 来停止它们。
docker stop weather-app
该命令将在你的项目中装新的软件包。在这个过程中,你应该在终端看到一些类似这样的输出。
docker exec -it weather-app composer require amap/weather-sdk
现在 SDK 已经安装完毕,可以使用了。 我们将使用刚刚添加的高德天气 SDK 来完善我们的业务逻辑,打开 controller 目录下的 Weather.php 添加以下内容:
<?php
namespace app\controller;
use think\facade\View;
use Amap\Weather\Weather;
class Weather
{
public function index()
{
$weather = new Weather('your_api_key');
$data = $weather->getLiveWeather('310000');
return json($data);
}
}
我们做了一些更新--主要是对引入天气 API 初始化天气类 我们的应用程序已经初步完成了向API传递一个真实的位置ID并返回一些数据。首先,使用这个高德位置查询找到一个位置ID。我使用的是上海的ID进行测试。310000,当然你直接传 上海 也是可以的。ok,让我们再次运行Docker容器。
docker run -d -p 8000:80 --name weather-app -v $(pwd)/weather-app:/var/www/html php:7.4-apache
并在你的浏览器中访问正在运行的应用程序,地址是http://localhost:8000/weather。你应该可以看到一个JSON数据,看起来像这样。
{
"lives": [
{
"province": "上海",
"city": "上海",
"adcode": "310000",
"weather": "晴",
"temperature": "25",
"winddirection": "东南风",
"windpower": "≤3",
"humidity": "65",
"reporttime": "2022-11-24 14:00:00"
}
]
}
你的 Docker 化的 PHP 应用程序现在正从外部数据源返回真实数据,并在Apache中提供服务,但你可能会注意到,它的速度并不快(我的页面加载时间为1.92秒!)。 高德天气 API 是一个免费的服务,其他国家可能无法访问。为了解决这个问题,我们将把查询的数据保存在我们自己的 MySQL 数据库中,可以再下次访问的时候可以快速地响应。这将极大地提高性能,下个章节我们将学习如何用 Docker 将 MySql 与 PHP 应用程序相结合。
phpsdk怎么开始开发
你的问题有两种理解:
- 你有自己的网站,想开发一个php的sdk,然后开放出去给别人调用。
- 你已经下载了别人的sdk,然后想基于该sdk开发自己的应用。 第一种情况,无非是写一些开放接口,让别人可以对你网站进行有限的读写操作。 第二种情况很常见。最常见的就是我们下载微博的sdk,然后开发自己的应用。如果是这样,你可以多参考sdk的wiki页面,上面一般都有实例代码。