更新记录

1.0.0(2019-07-01)

插件简介

专门用来修复苹果IOS支付时出现"您已购买此App内购买项目。此项目将免费恢复"。

问题描述

首先在IOS平台里面创建“APP内购买项目”,选择的是“消耗型项目”,然后用uni-app官方的支付api进行支付,多支付几次,有时候就会出现提示“您已购买此App内购买项目。此项目将免费恢复”,

特别是在沙盒测试里面支付很大几率出现,我明明选的是消耗型项目,应该每一次都是新的支付,不存在恢复的情况,而且出现这种情况后,后面再怎样支付都是提示这个信息,有时候连删除掉应用,

重新再安装,也是一样的提示,这个对于需要消耗型项目支付的人来说问题太严重了,苹果支付完全没法用,苹果对虚拟产品又不给微信和支付宝进行支付,项目就一直卡在这上面了。

问题原因

上网搜了一圈,发现遇到的人不少,原因是苹果的服务器对大陆访问很慢(特别在沙盒测试环境更加不好),导致用户在购买成功后,收不到苹果的IAP支付成功通知,交易就会一直卡在那里,没有关闭掉,后面无论怎样支付都是提示

“您已购买此App内购买项目。此项目将免费恢复”。

解决问题

找到原因,就开始找补救方法了,补救方法就是需要把上一次未完成的订单结束掉,下一次就可以正常支付了.本插件就是在做这件事。

代码说明

在JS里面引入插件

var zdIospay = uni.requireNativePlugin('ZD-Iospay');

使用说明

var transactionDateresult=zdIospay.ZdIospayFunctionSync('对应苹果里的productid');

var transactionDate = eval("("+transactionDateresult+")");

调用时只需一个参数,就是你苹果里面自己配的消耗型内购项目的productid,程序会找到这个productid对应的订单,如果发现有未结束的订单,自动帮你结束掉。

返回值说明

当没有未结束的订单时,返回

{

"result": "0"

}

当查询到有未结束的订单,返回

{

"result": "0",

"transactionIdentifier": "1000000538781786",

"transactionReceipt": "苹果交易收据",

"transactionState": "1",

}

参数

result

只会返回0,代表插件调用成功

transactionIdentifier

苹果交易订单号

transactionReceipt

苹果交易数据,可以把数据发送到苹果的服务器进行验证真假

transactionState

"1"为交易成功,没有其它值,因为只有交易成功,又收不到苹果IAP通知才会卡住,失败订单会自动结束的.

注:

如果查询到有未结束的订单,程序会自动结束掉,并且返回苹果的订单数据,这个数据只会返回一次,下一次再调用因为订单已经结束掉了,所以不会查询到数据了。

这时如果你调自己的服务器失败了,苹果的订单数据就丢了,建议自己可以先缓存在本地,等你调用自己的服务器成功后,再删除掉。

插件的返回值是字符串类型,而不是JSON类型,如果需要变成JSON类型需要调用eval("("+transactionDateresult+")")转换成JSON类型才可以。

因为我只用到了消耗型的内购项目,其它类型的内购项目是否也可以通过本插件结束掉订单,我并不清楚.

测试

用户可以点击支付,然后填完密码点击确定,然后马上结束掉应用进程,等出现购买成功提示框后,再重新启动应用,调用本接口,看是否能查到未完成订单数据.

后记

我在测试的过程中发现有时第一次调用无法取得未结束订单的数据,需要第二次调用才能获取得到,上网搜了说是因为苹果服务器还没有把数据同步过来,所以调用无数据。坑真多,我的做法是支付前调用一下这个方法,

再进行支付,用户在进入页面和刷新页面的时候我也会调用一下这个方法,看有没有未结束的订单。

原生插件通用使用流程:

购买插件,选择该插件绑定的项目。

在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。

根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。

打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。

开发完毕后正式云打包

注意事项:使用HBuilderX2.7.14以下版本,如果同一插件且同一appid下购买并绑定了多个包名,提交云打包界面提示包名绑定不一致时,需要在HBuilderX项目中manifest.json->“App原生插件配置”->”云端插件“列表中删除该插件重新选择

插件简介

专门用来修复苹果IOS支付时出现"您已购买此App内购买项目。此项目将免费恢复"。

问题描述

首先在IOS平台里面创建“APP内购买项目”,选择的是“消耗型项目”,然后用uni-app官方的支付api进行支付,多支付几次,有时候就会出现提示“您已购买此App内购买项目。此项目将免费恢复”,

