【AppBuilder】微信 App 支付

准备工作

注册微信开放平台账号

访问 https://open.weixin.qq.com/,使用公司邮箱注册支付宝账号。

注意:微信开放平台和公众平台是互相独立的两个平台。

 

创建移动应用

按照要求填写相关表单,填写 Android 资料时要注意

  1. 包名必须和 App 的包名一致。
  2. 应用签名必须与发布 App 时使用的 key 一致,应用签名可以通过微信提供的工具获取,工具下载地址:
    https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419319167&token=340f9b87d59724abef1562bcccb41ee2ca90fca1&lang=zh_CN
    工具使用方法:在手机上安装发布的 App 和工具,打开工具,输入包名即可获取对应的应用签名。

 

程序开发

Web Api

  1. 统一下单,API 说明:https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=9_1
    根据要求编写 Web Api,如遇签名错误,可使用微信签名测试工具进行比对:
    https://pay.weixin.qq.com/wiki/tools/signverify/
  2. 生成支付请求参数,API 说明:https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=9_12&index=2
    该 Api 为 Android 侧的 Api,但是 Api 的输入参数,应该由服务器端生成,包括签名。

 

下载第三方插件

插件下载地址:https://github.com/xu-li/cordova-plugin-wechat

 

导入插件

  1. 在 AppBuilder 中右击 Plugins 文件夹,导入第三方插件 zip 文件。
  2. 右击工程节点,选择 Properties,左侧选择 Plugins,在最下方找到 WeChat,单击左边的箭头,单击 Configure 按钮,输入 WECHATAPPID。
  3. 保存。

 

修改插件配置

打开 plugin.xml,修改 Android 配置项

<config-file target="AndroidManifest.xml" parent="/manifest/application">
    <activity
        android:name="com.telerik.WeChatPayTest.wxapi.WXPayEntryActivity"
        android:label="@string/app_name"
        android:exported="true"
        android:launchMode="singleTop">
    </activity>
</config-file>

使用上面的 android:label="@string/app_name",替换原有的 android:label。

<source-file src="src/android/EntryActivity.java" target-dir="src/com/telerik/WeChatPayTest/wxapixu" />
<source-file src="src/android/WXPayEntryActivity.java" target-dir="src/com/telerik/WeChatPayTest/wxapixu" />

在配置文件最下面的 <source-file> 标记下,添加两行。

 

修改文件包名并创建回调文件夹结构

EntryActivity.java, WXEntryActivity.java, WXPayEntryActivity.java

修改以上3个文件第一行包名为“App 包名 + .wxapi”,例如 App 包名为 com.test,则结果包名为 com.test.wxapi。

这么做的原因是微信支付在回调时,只会调用上述命名规则的类。

 

编写 html 程序

从 Web Api 中获取支付参数,调用支付方法:

var params = {
    partnerid: '', // merchant id
    prepayid: '', // prepay id
    noncestr: '', // nonce
    timestamp: '', // timestamp
    sign: '', // signed string
};

Wechat.sendPaymentRequest(params, function () {
    alert("Success");
}, function (reason) {
    alert("Failed: " + reason);
});

 

程序部署

  • AppBuilder 的模拟器不支持插件,所以插件只能在手机上部署和调试。
  • 使用 Build 功能生成 apk,调用微信支付接口不会打开微信程序,因为 Build 时无法选择 Certificate,无法对 apk 进行签名,所以微信拒绝执行。
  • 使用 Publish 功能生成 apk,可选择 Certificate,具备打开微信的可能。
    如果需要从 .keystore 文件导入 Certificate,可参考:
    http://www.telerik.com/forums/importing-keystore-to-icenium
  • 当手机连接到 AppBuilder 时,可使用 Build and Deploy,便于调试。

 

程序调试

程序编译时,可能会出现编译错误,编辑错误可以在 AppBuilder 的 Log 窗口查看,也可以打开日志文件:

C:\Users\[当前登录用户]\AppData\Local\Telerik\BlackDragon\Logs

注意:由于插件代码或者配置错误导致编译失败,关键信息往往在 warning 里面。

 

程序运行时,可能会发生闪退,例如在微信回调时,找不到程序中指定名称的类。发生闪退时,只能通过 logcat 查看系统日志。

  1. 根据下文,把手机连接到 AppBuilder
    http://docs.telerik.com/platform/appbuilder/cordova/running-on-devices/running-on-connected-devices/google-android-devices/connect-android
  2. 在资源管理器中打开 C:\Users\[当前登录用户]\AppData\Local\Temp\adb,找到 adb.exe,执行 adb logcat > c:\logcat.txt。
  3. 手机中的系统日志将会即时写入到 c:\logcat.txt 中。
  4. 按下 Ctrl + C 结束日志记录。
  5. 查看日志内容。

 

posted on 2016-09-09 18:16  CsharpStyle  阅读(322)  评论(0编辑  收藏  举报