MTN Open API Challenge 2018–2019:不要让任何事情让您失望!

照片致https://www.pexels.com上的Godisable Jacob

无担保此处的信息按“原样”提供。 没有任何明示或暗示的担保,我在此否认所有隐含的担保,包括对适销性和对特定用途适用性的任何担保。

2018年12月20日,上周四,我碰巧在创新村和MTN乌干达组织的一次聚会上崩溃了。 在我了解到SafeBodaChillies的存在的过程中 ,从客户的角度来看,我发现所有公司都很棒。

随着时间的推移,我逐渐聚集了一些话题,其中包括企业,开发人员和整个本地技术社区之间的一系列问题汇报,以探讨如何利用新发布的MTN Mobile Money Open API。 为此,MTN乌干达与合作伙伴一起组织了一场比赛,他们称之为“ MTN OPEN API挑战赛”。 详细信息可以在这里找到。

Meetup顺利进行到最后,感谢所有参与其中的人,更感谢来自技术领域的开发人员。

当一切都说完了,包括苏打水喝和啤酒缺少聚会后的迷你小吃时,我们就出去了! 对于大多数人来说,任务是从这一挑战中获得最大收益。

整个周末,我决定继续前进,并亲自通过开发人员的眼光看一下该API的外观。 从我所看到的情况来看, 应该没有什么可以拖延您尝试实现集成的速度。 原因如下:

  1. API文档 :似乎很可靠。 我本人也遵循了它,我可以肯定地说它涵盖了要点。 感谢momo开发人员团队。
  2. API客户端示例代码 :仍在文档中,它为您提供了几乎8种不同编程语言的客户端代码示例。 只需检查每个特定API文档的底部,您就会看到。
  3. 尝试功能 :这应该允许您直接在浏览器中测试API,而无需花费任何时间或精力来检查自定义客户端。 我已经在与之共舞的几乎每个API上看到并使用了它。

我要在这里说的是:在一个周末内,有可能在周六参加朋友的婚礼,在周日去教堂,同时使您几乎完全没有挫败感地了解这个API……仍然保留在您老板的好书中。 我接触过的大多数人都很少有这样的API经验,更不用说那些大人物了

在文档中,或者在我看来,这是本文中最有价值的部分,可能并不那么明显。 如果您愿意,我将以提示的形式介绍:

供应API

让我们将所有需要使用的API称为这些API,以满足您在使用姐妹业务API时的授权和身份验证需求。 我们将简短介绍一些对我而言并非自然而然的术语。 这样,我们会将它们与您可能已经熟悉的内容联系起来。

X参考ID

在某个时候,试图获取您的API访问凭据,将要求开发人员提供的第一件事就是沙盒用户配置API中的X-Reference-Id。 用更常规的术语来说,这将充当您的用户名 。 该用户名可以是任何字符,只要它是有效的版本4 UUID字符串即可。 其他任何事情都会引发400 http错误。

确保在指定的地方使用有效的版本4 UUID。 简短的内容只会引发恼人的400 http错误,而不会提供任何信息。 您的编程语言应具有实用程序功能,可以为您生成一种。 大多数都做。 但是,要进行快速测试,您可以使用此 在线工具 来获得一个。

注意:通过配置API,您可以创建多个API用户,每个用户都有一个唯一的X-Reference-Id,并同时使用它们。 这意味着,您可以在沙箱上为不同的测试环境和目的使用不同的API用户。

apiKey

按照常规,这将用作您的密码。 您将需要一个,并且有关如何降落的文件非常清楚。 只需记住,对于每个唯一的设置过程,请始终使用相同的设置X-Reference-Id aka用户名。

注意:您可以使用相同的配置X-Reference-Id多次重新生成API密钥。 如果您的apiKey遭到破坏或丢失,这非常方便。

API访问令牌

最后,您将需要一个访问令牌来启动与业务相关的真实API调用 。 要获得一个,您将需要您的“用户名”和“密码”,也称为X-Reference-Id和apiKey。 文档对此没有任何清晰的说明。

记下您的授权标头。 文档指出:

