关于接入支付宝这块的内容,网上找了一些总感觉不是已经过时了就是还存在很多问题,介绍的并不详细,所以打算自己写一下详细接入流程。仅介绍申请应用接入流程,不涉及后台sdk接口内容。
首先uniapp的支付已被封装
uni.requestPayment是一个统一各平台的客户端支付API,不管是在某家小程序还是在App中,客户端均使用本API调用支付。
所以现在前端调用支付变的很方便,uniapp会帮你调用微信支付,支付宝支付啥的,但是对APP支付比较友好,H5的话还需要自己动手
官方文档地址: https://uniapp.dcloud.io/api/plugins/payment?id=payment
找到支付宝支付这块,点击快速接入进入文档
支付宝文档地址:https://opendocs.alipay.com/open/204/105297/
1. 登录支付宝开放平台:
https://open.alipay.com/platform/home.htm
注册登录并认证一下,可以个人认证也可以企业认证。
2. 创建应用:
填写基本信息:
移动应用的话要填写ios的bundleId,和安卓端的应用签名和应用包名:
关于这些参数的创建,uniapp官方也介绍的很清楚了
iOS证书(.p12)和描述文件(.mobileprovision)申请
3.添加要使用的功能能力
然后会提示你要应用绑定商家中心,点击蓝字进去
填入刚创建的appId,可以在应用那块看到
绑定后有的功能是需要签约的,应用上线后才有签约按钮
或者直接到这里签约(签约需要等上一天左右):
https://b.alipay.com/signing/productDetailV2.htm?productId=I1011000290000001002
4.配置应用环境
文档地址:https://opendocs.alipay.com/open/200/105310
到这一步,就该配置一下加密了。
这里只有第一项是必填的,后面的无所谓先不涉及
点击“设置”-》登录
弹出这个:
然后直接进入这里生成秘钥:秘钥生成器
直接点击生成秘钥,会自动生成应用私钥和应用公钥(注意这个只是应用公钥,后面sdk接口中要sign验证的时候是要支付宝公钥,不是应用公钥,支付宝公钥后面才能得到),私钥自己保存包,公钥赋值后上传到刚才让你填写的位置:
保存后你就会看到两个公钥:
注意把这两个公钥和先前那个私钥都保存好,区分好。
5.提交审核
然后等待审核上线后就可以在程序中正常使用了,亲测支付都成功。
ps:需注意,我在支付宝付款成功后回调函数中做验证的时候,总是失败返回false
boolean signVerified = AlipaySignature.rsaCheckV1(params, paymentUtil.getAlipayPublicKey(), AlipayConstants.ALIPAY_CHARSET, AlipayConstants.ALIPAY_SIGNTYPE);
有人说RSA2加密的话要用rsaCheckV2代替rsaCheckV1,但我改成2反而不成功了,结果是前面我的公钥填错了,把支付宝公钥写成应用公钥了(第二个参数要的是支付宝公钥)。
回调后如果都成功,要返回succes字符串,不然支付宝就会重复多次调用你的回调函数,直到你返回success为止,这点很好,可以防止用户支付后你后台问题更新订单状态失败,重复调用等你后台好了可以自动更新订单状态,很不错的。记得回调那里也做一下验证,如果返回了success他还重复调用,记得屏蔽。