dnetix/masterpass

PHP Masterpass 商户结账服务 SDK,用于与 MasterCard 开发者区域的 PHP 核心SDK配合使用

0.2.4 2022-05-04 14:17 UTC

This package is auto-updated.

Last update: 2024-09-04 19:28:21 UTC


README

使用此代码,您将能够快速连接到 Masterpass 服务。

安装

使用项目中的 composer

composer require dnetix/masterpass

或者,如果您只想运行此项目中的示例,请运行 "composer install" 来加载供应商自动加载

使用方法

开始设置环境变量,这些值可以从 Masterpass 商户门户获取

MasterCardApiConfig::setConsumerKey($consumerKey);
MasterCardApiConfig::setPrivateKey($privateKey);
MasterCardApiConfig::setSandBox(true);

$client = \Dnetix\MasterPass\MasterPassApi();

$consumerKey 它是从 Mastercard 开发者项目的 "项目密钥" 部分复制的字符串

$privateKey 有关此内容的完整段落位于此 README 的末尾

该客户端可用于处理所需的所有服务

这是获取用于在 lightbox 中使用的请求令牌所需的商户初始化示例,这是在后端进行的,可以是 AJAX 调用

$token = $client->requestToken('http://your_callback_url.com');
$shoppingCartRequest = new ShoppingCartRequest([
    'ShoppingCart' => new ShoppingCart([
        'Subtotal' => 10000,
        'CurrencyCode' => 'COP,
        'ShoppingCartItem' => [
            new ShoppingCartItem([
                'ImageURL' => 'https://www.placetopay.com/images/providers/placetopay.full.png',
                'Value' => 10000,
                'Description' => 'Testing product',
                'Quantity' => 1,
            ]),
        ],
    ]),
    'OAuthToken' => $token->token(),
]);
$shoppingCartResponse = $client->shoppingCart($shoppingCartRequest);

$initialization = new MerchantInitializationRequest([
    'OriginUrl' => 'http://your_callback_url.com',
    'OAuthToken' => $token->token(),
]);
$initializationResponse = $client->merchantInitialization($initialization);

$merchantCheckoutId = 'OBTAINED ON THE CLIENT ONBOARDING';
$requestToken = $token->token();

一旦您获取到商户 CheckoutId 和请求令牌,将其传递到您的 lightbox JavaScript 初始化中

MasterPass.client.checkout({
    "requestToken": requestToken,
    "callbackUrl": 'http://your_callback_url.com',
    "failureCallback": console.log,
    "cancelCallback": masterpassCancelFunction,
    "successCallback": masterpassSuccessFunction,
    "merchantCheckoutId": merchantCheckoutId,
    "version": "v6",
    "suppressShippingAddressEnable": true
});

此时,lightbox 将被启动,如果它使用您的 successCallback,则该函数需要将信息发送到后端,可能是另一个 AJAX 调用,或者可以重定向到该回调 URL,因此请妥善处理

$accessTokenResponse = $client->accessToken($_REQUEST['oauth_token'], $_REQUEST['oauth_verifier']);
$checkoutData = $client->retrieveInformation($_REQUEST['checkout_resource_url'], $accessTokenResponse->token());

$creditCardNumber = $checkoutData->getCard()->accountNumber();
// Format 12/20 check the Dnetix\MasterPass\Model\Card to see other accessor
$expiration = $checkoutData->getCard()->expiration();

现在您可以看到用户的信用卡信息,并可以明智地使用它。

获取私钥

当您创建项目时,您会收到一个 p12 文件,或者如果您丢失了它,您可以重新申请,为了从该文件获取私钥,您需要使用 php 获取它,因此只需将命令行置于密钥所在的目录,然后按照命令执行即可

php -a

一旦进入交互模式

$keystore = [];
trim(openssl_pkcs12_read(file_get_contents(__DIR__ . '/NAME_OF_THE_P12_FILE.p12'), $keystore, 'THE_PASSWORD_OF_THE_P12'));
echo base64_encode($keystore['pkey']);

这将输出大量字符,复制所有内容并将其提供给 privateKey 变量解码

$privateKey = base64_decode('THE_TOTAL_CHARACTERS_OBTAINED');