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!