createProvisioningRequest()
The createProvisioningRequest() method can be used as part of a multiple step integration to push provision a virtual card to a Apple Wallet. An API integration with Apple will be required to be part of a successful use of this API method. Your account manager can assist directing the developer(s) to the required Apple documentation.
Parameters
Parameter Required Data type Pattern Notes
transactionId Yes String

60 characters or less

9845dk-39fdk3fj3-4483483478

A unique system generated ID number that identifies the API transaction with Galileo Processing systems. A UUID is preferred. This must be different for each transaction.
accountNo Yes String

PAN or PRN

074103447228

Can be either a PAN (the 16 digit card number) or PRN (a unique 12 digit account identifier).
cert1 Yes String

DER encoded x.509 certificate string

AbCy76wkRpmWWm2k71H...

The first of two certificates returned by Apple in a push provisioning request.
cert2 No String

DER encoded x.509 certificate string

MIIB1jANBgkghiG9w0...

The second of two certificates returned by Apple in a push provisioning request.
nonce No String

8 character nonce value

9c023092

A nonce value as returned by Apple in a push provisioning request.
nonceSignature Yes String

nonce signature value

4082f883ae62....

A nonce signature value as returned by Apple in a push provisioning request.
Status Codes
Status Code description
0 Success
2 Invalid parameter(s)
12 Invalid Account
24 Duplicate transaction
548-01 Certificate chaining or validation error
-1 Indicates that the application record failed to update or return.
Response
<?xml version="1.0" encoding="UTF-8"?>
<response>
   <status_code>0</status_code>
   <status>Success</status>
   <system_timestamp>2015-04-29 10:25:15</system_timestamp>
   <response_data>
     <encrypted_pass_data>F92C1D45EFF127F92C1D45EFF127F92C1D45EFF127F92C1D45EFF127==</encrypted_pass_data>
     <activation_data>MBPAC-1-FK-123456.1--TDEA-8BF291C91F3ED4EF92C1D45EFF127C1F9ABC12348D</activation_data>
     <ephemeral_public_key>0499a6f42e83ea4f150a78780ffb562c9cdb9b7507bc5d28cbfbf8cc3ef0af68b36e60cb10db69127830f7f899492017089e3b73c83fcf0ebdf2c06b613c3f88b7</ephemeral_public_key>
   </response_data>
   <processing_time>0.407</processing_time>
   <echo>
     <transaction_id>916171485</transaction_id>
     <provider_transaction_id>GAAP test</provider_transaction_id>
     <provider_timestamp>2015-04-29 10:24:15</provider_timestamp>
   </echo>
</response>

 

Response Description Example value
Status The condition of a process or response (such as embossed card, account, freeze, and so on). Success
status_code The status of the response. 0
system_timestamp A system generated timestamp. 2011-02-02 11:11:12
response_data A structure for the response data. It can be empty but usually will contain information. <response_data>
   <new_account>   </new_account>
</response_data>
encrypted_pass_data An encrypted JSON file containing the sensitive information needed to add a card to Apple Pay. F92C1D45EFF127F92C1D45EFF127F92C1D45EFF127F92C1D45EFF127==
activation_data The request's activation data. MBPAC-1-FK-123456.1--TDEA-8BF291C91F3ED4EF92C1D45EFF127C1F9ABC12348D
ephemeral_public_key A generated key that is combined with a private key. 0499a6f42e83ea4f150a78780ffb562c9cdb9b
7507bc5d28cbfbf8cc3ef0af68b36e60cb10db69127830f7f899492
017089e3b73c83fcf0ebdf2c06b613c3f88b7
processing_time The time elapsed in processing the transaction. 1.723
echo A structure that displays transaction ID information. <echo>
  <transaction_id>...</transaction_id>
  <provider_transaction_id>...</provider_transaction_id>
  <provider_timestamp>...</provider_timestamp>
</echo>
transaction_id A number that represents a transaction. 12345a
provider_transaction_id Secondary transaction identifier (generated by a provider). 77bb
provider_timestamp Store a related timestamp for reporting and troubleshooting purposes. 2013-02-06 10:10:10
Code Snippet

                    # The following shell script will use cURL to call createProvisioningRequest
# and return the json response.