特别是在沙盒测试里面支付很大几率出现,我明明选的是消耗型项目,应该每一次都是新的支付,不存在恢复的情况,而且出现这种情况后,后面再怎样支付都是提示这个信息,有时候连删除掉应用,

重新再安装,也是一样的提示,这个对于需要消耗型项目支付的人来说问题太严重了,苹果支付完全没法用,苹果对虚拟产品又不给微信和支付宝进行支付,项目就一直卡在这上面了。

问题原因

上网搜了一圈,发现遇到的人不少,原因是苹果的服务器对大陆访问很慢(特别在沙盒测试环境更加不好),导致用户在购买成功后,收不到苹果的IAP支付成功通知,交易就会一直卡在那里,没有关闭掉,后面无论怎样支付都是提示

“您已购买此App内购买项目。此项目将免费恢复”。

解决问题

找到原因,就开始找补救方法了,补救方法就是需要把上一次未完成的订单结束掉,下一次就可以正常支付了.本插件就是在做这件事。

代码说明

在JS里面引入插件

var zdIospay = uni.requireNativePlugin('ZD-Iospay');

使用说明

var transactionDateresult=zdIospay.ZdIospayFunctionSync('对应苹果里的productid');

var transactionDate = eval("("+transactionDateresult+")");

调用时只需一个参数,就是你苹果里面自己配的消耗型内购项目的productid,程序会找到这个productid对应的订单,如果发现有未结束的订单,自动帮你结束掉。

返回值说明

当没有未结束的订单时,返回

{

"result": "0"

}

当查询到有未结束的订单,返回

{

"result": "0",

"transactionIdentifier": "1000000538781786",

"transactionReceipt": "苹果交易收据",

"transactionState": "1",

}

参数

result

只会返回0,代表插件调用成功

transactionIdentifier

苹果交易订单号

transactionReceipt

苹果交易数据,可以把数据发送到苹果的服务器进行验证真假

transactionState

"1"为交易成功,没有其它值,因为只有交易成功,又收不到苹果IAP通知才会卡住,失败订单会自动结束的.

注:

如果查询到有未结束的订单,程序会自动结束掉,并且返回苹果的订单数据,这个数据只会返回一次,下一次再调用因为订单已经结束掉了,所以不会查询到数据了。

这时如果你调自己的服务器失败了,苹果的订单数据就丢了,建议自己可以先缓存在本地,等你调用自己的服务器成功后,再删除掉。

插件的返回值是字符串类型,而不是JSON类型,如果需要变成JSON类型需要调用eval("("+transactionDateresult+")")转换成JSON类型才可以。

因为我只用到了消耗型的内购项目,其它类型的内购项目是否也可以通过本插件结束掉订单,我并不清楚.

运行环境

本插件只支持真机测试,选择本插件,打包自定义基座,然后在真机上运行.(不支持模拟器运行)

测试

用户可以点击支付,然后填完密码点击确定,然后马上结束掉应用进程,等出现购买成功提示框后,再重新启动应用,调用本接口,看是否能查到未完成订单数据.

后记

我在测试的过程中发现有时第一次调用无法取得未结束订单的数据,需要第二次调用才能获取得到,上网搜了说是因为苹果服务器还没有把数据同步过来,所以调用无数据。坑真多,我的做法是支付前调用一下这个方法,

再进行支付,用户在进入页面和刷新页面的时候我也会调用一下这个方法,看有没有未结束的订单。

