.NET Core with PayTrace (Mime Type Fix)

This year I am re-writing my previous payment solution (from PHP to .NET) and first on the project list is credit cards.  We are using PayTrace and their client-side encryption as to not have to worry about PCI Compliance.

I’m to the point where I have a Pre-Payment model with all the fields needed to send via JSON.  I also have a method to request a token for sending (uses demo username and pass) and a test PEM file I downloaded from the PayTrace site.  I also got the webpage scanning credit cards, and I hit submit and.. I get this:

XML Parsing Error: no element found

This is appearing in the console of Inspector in Firefox.  Turns out this a generic error Firefox throws out when it’s expending a file but gets nothing.

My path’s are correct, but the “public_key.pem” file is not attaching to my post.   The problem?  MIME-type.

Making It Work

First, in Startup.cs, I needed to do this:

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    var provider = new FileExtensionContentTypeProvider();
    provider.Mappings[".pem"] = "application/x-pem-file";

 

in the same function add this:

app.UseStaticFiles(); // For the wwwroot folder
app.UseStaticFiles(new StaticFileOptions()
{
    FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), @"wwwroot", "api-keys")),
    RequestPath = new PathString("/api-keys"),
    ContentTypeProvider = provider
});

 

The key is do NOT forget app.UseStaticFiles(); for your general wwwroot folder.

I dropped public_keys.pem in “api-keys” and done!