curl -d '{"apiLogin":"AbC1234-9999", "apiTransKey":"9845dk-39fdk3fj3-4483483478", "transactionId":"45k-dk3fj3-44478"}' \ 
-H "response-content-type: json" \ 
-X POST https://**your-full-implementation-url**/createProvisioningRequest
                
                    // The following Java code will make a createProvisioningRequest call
// and print the json response.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.Reader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLEncoder;
import java.util. *;

class GalileoAPICall
{
    public static void main(String[] args) {
        try {
            Map<String,Object> params = new LinkedHashMap<>();
           params.put("apiLogin", "AbC1234-9999");
           params.put("apiTransKey", "9845dk-39fdk3fj3-4483483478");
           params.put("transactionId", "45k-dk3fj3-44478");
            StringBuilder postData = new StringBuilder();
            for (Map.Entry<String,Object> param : params.entrySet()) {
                if (postData.length() != 0) postData.append('&');
                postData.append(URLEncoder.encode(param.getKey(), "UTF-8"));
                postData.append('=');
                postData.append(URLEncoder.encode(String.valueOf(param.getValue()), "UTF-8"));
            }
            byte[] postDataBytes = postData.toString().getBytes("UTF-8");

            URL url = new URL("https://**your-full-implementation-url**/createProvisioningRequest");

            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setRequestMethod("POST");
            conn.setRequestProperty("response-content-type", "json");
            conn.setRequestProperty("Content-Length", String.valueOf(postDataBytes.length));
            conn.setDoOutput(true);
            conn.getOutputStream().write(postDataBytes);

            String xmlOutput;

            Reader in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));
            for (int c; (c = in.read()) >= 0;) {
                System.out.print((char)c);
            }
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
                
                    # The following Python code will call createProvisioningRequest
# and print the json response.

import requests
headers = {'response-content-type': 'json'}
payload = {'apiLogin': 'AbC1234-9999', 'apiTransKey': '9845dk-39fdk3fj3-4483483478', 'transactionId': '45k-dk3fj3-44478'}
r = requests.post(url='https://**your-full-implementation-url**/createProvisioningRequest', data=payload, headers=headers)
try:
    print(r.json())
except:
    print(r.status_code)
                
                    // The following PHP code will make a createProvisioningRequest call
// and prints the json response.

$endpoint = 'https://**your-full-implementation-url**/createProvisioningRequest';
$params = array('apiLogin'=>'AbC1234-9999', 'apiTransKey'=>'9845dk-39fdk3fj3-4483483478', 'transactionId'=>'45k-dk3fj3-44478');

$curl = curl_init();
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $params);
curl_setopt($curl, CURLOPT_URL, $endpoint);
curl_setopt($curl, CURLOPT_HTTPHEADER, array('response-content-type: json'));
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

$result = curl_exec($curl);
curl_close($curl);
$json = new json_decode($result, true);
print_r($json);

                
                    // The following C# code will make a createProvisioningRequest call
// and print the json response.

using System;using System.IO;
using System.Net;
using System.Text;

byte[] data = Encoding.ASCII.GetBytes(
    "apiLogin=AbC1234-9999&apiTransKey=9845dk-39fdk3fj3-4483483478&transactionId=45k-dk3fj3-44478");
WebRequest request = WebRequest.Create("https://**your-full-implementation-url**/createProvisioningRequest");
request.Method = "POST"\;
request.ContentLength = data.Length;
request.Headers.Add("response-content-type", "json");
using (Stream stream = request.GetRequestStream())
{
    stream.Write(data, 0, data.Length);
}
string responseContent = null;
using (WebResponse response = request.GetResponse())
{
    using (Stream stream = response.GetResponseStream())
    {
        using (StreamReader sr = new StreamReader(stream))
        {
            responseContent = sr.ReadToEnd();
        }
    }
}
Console.WriteLine(responseContent);
                
                    # The following Ruby code will make a createProvisioningRequest call
# and print the json response.

require 'uri'
require 'net/http'

uri = URI("https://**your-full-implementation-url**/createProvisioningRequest")
https = Net::HTTP.new(uri.host, uri.port)
https.use_ssl = true
request = Net::HTTP::Post.new(uri.path)
request['response-content-type'] = 'json'
request.body = {apiLogin: 'AbC1234-9999', apiTransKey: '9845dk-39fdk3fj3-4483483478', transactionId: '45k-dk3fj3-44478'}.to_json
response = https.request(request)
puts response