Showing posts with label Credit Card Token. Show all posts
Showing posts with label Credit Card Token. Show all posts

Friday, July 14, 2017

BrainTree: Create Payment Token | Store Credit Card Details | Create Customer | Create Credit Card Token | Create Payment Method

The very step to create an account in BrainTree. And then need to create an user and then application. 

1. Visit https://sandbox.braintreegateway.com
2. Click on "Settings" -> "Users and roles" and then click "New User" to create a new user.



3. Now click "Account" -> "My User" and then "View Authorizations".



4. Now click on "Generate New API Key" to create an API key. Copy "Public Key" and "Private Key".



5. What we need to communicate with BrainTree API in our hand now. Now its time to communicate with BrainTree API.

Below is a screenshot to show how you can collect your Merchant ID:




And below PHP script is full example how to create token in BrainTree portal:


<?php
require_once('CurlExecutor.php');
require_once "BrainTreeUtils.php";
define("MERCHANT_ID", "kxxxxnxxxxxxxx");
define("PUBLIC_KEY", "85dspxxxxxxxxxx");
define("PRIVATE_KEY", "510d5b5b672xxxxxxxxxxxxxxxxxxx");

$array = array(
    "customer" => array(
        'firstName' => htmlentities("Pritom"),
        'lastName' => htmlentities("Kumar"),
        'company' => htmlentities("My Company"),
        'email' => htmlentities("pritomkucse@gmail.com"),
        'phone' => htmlentities("33303030"),

        'creditCard' => array(
            'cardholderName' => htmlentities("Test"),
            'number' => htmlentities("4444333322221111"),
            'expirationMonth' => htmlentities("12"),
            'expirationYear' => htmlentities("18"),
            'cvv' => htmlentities("354"),
            'billingAddress' => array(
                'firstName' => htmlentities("Pritom"),
                'lastName' => htmlentities("Kumar")
            )
        )
    )
);

$test = "https://api.sandbox.braintreegateway.com:443/merchants/" . MERCHANT_ID . "/customers";
$live = "https://api.braintreegateway.com:443/merchants/" . MERCHANT_ID . "/customers";
$headers[] = "Accept: application/xml";
$headers[] = "Content-Type: application/xml";
$headers[] = "X-ApiVersion: 4";
$closure = function(&$curl) {
    curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
    curl_setopt($curl, CURLOPT_USERPWD, PUBLIC_KEY . ':' . PRIVATE_KEY);
};
$result = CurlExecutor::execute(
    $test, "POST", BrainTreeUtils::arrayToXml($array),
    null, $headers, $closure
);
CurlExecutor::prettyPrint(BrainTreeUtils::arrayFromXml($result["response"]));

And successful output of above script is below. From the response below you have to store customer id and token for further use of customer to update, add new payment method, create payment etc...


