baltpeter/internetmarke-php

Deutsche Post Internetmarke网络服务的简单PHP包装器

v0.5.0 2019-07-31 10:13 UTC

This package is auto-updated.

Last update: 2024-09-13 08:21:37 UTC


README

Simple PHP wrapper for the 1C4A (“OneClickForApplikation”) web service for the Internetmarke provided by Deutsche Post (DPAG).

Ordering a stamp using internetmarke-php

此项目的主要目的是能够直接从您的应用程序中订购德国邮政邮票。支付通过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中的邮票看起来可能是这样的

The generated stamp

请再次参阅wiki以获取更多示例。

许可证

internetmarke-php遵循MIT许可证,有关详细信息请参阅LICENSE文件。欢迎拉取请求!