pingxx付款流程

来源:互联网 发布:淘宝卖家好评回复 编辑:程序博客网 时间:2024/04/28 02:26

在themes/js/libs/questiondetails.js中,旁观者用户点击语音后进入identityService.saveUserToPayMent接口。首先声明一个charge对象,当price大于0时,拿到服务器IP地址,

定义一个map charge,在charge中放入order_no为orderid,orderid为一个随机字符串;amount为订单金额price(此处的amount单位为分,所以这里要乘100);channel为支付渠道(ping++文档中详细解释);currency中放的是支付币种(ping++文档中详细记载);client_ip放入ip(主机地址);subject和body中存放的是title和description(这两个可以根据需要改变);调用接口PPPPayMent.charge(onlineuser.getOpenid(),charge)

此处填写API key和应用id

Pingpp.apiKey=apiKey;(pingpp 管理平台对应的API key

        Charge resultCharge =null;

 

  app.put("id",appId);(pingpp 管理平台对应的应用ID)

        chargeMap.put("app",app);




判断付款方式(此处为扫码登录)

 

 String channelType = chargeParam.getChannel();

        if(UtilDataDic.PAY_CHANNEL_WX_PUB_QR.equals(channelType)){

            Map<String, Object> extra = new HashMap<String, Object>();

            extra.put("product_id",chargeParam.getObject());

            chargeMap.put("extra",extra);

        }

将以上数据作为参数,resultCharge = Charge.create(chargeMap);

当前端传入role为0时,说明该操作室偷听。若price大于零,则说明该用户身价或者偷听价格不为零,之后判断charges是否为空,则说明charges创建成功。payment表中插入一条支付数据。若price为0,则表明该问答为免费偷听。

若为2说明该操作为提问。则表明现在用户是提问者,若price大于零,则说明该用户身价或者偷听价格不为零,向live表中插入一条数据。若price为0,则表明被提问者身价为0,向payment和live表中添加数据。

处理完数据后接口返回charges以供前端使用。


前端调用框架时,会经过ping++平台请求通过web-xml进入WebHooksServlet

<servlet-mapping>

<servlet-name>pingxxCharge</servlet-name>

<url-pattern>/pingxxCharge</url-pattern>

</servlet-mapping>

<servlet>

<servlet-name>pingxxCharge</servlet-name>

<servlet-class>com.sas.pdg.mrr.servlet.WebHooksServlet</servlet-class>

</servlet>

用来检测支付状态。

首先获取http请求中body中内容,再通过解析异步数据,获取event类型。

charge.succeeded为支付成功,判断eventData.get("paid").toString())是否为null,若不为null,根据orderid(eventData.get("id"))查询payment表中是否存在支付信息,若发现支付信息,则更改支付状态。之后判断该条支付信息的type是否为1,若为1说明该条支付信息是提问,更新用户提问数,并更改live表中对应提问的deleted值,表明支付成功,触发触发器,开启定时任务。

refund.succeeded为退款成功,判断eventData.get("succeed")是否为空,若不为空则读取gbtags.properties配置文件(为读取模板消息模板),调用is接口通过orderid(eventData.get("id"))在payment表中查询支付信息,若查到的支付信息不为空,则更改支付状态,更改成功后发送模板消息。

transfer.succeeded为转账成功,更改数据库信息,并发送模板消息。


注意:上述三种操作,若在response中放200信息码表示服务器正常处理了请求;若操作失败,则在response中放入500信息码,表示服务器出错。
0 0