Array
(
    [customer] => Array
        (
            [id] => 608968099
            [merchantId] => k9yxxxxxxxxxxxx6
            [firstName] => Pritom
            [lastName] => Kumar
            [company] => My Company
            [email] => pritomkucse@gmail.com
            [phone] => 33303030
            [fax] => 
            [website] => 
            [createdAt] => DateTime Object
                (
                    [date] => 2017-07-14 16:44:33.000000
                    [timezone_type] => 3
                    [timezone] => UTC
                )

            [updatedAt] => DateTime Object
                (
                    [date] => 2017-07-14 16:44:33.000000
                    [timezone_type] => 3
                    [timezone] => UTC
                )

            [customFields] => 
            [creditCards] => Array
                (
                    [0] => Array
                        (
                            [billingAddress] => Array
                                (
                                    [id] => vt
                                    [customerId] => 608968099
                                    [firstName] => Pritom
                                    [lastName] => Kumar
                                    [company] => 
                                    [streetAddress] => 
                                    [extendedAddress] => 
                                    [locality] => 
                                    [region] => 
                                    [postalCode] => 
                                    [countryCodeAlpha2] => 
                                    [countryCodeAlpha3] => 
                                    [countryCodeNumeric] => 
                                    [countryName] => 
                                    [createdAt] => DateTime Object
                                        (
                                            [date] => 2017-07-14 16:44:33.000000
                                            [timezone_type] => 3
                                            [timezone] => UTC
                                        )

                                    [updatedAt] => DateTime Object
                                        (
                                            [date] => 2017-07-14 16:44:33.000000
                                            [timezone_type] => 3
                                            [timezone] => UTC
                                        )

                                )

                            [bin] => 444433
                            [cardType] => Visa
                            [cardholderName] => Test
                            [commercial] => Unknown
                            [countryOfIssuance] => Unknown
                            [createdAt] => DateTime Object
                                (
                                    [date] => 2017-07-14 16:44:33.000000
                                    [timezone_type] => 3
                                    [timezone] => UTC
                                )

                            [customerId] => 608968099
                            [customerLocation] => US
                            [debit] => Unknown
                            [default] => 1
                            [durbinRegulated] => Unknown
                            [expirationMonth] => 12
                            [expirationYear] => 2018
                            [expired] => 
                            [healthcare] => Unknown
                            [imageUrl] => https://assets.braintreegateway.com/payment_method_logo/visa.png?environment=sandbox
                            [issuingBank] => Unknown
                            [last4] => 1111
                            [payroll] => Unknown
                            [prepaid] => Unknown
                            [productId] => Unknown
                            [subscriptions] => Array
                                (
                                )

                            [token] => 6m76wy
                            [uniqueNumberIdentifier] => 8a0xxxxxxxxxxxxxxxxxxxxxxf06f
                            [updatedAt] => DateTime Object
                                (
                                    [date] => 2017-07-14 16:44:33.000000
                                    [timezone_type] => 3
                                    [timezone] => UTC
                                )

                            [venmoSdk] => 
                            [verifications] => Array
                                (
                                )

                        )

                )

            [addresses] => Array
                (
                    [0] => Array
                        (
                            [id] => vt
                            [customerId] => 608968099
                            [firstName] => Pritom
                            [lastName] => Kumar
                            [company] => 
                            [streetAddress] => 
                            [extendedAddress] => 
                            [locality] => 
                            [region] => 
                            [postalCode] => 
                            [countryCodeAlpha2] => 
                            [countryCodeAlpha3] => 
                            [countryCodeNumeric] => 
                            [countryName] => 
                            [createdAt] => DateTime Object
                                (
                                    [date] => 2017-07-14 16:44:33.000000
                                    [timezone_type] => 3
                                    [timezone] => UTC
                                )

                            [updatedAt] => DateTime Object
                                (
                                    [date] => 2017-07-14 16:44:33.000000
                                    [timezone_type] => 3
                                    [timezone] => UTC
                                )

                        )

                )

        )

)

And below is screenshot to show that token created on BrainTree end:





Saturday, June 10, 2017

PayWay Rest API: Create Customer Create Token

You can create token in PayWay portal using credit card details to use further that token to create payment.

PayWay Rest API: Check if Rest API credentials are valid

If you are interested more on PayWay Rest API you can visit the below link:

https://www.payway.com.au/docs/rest.html

Below is a PHP script to create token using credit card etails. Be aware that below code snippet used both private and public key in different section.



<?php
include_once "CurlExecutor.php";

define("BASE_URL", "https://api.payway.com.au/rest/v1");
define("MERCHANT_ID", "TEST");
define("PRIVATE_KEY", "T10487_SEC_...");
define("PUBLIC_KEY", "T10487_PUB_...");

createCustomer(getSingleUseToken());

