sdk-mini-game.js 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315
  1. const asdkUrl = "https://h5sdk.szzyqw.com"
  2. let a_params = ''
  3. let interval = ''
  4. let a_gameid = "666666100216"//游戏ID,我方分配
  5. let a_gamekey = "9f9dcda16864e268"//游戏KEY,我方分配
  6. let a_pub = "oppominih5sdk_cnlccxx_001"//游戏PUB,我方分配
  7. let a_appid = "32932575"
  8. let c_cpid = ""
  9. let iscreate = 0
  10. let cdate = ''
  11. let isone = 0
  12. let isend = 0
  13. function asdkRequestPsot(url, data) {
  14. return new Promise((resolve, reject) => {
  15. var xhr = new XMLHttpRequest();
  16. xhr.open('POST', asdkUrl+url);
  17. xhr.setRequestHeader('Accept', 'application/json');
  18. xhr.setRequestHeader('charset', 'UTF-8');
  19. xhr.onreadystatechange = function () {
  20. if (xhr.status === 200) {
  21. // 获取服务器返回的数据后调用文档的发起支付接口
  22. console.log('接口返回: ' + JSON.stringify(xhr.response));
  23. var a_res = JSON.parse(xhr.response);
  24. resolve(a_res)
  25. }
  26. else {
  27. let a_res = {'code':-1,'msg':'error'}
  28. resolve(a_res)
  29. }
  30. };
  31. xhr.send(JSON.stringify(data));
  32. });
  33. }
  34. // 初始化
  35. function asdkInit(callback) {
  36. qg.hasShortcutInstalled({
  37. success: function(status) {
  38. if(status) {
  39. iscreate = 1
  40. console.log('已创建')
  41. }else{
  42. iscreate = 0
  43. console.log('未创建')
  44. }
  45. }
  46. })
  47. var result = localStorage.getItem("keysdK")
  48. if(result!=""&&result!=null&&result!="null"){
  49. isone = JSON.parse(result).isone
  50. isend = JSON.parse(result).isend
  51. cdate = JSON.parse(result).cdate
  52. }
  53. if(iscreate==0){
  54. if(cdate==""){
  55. cdate = getDate()
  56. localStorage.setItem("keysdK", '{"isone":1,"isend":0,"cdate":"'+cdate+'"}')
  57. createIcon(0)
  58. }else{
  59. if(getDate()==cdate){//缓存时间一致
  60. if(isone==0){
  61. localStorage.setItem("keysdK", '{"isone":1,"isend":'+isend+',"cdate":"'+cdate+'"}')
  62. createIcon(0)
  63. }
  64. }else{
  65. cdate = getDate()
  66. localStorage.setItem("keysdK", '{"isone":1,"isend":'+isend+',"cdate":"'+cdate+'"}')
  67. createIcon(0)
  68. }
  69. }
  70. }
  71. let url = '/mini/datatrans.php?action=mini_init';
  72. let data = {
  73. "a_gameid": a_gameid,
  74. "a_gamekey": a_gamekey,
  75. "a_pub": a_pub,
  76. "a_appid": a_appid,
  77. "c_cpid": c_cpid,
  78. }
  79. asdkRequestPsot(url, data).then(a_res => {
  80. callback(a_res);
  81. })
  82. }
  83. // 登录
  84. function asdkLogin(callback) {
  85. login().then(res => {//每次都重新登录
  86. callback(res)
  87. })
  88. }
  89. function login(){
  90. return new Promise((resolve, reject) => {
  91. if (qg.getSystemInfoSync().platformVersionCode >= 1040) {
  92. qg.login({
  93. success: function(res) {
  94. let url = '/othersdkdatatrans.php?sdkabbr=oppominih5sdk&a_pub='+a_pub+'&a_gameid='+a_gameid+'&a_gamekey='+a_gamekey;
  95. let data = {
  96. "a_gameid": a_gameid,
  97. "a_gamekey": a_gamekey,
  98. "a_pub": a_pub,
  99. "a_appid": a_appid,
  100. "c_cpid": c_cpid,
  101. "account": res.uid,
  102. "session": res.token
  103. }
  104. asdkRequestPsot(url, data).then(a_res => {
  105. if (a_res.code == 0) {
  106. a_params = {
  107. "a_accountid": a_res.data.account.accountid,
  108. "a_sessionid": a_res.data.account.sessionid,
  109. "a_openid": a_res.data.account.extdata1,
  110. "a_token": res.token,
  111. }
  112. }
  113. resolve(a_res)
  114. })
  115. },
  116. fail: function(res){
  117. console.log('获取用户信息失败' + JSON.stringify(res));
  118. let data = {'code':-1,'msg':'获取用户信息失败' + JSON.stringify(res)}
  119. resolve(data)
  120. }
  121. })
  122. }else{
  123. console.log('版本不符合,请更新');
  124. let data = {'code':-1,'msg':'版本不符合,请更新'}
  125. resolve(data)
  126. }
  127. })
  128. }
  129. function asdkSendRole(roleInfo,callback) {
  130. let url = '/datatrans.php?action=mini_uploadinfo';
  131. let data = {
  132. "a_gameid": a_gameid,
  133. "a_gamekey": a_gamekey,
  134. "a_pub": a_pub,
  135. "a_sessionid": a_params.a_sessionid,
  136. "a_accountid": a_params.a_accountid,
  137. "playerid": roleInfo.playerid,
  138. "playername": roleInfo.playername,
  139. "playerlevel": roleInfo.playerlevel,
  140. "serverid": roleInfo.serverid,
  141. "servername": roleInfo.servername
  142. }
  143. asdkRequestPsot(url, data).then(res => {
  144. callback(res)
  145. })
  146. }
  147. // 支付
  148. function asdkPay(payOrder, payCallback) {
  149. //查询支付列表
  150. let url = '/datatrans.php?action=generatepayorder'
  151. let data = {
  152. "callbackurl": payOrder.callbackurl,
  153. "paymoney": payOrder.paymoney*100,
  154. "custominfo": payOrder.custominfo,
  155. "customorderid": payOrder.customorderid,
  156. "productdesc": payOrder.productdesc,
  157. "productfeecode": payOrder.productfeecode,
  158. "appid":a_appid,
  159. "openid":a_params.a_token,
  160. "engineVersion":qg.getSystemInfoSync().platformVersionCode,
  161. }
  162. payOrder.a_gameid = a_gameid;
  163. payOrder.a_gamekey = a_gamekey;
  164. payOrder.a_pub = a_pub;
  165. payOrder.a_sessionid = a_params.a_sessionid;
  166. payOrder.a_accountid = a_params.a_accountid;
  167. payOrder.extdata = JSON.stringify(data);
  168. asdkRequestPsot(url, payOrder).then(a_res => {
  169. if (a_res.code == 0) {
  170. qg.pay({
  171. appId:a_appid,
  172. token: a_params.a_token,
  173. timestamp: a_res.data.extdata1,
  174. paySign: a_res.data.extdata2,
  175. orderNo:a_res.data.extdata3,
  176. success: function(res){
  177. console.log("支付成功")
  178. payCallback(ret)
  179. },
  180. fail: function(res){
  181. console.log("支付失败")
  182. payCallback(ret)
  183. }
  184. });
  185. }else{
  186. console.log("支付失败")
  187. payCallback({'code':-1,'msg':a_res.msg})
  188. }
  189. })
  190. }
  191. function asdkQuit(){
  192. console.log('oppo系统退出无效')
  193. var result = localStorage.getItem("keysdK")
  194. if(result!=""&&result!=null&&result!="null"){
  195. isone = JSON.parse(result).isone
  196. isend = JSON.parse(result).isend
  197. cdate = JSON.parse(result).cdate
  198. }
  199. if(iscreate==0){
  200. if(getDate()==cdate){//缓存时间一致
  201. if(isend==0){
  202. localStorage.setItem("keysdK", '{"isone":'+isone+',"isend":1,"cdate":"'+cdate+'"}')
  203. createIcon(1)
  204. }else{
  205. qg.exitApplication()
  206. }
  207. }else{
  208. cdate = getDate()
  209. localStorage.setItem("keysdK", '{"isone":'+isone+',"isend":1,"cdate":"'+cdate+'"}')
  210. createIcon(1)
  211. }
  212. }else{
  213. qg.exitApplication()
  214. }
  215. }
  216. function asdkCreateIcon(payCallback){
  217. qg.installShortcut({
  218. success: function() {
  219. iscreate = 1
  220. let data = {'code':0,'msg':'创建icon成功'}
  221. payCallback(data)
  222. },
  223. fail:function(){
  224. let data = {'code':-1,'msg':'创建icon失败'}
  225. payCallback(data)
  226. },
  227. })
  228. }
  229. function getDate(){
  230. var date = new Date()
  231. var year = date.getFullYear()
  232. var month = date.getMonth() + 1
  233. var strDate = date.getDate()
  234. return year+""+month+""+strDate
  235. }
  236. function createIcon(type){
  237. qg.installShortcut({
  238. success: function() {
  239. iscreate = 1
  240. console.log('创建icon成功')
  241. if(type==1)
  242. qg.exitApplication()
  243. },
  244. fail:function(){
  245. if(type==1)
  246. qg.exitApplication()
  247. }
  248. })
  249. }
  250. function asdkRewardedAd(payOrder, payCallback){
  251. try {
  252. console.log("创建OPPO激励视频广告")
  253. this.videoAd = window['qg'].createRewardedVideoAd({
  254. adUnitId: payOrder
  255. });
  256. this.videoAd.load()
  257. this.videoAd.onLoad(() => {
  258. this.videoAd.show();
  259. })
  260. this.videoAd.onError(err => {
  261. console.log('onError:' + JSON.stringify(err));
  262. let data = {'code':-1,'msg':'激励视频广告加载失败:'+JSON.stringify(err)}
  263. payCallback(data)
  264. })
  265. this.videoAd.onClose((res) => {
  266. if (res == undefined) {
  267. //看完广告,给奖励
  268. console.log("正常播放结束,可以下发游戏奖励")
  269. let data = {'code':0,'msg':'播放成功'}
  270. payCallback(data)
  271. } else {
  272. // 用户点击了【关闭广告】按钮
  273. console.log('==> oppoRewardVideoAd onClose', res)
  274. if (res.isEnded) {
  275. //看完广告,给奖励
  276. console.log("正常播放结束,可以下发游戏奖励");
  277. let data = {'code':0,'msg':'播放成功'}
  278. payCallback(data)
  279. } else {
  280. console.log("播放中途退出,不下发游戏奖励");
  281. let data = {'code':1,'msg':'播放失败,不提供奖励'}
  282. payCallback(data)
  283. }
  284. }
  285. });
  286. } catch (error) {
  287. let data = {'code':-1,'msg':'激励视频广告加载失败:'+JSON.stringify(error)}
  288. payCallback(data)
  289. }
  290. }
  291. qg.asdk = {
  292. asdkInit,
  293. asdkLogin,
  294. asdkSendRole,
  295. asdkPay,
  296. asdkQuit,
  297. asdkCreateIcon,
  298. asdkRewardedAd,
  299. }