守望者--AIR技术交流

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

搜索
热搜: ANE FlasCC 炼金术
查看: 3820|回复: 1
打印 上一主题 下一主题

[平台接入] 移动mm支付ane使用教程

[复制链接]
  • TA的每日心情
    擦汗
    2018-4-10 15:18
  • 签到天数: 447 天

    [LV.9]以坛为家II

    1742

    主题

    2094

    帖子

    13万

    积分

    超级版主

    Rank: 18Rank: 18Rank: 18Rank: 18Rank: 18

    威望
    562
    贡献
    29
    金币
    52694
    钢镚
    1422

    开源英雄守望者

    跳转到指定楼层
    楼主
    发表于 2015-4-23 16:06:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    移动mm支付ane使用教程

    flash android移动应用中使用移动MM的支付功能








    简介
      移动mm支付通过短信的方式实现付费,因为方便,所以付费率比较高。flash 开发也能通过flash 移动MM支付ANE来实现在air应用里面添加移动MM短信支付的功能。支持Android平台
    注册移动MM开发者账号
      在开始代码之前,需要上移动MM开发者网站http://dev.10086.cn/注册账号,并申请移动mm支付权限,等待审核通过。 通过后就可以获得应用的信息从而进行后面的开发测试。
    as3代码里面添加移动支付
      使用移动MM,第一步就是要设置应用ID和key值,这样才能进行后面的调用。

    1.         PayExtension.getInstance().initPay("your appID","your appKey");
    2.     PayExtension.getInstance().addEventListener(PayEvent.onInitFinish,onInitFinish);
    3.         protected function onInitFinish(event:PayEvent):void
    4.     {
    5.         if(event.type==PayEvent.onInitFinish){
    6.                  trace("初始化完成,后面可以支付了");
    7.         }
    8.     }
    复制代码
    开始支付
      注意不要在上面事件输出处直接调用下面的支付接口,而应该通过点击支付按钮之类的进行调用,否则会失败。
    1. PayExtension.getInstance().addEventListener(PayEvent.onPurchaseFinish,onPayFinish);
    2.         PayExtension.getInstance().purchase("your paycode",1);
    3.         //PayExtension.getInstance().query("your pay code");
    4.             protected function onPayFinish(event:PayEvent):void
    5.                 {
    6.         trace(event.type,event.data);
    7.         }
    复制代码
    添加移动MM支付的配置
      编写代码后需要配置xxx-app.xml才能进行正常调用。其中包括权限配置和activity配置
    配置有点长,不要晕过去了。下面还有事情。 找到配置中的air.demo.debug并替换为你自己的包名
    如果不经过处理,包名称是应用ID前面加个air.前缀,如果是debug包,尾部加个.debug后缀
    1. <manifest android:installLocation="auto">
    2.         <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    3.     <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    4.     <uses-permission android:name="android.permission.SEND_SMS" />
    5.     <uses-permission android:name="android.permission.INTERNET" />
    6.     <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    7.     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    8.     <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
    9.          <application>
    10.          <service
    11.             android:name="mm.purchasesdk.iapservice.PurchaseService"
    12.             android:exported="true" >
    13.             <intent-filter android:priority="301" >
    14.                 <action android:name="com.aspire.purchaseservice.BIND" />
    15.                 <category android:name="android.intent.category.DEFAULT" />
    16.             </intent-filter>
    17.             <intent-filter android:priority="301" >
    18.                 <action android:name="air.demo.debug.purchaseservice.BIND" />
    19.                 <category android:name="android.intent.category.DEFAULT" />
    20.             </intent-filter>
    21.             <intent-filter android:priority="301" >
    22.                 <action android:name="android.intent.action.MAIN" />
    23.                 <category android:name="android.intent.category.SAFIAP.COMPONENT" >
    24.                 </category>
    25.             </intent-filter>
    26.         </service>
    27.         <activity
    28.             android:name="mm.purchasesdk.iapservice.BillingLayoutActivity"
    29.             android:configChanges="orientation|keyboardHidden"
    30.             android:theme="@android:style/Theme.Translucent" >
    31.             <intent-filter android:priority="301" >
    32.                 <action android:name="air.demo.debug.com.mmiap.activity" />
    33.                 <category android:name="android.intent.category.DEFAULT" />
    34.             </intent-filter>
    35.         </activity>
    36.         <service
    37.             android:name="safiap.framework.SafFrameworkManager"
    38.             android:exported="true"
    39.             android:process="safiap.framework" >
    40.             <intent-filter android:priority="630" >
    41.                         <action android:name="safiap.framework.sdk.ISAFFramework" />
    42.             </intent-filter>
    43.             <intent-filter android:priority="630" >
    44.                 <action android:name="safiap.framework.ACTION_START_DOWNLOAD" />
    45.                 </intent-filter>
    46.                 <intent-filter android:priority="630" >
    47.                 <action android:name="safiap.framework.ACTION_CHECK_UPDATE" />
    48.             </intent-filter>
    49.         </service>
    50.         <receiver android:name="safiap.framework.CheckUpdateReceiver" >
    51.             <intent-filter>
    52.                 <action android:name="safiap.framework.ACTION_CANCEL_NOTIFICATION" />
    53.             </intent-filter>
    54.             <intent-filter>
    55.                 <action android:name="safiap.GET_SHARED_DATA" />
    56.             </intent-filter>
    57.             <intent-filter>
    58.                 <action android:name="safiap.framework.ACTION_SET_TIMER" />
    59.             </intent-filter>
    60.         </receiver>
    61.         <activity
    62.             android:name="safiap.framework.ui.UpdateHintActivity"
    63.             android:launchMode="singleInstance"
    64.             android:excludeFromRecents="true"
    65.             android:configChanges="orientation"
    66.             android:theme="@android:style/Theme.Translucent.NoTitleBar">
    67.             <intent-filter>
    68.                 <action android:name="safiap.framework.ACTION_TO_INSTALL" />
    69.             </intent-filter>
    70.             <intent-filter>
    71.                 <action android:name="safiap.framework.ACTION_TO_INSTALL_IAP" />
    72.             </intent-filter>
    73.             <intent-filter>
    74.                 <action android:name="safiap.framework.ACTION_NETWORK_ERROR_IAP" />
    75.             </intent-filter>
    76.             <intent-filter>
    77.                 <action android:name="safiap.framework.ACTION_NETWORK_ERROR_FRAMEWORK" />
    78.             </intent-filter>
    79.         </activity>
    80.         <service android:name="safiap.framework.logreport.monitor.handler.LogreportHandler" android:process=":remote"/>
    81.         </application>
    82. </manifest>
    复制代码

    打包和提交
      最激动人心,也是最恶心人的时刻到了,打包成apk产品,提交审核。 步骤按下面的来,不能乱也不能省
    • 按正常普通的方式导出APK
    • 用winrar打开但不要解压成文件夹,删除里面的META-INF文件夹
    • 把附带的apk_files目录里面的所有文件和文件夹拖进apk,放在根目录下
    • 把进过2,3步处理的apk移动到apk_sign\apk目录里面,然后双击sign.bat对修改后的apk签名,签名后的apk在apk_result目录下,也就是最终的apk




    注意事项
    • 不经过打包处理的apk调用函数会出错,没反应
    • flash cc,flash cs之类工具会自动修改xxx-app.xml文件,从而覆盖手动修改的配置,导致失败,解决方法是在flash cc的右侧导出面板里面设置手动管理权限
    • 默认adt会自动添加air.前缀,测试的apk还会自动添加.debug后缀。在设定包的时候千万注意








    本文来自:http://www.cuo.so/ane-list/mmpay-ane.html


    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
    收藏收藏 分享分享 支持支持 反对反对 微信
    守望者AIR技术交流社区(www.airmyth.com)
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2019-2-24 01:34
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    0

    主题

    38

    帖子

    868

    积分

    上士

    Rank: 5Rank: 5

    威望
    20
    贡献
    0
    金币
    14
    钢镚
    0
    沙发
    发表于 2017-10-24 02:39:34 | 只看该作者
    感谢分享!~
    守望者AIR技术交流社区(www.airmyth.com)
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    
    关闭

    站长推荐上一条 /4 下一条

    QQ|手机版|Archiver|网站地图|小黑屋|守望者 ( 京ICP备14061876号

    GMT+8, 2024-4-20 06:13 , Processed in 0.065719 second(s), 34 queries .

    守望者AIR

    守望者AIR技术交流社区

    本站成立于 2014年12月31日

    快速回复 返回顶部 返回列表