baltpeter / internetmarke-php
Deutsche Post Internetmarke网络服务的简单PHP包装器
Requires
- myclabs/deep-copy: ^1.8
README
Simple PHP wrapper for the 1C4A (“OneClickForApplikation”) web service for the Internetmarke provided by Deutsche Post (DPAG).
此项目的主要目的是能够直接从您的应用程序中订购德国邮政邮票。支付通过Portokasse(德国邮政的预付费钱包服务)进行。
德国邮政的Web服务是一个定制的SOAP API(WSDL在此处:https://internetmarke.deutschepost.de/OneClickForAppV3?wsdl)。该项目旨在抽象SOAP特性并提供PHP API,同时仍遵循DPAG定义的结构。请注意,这只是一个非常薄的SOAP API包装器,用户仍然需要遵循DPAG的规范。
要求
要访问网络服务,您需要作为合作伙伴在DPAG注册。这可以通过他们的网站(仅限德语)或通过联系pcf-1click@deutschepost.de来完成。他们要求您填写以下表格。所以请记住先填写它。(仅限德语)。
他们将会发送网络服务的文档并为您创建个人凭据(包括:您的合作伙伴ID、一个称为SCHLUESSEL_DPWN_MARKTPLATZ的秘密密钥,以及通常为1的密钥阶段)。
此外,您还需要在Portokasse服务中有一个账户。这是一个预付费钱包,您的购买总额将从该钱包中扣除。
注册后,您可以使用用户名(电子邮件地址)和密码访问服务。
安装
该软件包通过Composer提供。要从Packagist安装最新版本,请运行
composer require baltpeter/internetmarke-php
基本用法
所有由网络服务提供的操作都在baltpeter\Internetmarke\Service
类中实现。
此示例展示了如何订购一封国内信件的单枚邮票。其他操作和参数使用phpDoc进行文档说明。更多示例请参阅wiki。
// The `PartnerInformation` object is used to authenticate you as a partner with DPAG. $partner_info = new \baltpeter\Internetmarke\PartnerInformation('ABCDE', 1, 'yoursecretkey'); // The `Service` object provides an interface for all actions in the web service. $service = new \baltpeter\Internetmarke\Service($partner_info); // First, we need to get a token for our Portokasse user. $user_token = $service->authenticateUser('portokasse@yourmailserver.tld', 'yourpassword')->getUserToken(); // Next, we create an `OrderItem` which holds the details of the stamp we want to purchase. $order_item = new \baltpeter\Internetmarke\OrderItem(1, null, null, new \baltpeter\Internetmarke\Position(1, 1, 1), 'FrankingZone'); // Finally, we call `checkoutShoppingCartPdf()` which creates the order and actually // deducts the money from your Portokasse. // The last parameter in this example is the total cost in eurocents, which you have to calculate // manually. This value *has* to be correct, it is checked on the server side. var_dump($service->checkoutShoppingCartPdf($user_token, 1, array($order_item), 80));
运行此代码将打印出类似以下的结果
object(stdClass)#10 (3) { ["link"]=> string(111) "https://internetmarke.deutschepost.de/PcfExtensionWeb/document?keyphase=0&data=abcdefghijklmopqrstuvwxyz" ["walletBallance"]=> int(236725) ["shoppingCart"]=> object(stdClass)#11 (2) { ["shopOrderId"]=> string(9) "12345678" ["voucherList"]=> object(stdClass)#12 (1) { ["voucher"]=> array(1) { [0]=> object(stdClass)#13 (1) { ["voucherId"]=> string(20) "A0011E78E1000001234A" } } } } }
请注意,我们将$order_item
包装在一个数组中。如果您想订购多枚邮票,只需在该数组中包含更多的OrderItem
即可。
链接的PDF中的邮票看起来可能是这样的
请再次参阅wiki以获取更多示例。
许可证
internetmarke-php遵循MIT许可证,有关详细信息请参阅LICENSE
文件。欢迎拉取请求!