准备工作
1、注册微信支付商户账号:首先需要在微信支付官网注册一个商户账号,并完成实名认证。
(图片来源网络,侵删)2、开通微信支付功能:在商户平台中开通微信支付功能,获取到商户号、应用ID等信息。
3、下载微信SDK:从微信开放平台下载对应的Android SDK,并将其导入到项目中。
4、配置微信支付参数:在项目中配置微信支付的相关参数,如appId、timeStamp、nonceStr、package等。
接入微信人脸支付
1、初始化微信SDK:在Application中初始化微信SDK,设置相关回调接口。
public class MyApplication extends Application { @Override public void onCreate() { super.onCreate(); // 初始化微信SDK Tencent.init(this); } }
2、申请人脸识别权限:在AndroidManifest.xml中申请人脸识别权限。
<usespermission android:name="android.permission.CAMERA" /> <usesfeature android:name="android.hardware.camera" /> <usesfeature android:name="android.hardware.camera.autofocus" /> <usespermission android:name="android.permission.RECORD_AUDIO" /> <usespermission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <usespermission android:name="android.permission.READ_EXTERNAL_STORAGE" />
3、实现人脸识别结果的回调接口:实现IWXAPIEventHandler接口,重写onPayResult方法。
public class MyWXPayEntryActivity extends AppCompatActivity implements IWXAPIEventHandler { private WXPay mWXPay; private IWXAPI api; private static final int REQUEST_CODE_FACE = 0; // 请求码,用于识别结果回调时判断是哪个请求的结果 private static final String FACE_PAY_URL = "https://api.mch.weixin.qq.com/facepay/transaction"; // 人脸支付接口地址 private static final String FACE_PAY_SUCCESS = "SUCCESS"; // 人脸支付成功标识 private static final String FACE_PAY_FAIL = "FAIL"; // 人脸支付失败标识 private static final String FACE_PAY_UNKNOWN = "UNKNOWN"; // 未知状态标识 private static final String FACE_PAY_CANCEL = "CANCEL"; // 取消支付标识 private static final String FACE_PAY_USER_CANCEL = "USER_CANCEL"; // 用户取消支付标识 private static final String FACE_PAY_OTHER = "OTHER"; // 其他错误标识 private static final String FACE_PAY_TIPS = "请对准摄像头进行人脸识别"; // 提示信息 private static final int FACE_PAY_TIPS_TIME = 2000; // 提示信息显示时长(毫秒) private boolean isFacePaying = false; // 是否正在进行人脸支付操作的标志位 private String facePayErrorMsg = ""; // 人脸支付错误信息 private String facePayResult = FACE_PAY_UNKNOWN; // 人脸支付结果标识 private long facePayTimeStamp = System.currentTimeMillis(); // 人脸支付时间戳 private String facePayNonceStr = ""; // 人脸支付随机字符串 private String facePayPackage = "facepay"; // 人脸支付包名,固定为"facepay" private String facePaySignType = "MD5"; // 人脸支付签名类型,固定为"MD5" private String facePaySpbillCreateIp = "127.0.0.1"; // 人脸支付终端IP地址,根据实际情况填写 private String facePayTradeType = "JSAPI"; // 人脸支付交易类型,固定为"JSAPI" private String facePayAppid = "your app id"; // 你的appId,替换为你自己的appId private String facePayMchId = "your mch id"; // 你的商户号,替换为你自己的商户号 private String facePaySubAppid = "your sub app id"; // 你的子商户号,替换为你自己的子商户号(如果有的话) private String facePaySubMchId = "your sub mch id"; // 你的子商户号,替换为你自己的子商户号(如果有的话) private String facePayKey = "your key"; // 你的人脸支付密钥,替换为你自己的密钥(由微信商户平台生成) private int facePaySceneId = WechatConstants.FACEPAY_SCENE; // 人脸支付场景ID,固定为WechatConstants.FACEPAY_SCENE(值为1006) private int facePayAmount = 1; // 人脸支付金额,单位为分,根据实际情况填写 private int facePayCurrency = WechatConstants.CNY; // 人脸支付货币类型,固定为WechatConstants.CNY(值为156) private int facePayRetCode = 1; // 人脸支付返回码,初始值为1(表示未开始执行) private int facePayErrCode = 1; // 人脸支付错误码,初始值为1(表示未开始执行) private int facePayTimeOut = 1; // 人脸支付超时时间(毫秒),初始值为1(表示未开始执行) private int facePayRespCode = 1; // 人脸支付响应码,初始值为1(表示未开始执行) private int facePayRespMsgId = 1; // 人脸支付响应消息ID,初始值为1(表示未开始执行) private int facePayChannelType = WechatConstants.CHANNEL_TYPE; // 人脸支付渠道类型,固定为WechatConstants.CHANNEL_TYPE(值为4) private int facePayNotifyId = 1; // 人脸支付通知ID,初始值为1(表示未开始执行) private int facePayTradeNo = 1; // 人脸支付订单号,初始值为1(表示未开始执行) private int facePayAuthType = WechatConstants.AUTHTYPE_IDENTITY; // 人脸支付认证类型,固定为WechatConstants.AUTHTYPE_IDENTITY(值为3) private int facePayAuthState = WechatConstants.AUTHSTATE_FAILED; // 人脸支付认证状态,初始值为WechatConstants.AUTHSTATE_FAILED(表示未开始执行) // ...其他成员变量... }
4、启动人脸识别流程:在需要启动人脸识别的地方调用startFacePay方法。
public void startFacePay() { if (!isFacePaying) { // 如果当前没有正在进行的人脸支付操作,则可以启动新的人脸识别流程 isFacePaying = true; // 将标志位设置为true,表示正在进行人脸识别操作 showFaceTips(); // 显示提示信息,提示用户对准摄像头进行人脸识别操作 requestFaceAuth(); // 请求人脸识别认证操作,传入相应的参数和回调接口实例化对象(this)作为参数值即可启动人脸识别流程了。
最新评论
本站CDN与莫名CDN同款、亚太CDN、速度还不错,值得推荐。
感谢推荐我们公司产品、有什么活动会第一时间公布!
我在用这类站群服务器、还可以. 用很多年了。