ios 自己服务器 苹果支付_修复苹果IOS支付相关推荐

  1. java在线支付---09,10,11,12_在线支付_分析易宝支付网关的应答协议与处理代码,完成用于处理支付响应的Servlet的初步编写和调试,完成处理支付网关响应结果的Servlet,支付实现

    09_在线支付_分析易宝支付网关的应答协议与处理代码 创梦综合技术qq交流群:CreDream:251572072 对支付结果返回的数据加密生成md5-hmac public static boole ...

  2. 苹果开发者_国外苹果企业开发者账户

    国外苹果企业开发者账户 PG123hs6 国外苹果企业开发者账户 即便审批完毕后也不一定就代表着发布取得成功,很有可能还会继续挨打回再次递交,比较严重的会由于反复的发布被拒而造成苹果者封.科技是内测对 ...

  3. ios 企业签名证书购买_如何购买iOS企业证书进行app上架!!

    名证书购买只能购买企业开发者帐号,只有企业开发者才能提供签名服务. 签名机制的意义 安全.苹果为了对App的环境有绝对的控制权,只有被苹果认可的应用才可以安装到手机上.可以避免应用被篡改,以及盗版应用 ...

  4. 小程序下单账号与支付账号不一致不让支付_微信小程序支付流程

    微信支付之小程序支付 微信的支付方式有以下几种,不同的支付方式适用于不同的支付场景,而今天要给大家讲的就是 小程序支付 方式 说到支付功能就要涉及到金钱交易,必定是有比较严格的规范及流程,如要求小程序 ...

  5. ios 开发账号 退出协作_如何在iOS 10中的Notes上进行协作

    ios 开发账号 退出协作 iOS' Notes app provides a convenient way to remember the great ideas you come up with ...

  6. python分苹果问题_分苹果问题的C++和Python实现

    很好玩的一个问题.话说小明的苹果怎么可能一模一样? 显然这并不是重点.重点在于抽象这个问题的方法. 如果从M个苹果,拿出N个苹果,问有几种可能性,很明显这是典型的组合问题: 如果把M个苹果等分成N份. ...

  7. ios系统软件迁移到安卓_如何从ios迁移数据到安卓

    2018-11-16 回答 从安卓设备转移到ios的应用叫move to ios 2015年9月17日,除ios 9外,苹果当地时间周三还发布了move to ios--帮助用户将应用由android ...

  8. 安卓和ios的ui设计区别_浅谈IOS和Android界面设计尺寸规范

    刚开始接触UI的时候,碰到的最多的就是尺寸问题,什么画布要建多大,文字该用多大才合适,我要做几套界面才可以?什么七七八八的也着实让人有些头疼. 废话不多说,希望大家耐心看完后,不要再纠结于尺寸相关的东 ...

  9. ios保存gif到相册_如何在iOS中保存和下载GIF图片

    对于大多数移动开发人员来说,他们经常处理图片,而png和jpg是开发人员经常遇到的图片类型. 但是,对于gif图片怎么存gif图,由于iOS系统不支持直接处理gif,因此处理起来会更加麻烦. 本文将讨 ...

  10. ios手机python编译器免费_适用与IOS手机的python编辑器,让你不限空间,地点都能玩转pyhton代码 !...

    前言 现在越来越多人学习python,很多小伙伴都富有激情的,利用碎片化的时间都要学习,小编不得不佩服你们,大家都知道pyhton是简单易学的,但是光说不练,假把式,最好能编程并且运行,最好能有一款神 ...

最新文章

  1. Mybatis3.3.x技术内幕(十三):Mybatis之RowBounds分页原理
  2. win10 连接android,win10系统连接安卓手机usb没反应的解决方法
  3. mybatis批量更新报错XXXXX-Inline
  4. python——爬虫实现网页信息抓取
  5. linux进程管理 ps,Linux - 进程管理,ps与top
  6. oracle sql 匹配 一位,关于在SQL中查找匹配间隔:在SQL中查找匹配间隔-Oracle
  7. c语言找最长串指针改错,2013年计算机二级C语言上机试题及解析35
  8. 一、kafka安装下载与kafka初步应用
  9. pytorch中的反卷积的output_padding参数
  10. 数据治理之元数据管理实践
  11. 成年人夜生活的自救! 华熙LIVE·五棵松放大招
  12. background属性用法总结
  13. 思科模拟器叫什么_思科在过30年都证明了自己一直都是全球第一的网络公司
  14. 计算机图形学一:变换矩阵-Transformation Matrices
  15. php 加密算法+接口安全技术
  16. php 汉字、字母验证码 例子
  17. realme手机用什么蓝牙耳机好?2022公认音质最好的蓝牙耳机
  18. 计算机考证证件照没有露耳朵
  19. 西部世界:人的大部分痛苦来自控制一切的执念
  20. Flask前后端分离02

热门文章

  1. Windows10桌面优化 | 如何修改图标大小 | 如何把win10快捷方式小箭头去掉
  2. vue 免费个人博客模板
  3. get与navigate方法
  4. uniapp中uni.navigateTo传递变量
  5. uni-app中$navigateTo失效
  6. 一个img文件-实验吧
  7. HTB靶场 Shared
  8. 基于中科院-CASIA-GaitDatasetB步态图像轮廓数据库的步态周期检测与步态角度特征MATLAB源码介绍
  9. 什么是互联网产品经理
  10. 糖友如何选择正确的饮食计划