function createCustomer($token) {
    $headers[] = "Authorization: Basic " . base64_encode(PRIVATE_KEY . ":");
    $headers[] = "Content-Type: application/x-www-form-urlencoded";

    $post = array(
        "singleUseTokenId" => $token,
        "merchantId" => MERCHANT_ID,
        "customerName" => "Pritom",
        "emailAddress" => "pritomkucse@gmail.com"
    );

    $result = CurlExecutor::execute(BASE_URL . "/customers", "POST", $post, null, $headers);
    $result["response"] = json_decode($result["response"]);
    CurlExecutor::prettyPrint($result);
}

function getSingleUseToken() {
    $headers[] = "Authorization: Basic " . base64_encode(PUBLIC_KEY . ":");
    $headers[] = "Content-Type: application/x-www-form-urlencoded";

    $post = array(
        "paymentMethod" => "creditCard",
        "cardNumber" => "5163200000000008",
        "cardholderName" => "My Mastercard",
        "cvn" => "070",
        "expiryDateMonth" => "08",
        "expiryDateYear" => "20",
    );

    $result = CurlExecutor::execute(BASE_URL . "/single-use-tokens", "POST", $post, null, $headers);
    $result["response"] = json_decode($result["response"]);
    if ($result["code"] == 200) {
        return $result["response"]->singleUseTokenId;
    }
    CurlExecutor::prettyPrint($result);
    die("Error");
}
?>

Output is below:


Array
(
    [code] => 201
    [response] => stdClass Object
        (
            [customerNumber] => 7
            [paymentSetup] => stdClass Object
                (
                    [paymentMethod] => creditCard
                    [stopped] => 
                    [creditCard] => stdClass Object
                        (
                            [cardNumber] => 516320...008
                            [expiryDateMonth] => 08
                            [expiryDateYear] => 20
                            [cardScheme] => mastercard
                            [cardholderName] => My Mastercard
                            [surchargePercentage] => 0
                        )

                    [merchant] => stdClass Object
                        (
                            [merchantId] => TEST
                            [merchantName] => Test Merchant
                            [links] => Array
                                (
                                    [0] => stdClass Object
                                        (
                                            [rel] => self
                                            [href] => https://api.payway.com.au/rest/v1/merchants/TEST
                                        )

                                )

                        )

                )

            [contact] => stdClass Object
                (
                    [customerName] => Pritom
                    [emailAddress] => pritomkucse@gmail.com
                    [sendEmailReceipts] => 
                    [phoneNumber] => 
                    [address] => stdClass Object
                        (
                            [street1] => 
                            [street2] => 
                            [cityName] => 
                            [state] => 
                            [postalCode] => 
                        )

                )

            [customFields] => stdClass Object
                (
                )

            [links] => Array
                (
                    [0] => stdClass Object
                        (
                            [rel] => self
                            [href] => https://api.payway.com.au/rest/v1/customers/7
                        )

                    [1] => stdClass Object
                        (
                            [rel] => help
                            [href] => https://www.payway.com.au/docs/rest.html#customers
                        )

                    [2] => stdClass Object
                        (
                            [rel] => contact
                            [href] => https://api.payway.com.au/rest/v1/customers/7/contact
                        )

                    [3] => stdClass Object
                        (
                            [rel] => custom-fields
                            [href] => https://api.payway.com.au/rest/v1/customers/7/custom-fields
                        )

                    [4] => stdClass Object
                        (
                            [rel] => payment-setup
                            [href] => https://api.payway.com.au/rest/v1/customers/7/payment-setup
                        )

                    [5] => stdClass Object
                        (
                            [rel] => schedule
                            [href] => https://api.payway.com.au/rest/v1/customers/7/schedule
                        )

                    [6] => stdClass Object
                        (
                            [rel] => virtual-account
                            [href] => https://api.payway.com.au/rest/v1/customers/7/virtual-account
                        )

                    [7] => stdClass Object
                        (
                            [rel] => search-customer-transactions
                            [href] => https://api.payway.com.au/rest/v1/transactions/search-customer?customerNumber=7
                        )

                )

        )

)