微信支付功能

    微信支付步骤及账号部分在微信相关功能中体现,此处不再赘述:微信相关功能

    账号注册号之后创建APP基本信息,APP信息,注意包名与签名填写必须正确。

    下面进入功能集成部分

    写在之前:微信支付因为安全以及后期需求问题,需要与后台相协作来共同完成支付的过程,APP端负责业务流程,下单由后台向微信服务器发起,所以支付的流程如下(就开发而言简化):

 拿到预付款订单信息之后调起微信支付就可以了。

 1、资源集成,两种方式:

    1)下载资源集成(已经不再推荐,最新的下载链接连接到的是Jcenter)。

    地址:微信资源下载

    下载之后解压得到  libammsdk.jar集成到项目中并进行依赖即可

   2)gradle方式集成。

dependencies {
    compile 'com.tencent.mm.opensdk:wechat-sdk-android-with-mta:+'
}

或者

dependencies {
    compile 'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:+'
}

第一个包含统计功能,第二个不包含统计功能。

2、权限注册:

    在Manifests进行相关的权限注册如下:

<uses-permission android:name="android.permission.INTERNET"/>

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>

<uses-permission android:name="android.permission.READ_PHONE_STATE"/>

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

3、将APP注册到微信(注意将appId替换成你自己注册的AppId):

IWXAPI weixinAPI=WXAPIFactory.createWXAPI(this, 'appiId', true);
weixinAPI.registerApp('appId');

4、微信支付的发起:

(具体参考微信支付开发文档

1)调用后台接口拿到相关的信息(预付款id等)

2)发起支付:

  PayReq request = new PayReq();
                request.appId = ‘appId’;
                request.partnerId = ‘商户id’;
                request.prepayId = ‘预付款订单id’;
                request.packageValue = "Sign=WXPay";
                request.nonceStr = ‘随机字符串’;
                request.timeStamp = ‘时间戳’;
                request.sign = ‘签名’;
   WeixinAPI.sendReq(request);

3)参数说明:

应用ID                 appid         String(32)          wx8888888888888888 微信开放平台审核通过的应用APPID
商户号                 partnerid         String(32)         1900000109 微信支付分配的商户号
预支付交易会话ID prepayid         String(32)         WX1217752501201407033233368018 微信返回的支付交易会话ID
扩展字段                 package         String(128) Sign=WXPay 暂填写固定值Sign=WXPay
随机字符串         noncestr         String(32)         5K8264ILTKCH16CQ2502SI8ZNMTM67VS 随机字符串,不长于32位。推荐随机数生成算法
时间戳                 timestamp String(10)          1412000000 时间戳,请见接口规则-参数规定
签名                         sign                 String(32)          C380BEC2BFD727A4B6845133519F3AD6 签名,详见签名生成算法注意:签名方式一定要与统一下单接口使用的一致

5、微信支付结果的接收:

新建Activity如下(注意在Manifest注册):

import com.orhanobut.logger.Logger;
import com.tencent.mm.sdk.constants.ConstantsAPI;
import com.tencent.mm.sdk.modelbase.BaseReq;
import com.tencent.mm.sdk.modelbase.BaseResp;
import com.tencent.mm.sdk.modelpay.PayResp;
import com.tencent.mm.sdk.openapi.IWXAPIEventHandler;
import com.weili.jinjin.pigeonracing.app.PigeonApp;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;

public class WXPayEntryActivity extends Activity implements IWXAPIEventHandler {

    private static final String TAG = "WXPayEntryActivity";

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        WeixinAPI.handleIntent(getIntent(), this);
    }

    @Override
    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
        setIntent(intent);
        WeixinAPI.handleIntent(intent, this);
    }

    @Override
    public void onReq(BaseReq req) {
    }

    @Override
    public void onResp(BaseResp resp) {
//        if (resp instanceof PayResp) {
//            Logger.e(TAG, "1-支付回调");
//            PayResp resp1 = (PayResp) resp;
//            switch (resp.errCode) {
//                case BaseResp.ErrCode.ERR_OK:
//                    Logger.e(TAG, "1-支付成功");
//                    break;
//                case BaseResp.ErrCode.ERR_USER_CANCEL:
//                    Logger.e(TAG, "1-支付取消");
//                    break;
//                case BaseResp.ErrCode.ERR_AUTH_DENIED:
//                    Logger.e(TAG, "1-支付拒绝");
//                    break;
//                default:
//                    Logger.e(TAG, "1-支付返回");
//                    break;
//            }
//        }
        if (resp.getType() == ConstantsAPI.COMMAND_PAY_BY_WX) {
            Logger.e(TAG, "支付回调");
            switch (resp.errCode) {
                case BaseResp.ErrCode.ERR_OK:
                    Logger.e(TAG, "支付成功");
                    break;
                case BaseResp.ErrCode.ERR_USER_CANCEL:
                    Logger.e(TAG, "支付取消");
                    break;
                case BaseResp.ErrCode.ERR_AUTH_DENIED:
                    Logger.e(TAG, "支付拒绝");
                    break;
                default:
                    Logger.e(TAG, "支付返回");
                    break;
            }
        }
        finish();
    }
}
 <activity
            android:name=".wxapi.WXPayEntryActivity"
            android:exported="true"
            android:launchMode="singleTop"
            android:label="@string/app_name"/>
6、根据收到的回调结果进行展示就可以了,但是此处的结果仅供参考,具体结果以后台的异步回调为准。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值