asp.net core 3.1开发交通银行支付接口笔记一底层代码
asp.net core 3.1开发交通银行支付接口笔记三退款、查询和收尾
上文说完配置和底层代码。这一章支付
原理获得加签字符串,用表单POST提交跳转到交通银行指定页面,当时我在这里卡了好久,完全不知道怎么POST提交跳转。还是百度了好久以后才有的结果。不过要注意:document.forms["payform"].submit();千万不可以漏掉(),我很早以前也是遇到过三次左右吧都是搞了好久,都不能提交。
这种反复踩坑的精神很值得赞赏啊。
我用的是VUE。前后端彻底分离。这是代码
<form
name="payform"
method="post"
>
<input
id="ID"
name="交行接收的指定键,文档写有"
type="hidden"
/>
</form>
pay: function (id) {
var thisobj = this;
comjs.get("获取加签信息的本地服务器地址", { id: id }, function (res) {
if (res.rs == reasposeState.ok) {
document.forms["payform"].action = res.data.url;
document.getElementById("ID").value = res.data.sign;
document.forms["payform"].submit();
} else {
thisobj.showMsgFuc(res.data, true);
}
});
},
接下来只要在跳转的交行页面上输入微信支付密码即可支付。但是有个问题,支付完后会跳回微信公众号首页,而不是我的第三方首页。这很奇怪。
接收支付回调
1:接收回调
银行回调用的接口标识是终态通知,这个要注意
得到回调结果后就是自己本地的业务逻辑这个和这个文章主题交行接口无关,就不写出来了。
2:响应回调
这里我把HTTP理解错了,因为文档说交互要键值对响应的话要POST一个表单响应,所以以为用POST再次发起一次响应。其实这里只需要响应加签后的字符串即可
/// <summary>
/// 交行响应报文处理
/// </summary>
/// <param name="固定的接收ID"></param>
/// <returns></returns>
public async Task<ContentResult> bcmnotifyurl(string 固定的接收ID)
{
rs = await _iCourseMajorBLL.NotifyHandle(固定的接收ID);
return Content(rs);
}