model_pay - TimYi/FengHuang GitHub Wiki
支付概要
将一个支付设计成和其它业务操作无关的概念。
它包括【支付方式】,如浦发支付、银联支付
【支付金额】,【退款金额】,【支付人(用户)】,【收款人(凤凰)】,
【支付状态(待支付,已支付)】,【id】这些字段。
它还包括一个【支付方式详情】,记录每种支付方式需要记录的特殊信息。
订单支付
对订单的一次支付,记录了对订单的付款详情,优惠详情。
它可以包含多个优惠券,以及唯一一个支付。
目前只能为浦发支付。
它包括【应支付总金额】,【实际支付金额】,【优惠金额】,【生成时间】,
【支付时间】,【支付状态(等待支付,支付完成)】,【支付方式】,字段。
支付完成提醒:{user}您好,您已经成功抢购{套餐名称},请在{datetime}之前支付{money}定金
,完成套餐认购。
支付流程
一、支付场景开始于用户抢购下单成功,
暂不添加支付方式这个字段以及选择支付方式的页面。默认使用浦发支付。
二、在待支付订单中,点击去支付,进入浦发支付信息选择界面。
@海涛 @宣宇 注意这里供客户选择的字段(浦发需要):
PayBank,支付银行,这个暂时由前端写死,因为完全动态展现涉及到后台上传银行图片,后续补上。
可用银行见【附表A】
AccountType,账户类型,借记卡:JIEJJI,信用卡:XINYONG,前端写死。
优惠券,让用户选择需要使用的优惠券,将优惠券id传给后端。
以上这三个参数,传给后端【浦发支付信息计算】接口,这个接口的作用:
1、计算优惠券是否可用,计算减免后的价格,并在这一步将优惠券核销,
并记录到支付的【优惠金额】中。
2、计算调用浦发支付网关页面需要的参数。
有三个参数:transName,Plain,Signature,会由后台计算返回。
三、前端根据以上接口返回的浦发支付参数,调用浦发支付网关
调用指定格式的post请求,并在_bland窗口打开。
前端具体的调用方式,见【附表B】
在新窗口打开浦发网关后,原前端页面跳转到正在支付页面。
后台会接收浦发的支付回调,并改变订单的支付状态。
前端在用户支付完成后,由用户点击“支付完成”。
调用订单查询接口查询对应的订单,此时订单支付状态会更改为支付完成。
将订单支付完成的结果展示给客户。
【附表A】浦发支付可选银行
/**招商银行*/
cmb,
/**工商银行银行*/
icbc,
/**中国建设银行*/
ccb,
/**中国农业银行*/
abc,
/**中国民生银行*/
cmbc,
/**华夏银行*/
hxb,
/**广东发展银行*/
cgb,
/**兴业银行*/
cib,
/**光大银行*/
ceb,
/**交通银行*/
comm,
/**中国银行*/
boc,
/**中信银行*/
citic,
/**上海银行*/
bos,
/**平安银行*/
pingan,
/**邮政储蓄*/
psbc,
/**虚拟银行(仅用于测试环境)*/
vbank,
【附表B】前端调用浦发网关说明(截取浦发支付开发文档)
<!--form样本-->
<form action="https://xx.xx.xx.xx/payment/main" method="post" target="_blank">
<input type=hidden name=transName value=”WTTX”>
<input type=hidden name=Plain value=”xxx1”>
<input type=hidden name= Signature value=”xxx2”>
<input type=submit name=submit value=浦东发展银行支付网关>
</form>
其中:
transName: 必须上传,委托提现为WTTX,具体见表7-2
Plain:第三方订单数据组成的原始数据字符串
Signature: 原始数据字符串的签名
【注】:以上参数通过上文提到的【浦发支付信息计算接口】获取。
【注】:实际post地址:
正式地址:https://ebank.spdb.com.cn/payment/main
测试地址:https://124.74.239.32/payment/main