您的http请求应包含“ 基本身份验证标头,其中包含 API用户ID API密钥 并且应以 B64 编码 发送 。”

对于经验丰富的开发人员来说,这可能是显而易见的。 但是,如果不是,这就是它们的意思。 您的http标头调用应包含以下行:

示例基本身份验证HTTP标头

……并通过:

API用户ID,表示您的预配X-Reference-Id,我在这里将其称为用户名。 API密钥,它们的确切含义是,我在这里称呼您的密码。

B64 ,它们表示base64编码。 您的编程语言很有可能已经具有实用工具类或库供您使用。 但是,为了进行快速测试,您可以使用此在线工具来帮助您获取有效的授权标头。

警告:避免使用您不信任的任何外部工具对生产凭证进行编码。 即使您个人信任该工具,也请参考公司的安全惯例。

获得访问令牌后,您应该就可以开始使用了。 只要确保您的业务服务API http标头调用具有以下内容:

OAuth2 HTTP标头示例

默认货币类型

很有可能在幕后为您创建的默认沙盒财务帐户会将货币类型预设为欧元,符号EUR 。 我多么希望它是UGX ,所以我可以多一些乌干达的感觉。 您的目标环境将默认为sandbox 。 您可以通过查询帐户余额和用户详细信息来验证所有这些信息。 我找不到任何端点来查询所有支持的货币。 有人告诉我,尽管在生产环境中支持UGX的可能性很高,因为该地区的一些企业已经投入使用。

如果在沙盒上进行诸如requesttopay之类的业务API调用,请确保将货币类型发送为EUR 。 受到诱惑并屈服于发送UGX或USH的诱惑将返回以下错误……仅在您所有其他请求参数均有效的情况下。

UGX的货币无效

账户余额

帐户余额响应可能与您的期望不一致。 在某些情况下,我得到的响应类似于下图中的响应。 虽然是沙盒,所以不用担心…🤞

沙箱上的帐户余额为负数

帐户验证(MTN电话号码验证)

在浪费大量时间进行错误的商务呼叫之前,有一个端点可以验证客户电话号码,这很酷。 但是,您可能还不能很快依靠沙箱上的此终结点。

有时我使用诸如mssisdn的accountHolderIdType 垃圾电话和accountHolderId的电话号码01111111进行了验证电话,并得到了如下图所示的响应:

意外的MTN电话号码验证响应

同样,您可能不必担心,这是沙盒,而生产可能是另一回事。

客户借记USSD批准提示

在沙盒上,即使它是有效的MTN MSISDN,也不要期望在您的测试msisdn上收到一个。 但是您的沙箱帐户可能会记入贷方,而查询您的帐户余额可能会保证……或不会。

如果您碰巧走在一条人迹罕至的道路上,则选择人迹罕至的子路径…

MTN Open API刚刚发布,对于我们大多数人来说,这是经过最少的路径,如果没有经过过从未经历过路径 。 但是,此API基于REST标准,对于大多数开发人员,我可以将其称为最常使用子路径 。 拿走这些!

例如,选择使用您已经熟悉的http客户端。 如果没有,则可以选择cURL,postman,httpclient,臭名昭著的spring boot rest模板等。 只针对您认为最简单的测试对象。 我已经在文档中谈到了很棒的try it功能。

现在,开发人员可能会抓住这一天! 不要让技术妨碍您。 改用它来清除您的方式,并集中剩余的精力来激发您的MoMo经营理念。

记住,请利用出色的文档。 如果遇到问题,沙盒门户网站具有支持功能,您可以在其中发布问题。 我还没有使用过它,但是可能已经有momo工程师在等待您的查询了。

如果上述所有努力都失败了,您仍然会陷入困境。 就像真的被卡住了一样,您可以在Twitter @LivePwndz上打我。 我会在何时何地提供帮助。

想象所有仍然失败的情况(最不可能发生的情况),您碰巧徘徊在创新村附近,走进去时,在那全白热狗形状的桌子上,向左看,那里的酷极客可能会提供一些帮助。 就个人而言,只能在工作日下午2点以后免费提供帮助。 不要犹豫

圣诞快乐,2019年代码丰富。