工作流
a.在付款页面中插入 支付元素;并参考元素使用说明;
b.如果在用户付款成功之后需要有额外动作时(如增加记录/修改状态,判断实际付款金额是否正确等等),需要完成一个job文件;
c.资源访问页(受保护的资源)插入是否付款代码段. 该代码段异常分支内处理付款不成功的操作.
a.如果需要查询某些资源的支付情况,插入付款记录查询代码段来获取支付信息;
b.如果需要重新执行job,可以插入基于专款专用的job重试功能代码段,来重新执行job;
附:job文件中所需要的代码,可以现在wide--代码编辑界面--插入所需要的代码段,验证通过后,将这些代码段整体拷贝到job文件中。
一、支付列表
{ "success": true, "_runCommand": [ { "command": "updatelv", "params": [ { "gatewaylist": [ { "gateway": "alipayexpress", "name": "支付宝即时到账" }, { "gateway": "wechatpaynative", "name": "微信扫码支付" }, { "gateway": "unionexpress", "name": "网银支付接口" } ] } ] } ] }
二、调用视口并传参数
{ "_runCommand": [ { "command": "updatelv", "params": [ { "paymentid": "1374513602",// 微信生成的订单号 "prepayid": "wx201611091433355d48f63c700075715216", // 预支付id "getCodeUrl": "weixin://wxpay/bizpayurl?pr=XkKrJ4D", // 二维码信息 "returnmsg": "OK" } ] } ], "success": true // 是否成功 }
三、提交参数
注意:
1.如果使用的是支付模块的app.html页面,页面会自动提交所需的参数,使用者需要在页面构建页面层数据变量作为参数。
2.小程序支付是完全内置的支付方式且仅在小程序中生效,在后台配置后在小程序中会自动调用小程序支付且屏蔽其他支付,在小程序中仅支持小程序支付且无法配置
四、完成job文件
(function() { module.exports.exec = function(req, data) { var finish_data = {}; var tmp_data = {}; var inputs = data.data; return when.pipeline([ /*INSBEGIN:JOBPROCESS*/ /*INSEND:JOBPROCESS*/ function(){ var default_data = /*INSBEGIN:MARK*/ {} /*INSEND:MARK*/ ; return _.extend(default_data, finish_data); } ]); }; })();
注意: 当支付完成后,需要处理额外逻辑(可能存在业务逻辑复杂, 分多种情况),可以通过创建多个业务逻辑 (不同的业务逻辑可交给不同的组员实现),然后在job中通过"调用lib"代码段来将逻辑拆分开,从而降低功能实现难度。
五、常见错误处理
1. column "md_state" of relation "expenditures" does not exist 模块未更新,expenditures表中没有md_state属性,重新加入支付模块。提交model.js后,清空数据库后,更新数据库配置