官方地址:https://developer.apple.com/apple-pay/sandbox-testing/
简介
初次接触苹果支付,首先要搞懂流程。苹果支付不同于支付宝,微信支付。
比较微信支付与苹果支付的支付流程:
- 微信支付:客户端支付——>微信——>微信提现——>银行账户。
- 如果你不提现,所有的收益都在微信平台;如果提现,微信平台就要收取相关的手续费,具体手续费跟行业不同有差异。这也是微信平台的直接收益。
- 微信支付通过服务端api调用实现。
- 苹果支付:客户端支付——>商户银行账户。
- 它是通过客户端(苹果设备)将用户银行卡上的钱直接转到商户的银行账户上。因为钱没有第三方(苹果)经手,所以,苹果支付没有像支付宝、微信一样有直接收益。为了维护这套服务功能,苹果需要在有支付功能的应用上收取相应的提成。具体收费情况也要根据具体的产品内容有关。如有实物,可能就不需要提成。如软件需要开通会员等虚拟服务,就需要收取近3成的费用。详情去官方文档查询。
- 苹果支付通过苹果设备(iphone等)支付,前端支付,不需要走服务端,但需要在服务端验证支付结果。
支付接口
接口与验证
/**
* 苹果端APP订单支付成功回调
* @param userId 用户ID
* @param receipt 前台传过来的苹果支付收据简码,是base64加密参数。
*/
@RequestMapping(value = "/*****")
public @ResponseBody Map<String,Object> iosPaymentSuccess(HttpServletRequest request,
@RequestParam(name="userId", required=true)int userId,@RequestParam(required=true) String receipt){
Map<String, Object> resultMap =new HashMap<String, Object>();
try {
logger.info("苹果支付:receipt=="+receipt);
//校验用户是否存在
User user = userService.queryUserById(userId);
if (user == null){
resultMap=createResults(ErrorCode.ACCOUNT_USERID_INVALIDURL);
resultMap.put("success", false);
return resultMap;
}
//验证苹果收据是否有效
Map<String,Object> verifyMap = iPayNotify(receipt);
if(!(boolean)verifyMap.get("success")){//验证失败,直接返回失败信息
resultMap = createResults(ErrorCode.IOS_PAY_VERIFY_FAILED);
resultMap.put("success"