问题描述
Swish QR Code API 的设计者选择使用 POST 作为生成和获取 QR 码的方法。我不明白这个选择,但事实就是这样。如果他们选择使用 GET 方法,则使用 API 将是微不足道的。但实际上,如果您需要即时生成 Swish 支付二维码,您需要编写自己的代理来将 GET 转换为 POST。
这是我想要使用 API 的方式:
<img src="qr.asp?payee=9006032&amount=200">
您如何使用经典 ASP 实现此目的?
背景信息:
Swish 是一家瑞典移动支付提供商,二维码用于发起支付。在二维码中,可以指定收款人(个人的手机号码)、金额和给收款人的信息(例如订单号)。
解决方法
使用 XMLHTTP component 连接到 Swish API 服务器。构建适当的 JSON 请求并将响应流式传输到客户端。
此示例使用 JScript 作为脚本语言。
<%@ codepage=65001 language="jscript" %>
<%
var payee = Request.QueryString('payee');
var amount = Request.QueryString('amount');
var message = Request.QueryString('message');
var format = 'png'; // Can also be 'jpg' or 'svg'
var size = 400; // Between 300 and 2000
var border = 2; // Between 0 and 4 (measured in blocks,not pixels)
var transparent = 'true'; // Must be 'false' for 'jpg'
var json = '{'
+ '"payee":{"value":"' + payee + '","editable":false},'
+ '"amount":{"value":' + amount + ','
+ '"message":{"value":"' + message + '",'
+ '"format":"' + format + '",'
+ '"size":' + size + ','
+ '"border":' + border + ','
+ '"transparent":' + transparent
+ '}';
var http = new ActiveXObject('MSXML2.Serverhttp');
http.open('POST','https://mpc.getswish.net/qrg-swish/api/v1/prefilled',false);
http.setRequestHeader('content-type','application/json');
http.send(json);
if (http.status != 200) {
Response.ContentType = 'text/plain';
Response.Write('HTTP ' + http.status + '\n' + http.statusText + '\n' + http.responseText);
} else {
Response.ContentType = 'image/png';
Response.BinaryWrite(http.responseBody);
Response.End();
}
%>