dnetix / masterpass
PHP Masterpass 商户结账服务 SDK,用于与 MasterCard 开发者区域的 PHP 核心SDK配合使用
0.2.4
2022-05-04 14:17 UTC
Requires
- php: >=5.4
- guzzlehttp/guzzle: ^7.0
- pear/xml_util: 1.4.3
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.7
- phpunit/phpunit: ^5.4
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');