“ 吹嘘编程语言牛逼的人,通常是语言本身牛逼,而不是这个人牛逼。无论何时,语言只是一个工具。——加菲猫”
最近有朋友在咨询VFP能不能支付的问题,支付VFP必须有啊,猫猫已经都把组件都做好了,开户之后,就可以直接对接上去了。
下面就来演示一下咯。时长00:55
01—官方支付和聚合支付
官方支付
就是去微信的公司开的户,就是微信官方,支付宝开了就是支付宝官方.
缺点:费率高,要对公账户
聚合支付
就是聚合了微信支付、支付宝支付、百度钱包支付、银联等支付方式为一体多种支付方式,提供给商家进行收款。可以收到个人。
市面有很多公司可以提供这种方法,像我合作的点点够就是银联的聚合支付.
02—支付产品的类型
付款码支付
付款码支付是指用户展示微信钱包内的“付款码”给商户系统扫描后直接完成支付,适用于线下场所面对面收银的场景,例如商超、便利店、餐饮、医院、学校、电影院和旅游景区等具有明确经营地址的实体场所。
JSAPI支付
JSAPI支付是指商户通过调用微信支付提供的JSAPI接口,在支付场景中调e用微信支付模块完成收款。JSAPI支付需要在公众号内发起支付
应用场景有:
线下场所:调用接口生成二维码,用户扫描二维码后在微信浏览器中打开页面后完成支付
公众号场景:用户在微信公众账号内进入商家公众号,打开某个主页面,完成支付
PC网站场景:在网站中展示二维码,用户扫描二维码后在微信浏览器中打开页面后完成支付
H5支付
H5支付是指商户在微信客户端外的移动端网页展示商品或服务,用户在前述页面确认使用微信支付时,商户发起本服务呼起微信客户端进行支付。主要用于触屏版的手机浏览器请求微信支付的场景。可以方便的从外部浏览器唤起微信支付。
Native支付
Native支付是指商户系统按微信支付协议生成支付二维码,用户再用微信“扫一扫”完成支付的模式。
该模式适用于PC网站、实体店单品或订单、媒体广告支付等场景。
小程序支付
小程序支付是指商户通过调用微信支付小程序支付接口,在微信小程序平台内实现支付功能;用户打开商家助手小程序下单,输入支付密码并完成支付后,返回商家小程序
03—小程序支付的流程
04—关键代码
1.微信小程序发起支付
要发送openid,商品名称,金额到后台API
wx.request({
url: app.globalData.serverurl + 'ctl_pay.fsp?proc=unifiedorder2&token='+token,
..})
2.VFP程序 webapi接收,准备各项支付参数
将上文收到的三个参数,加上订单号调用支付函数
oweixinPay=Newobject("Qiyupay_unionpay","Qiyupay_unionpay.prg")
*--三个支付相关参数不要错
oweixinPay.appid=""
oweixinPay.unionpayid=""
oweixinPay.unionPayKey=""
&&回调要设置
oweixinPay.notify_url=""
&&订单号,说明,金额,openid
cJson=oweixinPay.unionpay_Wxpay(cout_trade_no,cattach,ntotal_fee,copenid)
If Isnull(cJson) &&出错抛错
Error oweixinPay.msg
Endif
Return cJson
3 返回的JSON结构是
{timeStamp:””,
nonceStr:””,
package:””,
signType:””,
paySign:””}
4 根据上面的JSON结构,就可以拉起支付了。
wx.requestPayment({
timeStamp: obj.timeStamp,
nonceStr: obj.nonceStr,
package: obj.package,
signType: obj.signType,
paySign: obj.paySign,
success: function (res) {
console.log(res);
wx.hideLoading();
//跳转页面
}, fail: function (res) {
wx.hideLoading();
console.log(res);
}
})
5 获取支付结果
主要有两种方式,一种是主动查询,在支付完成之后,实际账款有没有到账,是不知道的,一般一到三秒后,需要调用主动查询接口,看账款到账吗?到账就进行下一步流程。
后台通知,如果款项到了你的账户,支付服务器会调用你先前给的回调网址,发送数据。
这两种要根据到账,未到账处理业务流程,既要关注正常流程,也要关注异常流程。
6 支付服务器回调过来的数据
重要的订单号,金额等记录,接收到数据,就要进入业务流程。
我这里提供一个模板,可以参考实现。
Define Class ctl_notice_ht As Session
*-- 用于支付回调
Procedure onDefault
cData=HttpGetPostData()
lcresult_code=this.getXmlContent("result_code",cData)
lctotal_fee=this.getXmlContent("total_fee",cData)
lcout_trade_no=this.getXmlContent("out_trade_no",cData)
*首先去重,订单标志回写成功,处理业务逻辑
RETURN ""
Endproc
Function getXmlContent(cName ,cXmldata)
If Empty(cXmldata)
Return ""
Endif
Local lc值
lc值 = ""
lc值 = Strextract(m.cXmldata, "<"+cName +"><![CDATA[", "]]></"+cName + ">")
Return lc值
Endfunc
Enddefine
问答:
1 聚合支付安全吗?
合支付所做的是打通多种支付通道,可以打通支付宝、微信支付、云闪付、花呗、信用卡、等支付通道,做的是接口对接和结算的技术服务,但绝对不触碰资金。
聚合支付在整个过程中只参与资金清算,钱是由第三方平台(银行、支付宝、微信)和商户直接对接。举个例子,商家选择和第三方支付平台(支付宝、微信支付、云闪付等)合作。如果商家收到的钱来自支付宝,那么支付宝方面会在结算后把钱打入商家指定的支付宝余额账户;如果收到的钱来自微信,那么微信会把钱打入微信商家平台,商家第二天可以去提现。也就是说,商户的钱在银行、支付宝、微信那里,资金安全是有保障的。
现在没有二清的情况了,二清是违法的。而且支付牌照很贵。
2 聚合支付可以个人开户吗?
不可以,有营业执照才可以,比如个体户。可以收款到个人户或公户。
3 VFP调用支付会很难吗?
加菲猫已经整合好类库了,直接调用,代码简单。扫码支付非常简单,开箱即用。小程序调用需要指导一下使用。