每个商户,当听到一声声“微信收款25元” “支付宝到账100元”“银联收款80元”时,心里别提有多美了。作为程序员,一定会想,这是怎么实现的?本文仅说明:商户扫用户付款码,向支付宝、微信发送请求,收到支付宝、微信应答后,网页语音实现方法。 如何使用银联、支付宝,发送收款请求,可参看其他文章。
支付宝的应答格式
response
public abstract class AopResponse
{
private string code;
private string msg;
private string subCode;
private string subMsg;
private string body;
[XmlElement("code")]
public string Code
{
get { return code; } set { code = value; }
}
[XmlElement("msg")]
public string Msg
{
get { return msg; } set { msg = value;}
}
[XmlElement("sub_code")]
public string SubCode
{
get { return subCode;}
set { subCode = value;}
}
[XmlElement("sub_msg")]
public string SubMsg
{
get { return subMsg; }
set { subMsg = value; }
}
public string Body
{
get { return body;}
set{ body = value;}
}
public bool IsError => !string.IsNullOrEmpty(SubCode);
}
应答的处理
收到response后,将response作为model 传入View ,在View中的处理如下:
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>View</title>
<script>
function sndPlay() {
let msg = new window.SpeechSynthesisUtterance();
msg.lang = "zh-CN"
msg.rate = 1
msg.pitch = 1
msg.volume = 0.5
if (sndTest != null) {
msg.text = sndText.innerText;
}
window.speechSynthesis.speak(msg);
}
</script>
</head>
<body onload="sndPlay()">
@{
<span id="snd" style="color:red">@(Model.IsError?"收款失败,失败原因是:"+Model.Msg:"微信收款:"+Model.ReceiptAmount+"元")</span>
}
</body>
</html>