1. 获取appleiap支付通道
- var iap = null;
- plus.payment.getChannels(function(channels) {
- for (var i in channels) {
- var channel = channels[i];
- // 获取 id 为 'appleiap' 的 channel
- if (channel.id === 'appleiap') {
- iap = channel;
- }
- }
- }, function(e) {
- console.log("获取支付通道失败:" + e.message);
- });
2. 获取订单信息
- // ids 为在苹果开发后台配置的应用内购项目的标识集合
- var ids = ['donation', 'donation6'];
- // iap 为刚刚获取的`appleiap`支付通道
- iap.requestOrder(ids, function(e) {
- // 获取订单信息成功回调方法
- console.log('requestOrder success: ' + JSON.stringify(e));
- }, function(e) {
- // 获取订单信息失败回调方法
- console.log('requestOrder failed: ' + JSON.stringify(e));
- });
3. 进行支付
- plus.payment.request(iap, {
- productid: id,
- username: "appusername",
- optimize: true // 支付时设置 optimize: true
- }, function(result) {
- // 支付成功,result 为 IAP商品交易信息对象 IAPTransaction 需将返回的支付凭证传给后端进行二次认证
- }, function(e) {
- // 支付失败,需要调用一下 restoreComplateRequest 方法
- restoreComplateRequest()
- });
4. 恢复购买方法(获取已购的非消耗性商品和订阅商品)
注意:如果用户在支付过程中退出了App,或其他情况造成的丢单的消耗类型商品在支付完成后,首次调用该接口可返回支付凭证
- function restoreComplateRequest() {
- iap.restoreComplateRequest({}, function(results) {
- // results 格式为数组存放恢复的IAP商品交易信息对象 IAPTransaction,通用需将返回的支付凭证传给后端进行二次认证
- });
- }
5. 在支付页面每次显示的时候调用 restoreComplateRequest()恢复购买方法确认是否有未完成或可恢复的订单
- document.addEventListener('resume',function(){
- restoreComplateRequest() // 在支付页面每次显示时调用 `restoreComplateRequest()`方法
- },false);