准备资料
- 去Ipay88官网申请MerchantCode和MerchantKey这两个参数。
MerchantCode: 商户code,用于发起支付
MerchantKey: 商户key,用户签名使用 - 准备三个URL:
Request URL: 签出页,发起支付请求的地址,必须是一个HTML页面地址,把相关参数通过Form表单提交给Ipay88
Response URL: 用户发起支付后会跳转到Ipay88支付页面,用户支付过后会跳转到此页面。中途如果用户放弃支付或者支付失败都会请求此接口。Ipay88会携带一些参数给我们,我们可以判断是否成功,给前端返回一些内容等
Backend URL: 支付回调地址。类似于支付宝,微信之类的
支付流程
- form表单提交下面的参数给Ipay88,发起支付
参 数:
MerchantCode 商户代码
PaymentId 支付方式
RefNo 订单编号(我理解的,方便与订单挂钩)
Amount 支付金额(注意类似与1,912.00这种格式)
Currency 货币
ProdDesc 产品描述
UserName 用户名
UserEmail 用户邮箱
UserContact 联系方式
Remark 备注(非必传)
Lang 编码方式,UTF-8
SignatureType 加密方式SHA256
Signature 加密串
ResponseURL 支付后跳转URL
BackendURL 支付后回调URL - 我们网站跳转到Ipay88站点支付页面,用户输入相关银行卡信息进入下一步
- Ipay88跳转银行系统网站,输入相关信息进入下一步
- Ipay88获取银行网站返回的状态,得到支付结果并进入下一步
- 跳转到我们设置的Response URL,后台可以获取到Ipay88的支付状态,我们根据支付信息再次query订单是否支付成功,如果支付成功则更新订单跳转成功界面,否则跳转失败页面
- 结束
开始发起支付请求
- 准备提交给Ipay88的参数
// Java后台准备的支付参数返回给前端 Map<String, Object> map = new HashMap<>(); map.put("MerchantCode", merchantCode); // Ipay88商户code map.put("PaymentId", PaymentId); // Ipay88支付渠道,我写的2就是马来西亚币 map.put("RefNo", RefNo); // 相当于订单编号 map.put("Amount", Amount); // 支付金额,1.00 两位小数,1,278.99 超过三位有逗号,哦 map.put("Currency", "MYR");// 货币,我用的MYR map.put("ProdDesc", ProdDesc); // 产品介绍 map.put("UserName", UserName); // 用户名 map.put("UserEmail", UserEmail); // 用户邮箱 map.put("UserContact", UserContact); // 用户联系方式 map.put("Remark", Remark);