【AppBuilder】微信 App 支付
准备工作
注册微信开放平台账号
访问 https://open.weixin.qq.com/,使用公司邮箱注册支付宝账号。
注意:微信开放平台和公众平台是互相独立的两个平台。
创建移动应用
按照要求填写相关表单,填写 Android 资料时要注意
- 包名必须和 App 的包名一致。
- 应用签名必须与发布 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
- 统一下单,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/ - 生成支付请求参数,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
导入插件
- 在 AppBuilder 中右击 Plugins 文件夹,导入第三方插件 zip 文件。
- 右击工程节点,选择 Properties,左侧选择 Plugins,在最下方找到 WeChat,单击左边的箭头,单击 Configure 按钮,输入 WECHATAPPID。
- 保存。
修改插件配置
打开 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 查看系统日志。
- 根据下文,把手机连接到 AppBuilder
http://docs.telerik.com/platform/appbuilder/cordova/running-on-devices/running-on-connected-devices/google-android-devices/connect-android - 在资源管理器中打开 C:\Users\[当前登录用户]\AppData\Local\Temp\adb,找到 adb.exe,执行 adb logcat > c:\logcat.txt。
- 手机中的系统日志将会即时写入到 c:\logcat.txt 中。
- 按下 Ctrl + C 结束日志记录。
- 查看日志内容。
posted on 2016-09-09 18:16 CsharpStyle 阅读(327) 评论(0) 编辑 收藏 举报