支付宝支付和微信支付

支付模块其实很早就做完了的,只是当初说需要银联支付,打算一起做完再写的,结果现在说银联支付不做了,好咯现在也没谁用银联支付这个坑爹的东西了·····
另外还有就是懒癌发作了所以拖到现在,不说废话了。(写完再说)

说明下,本文讲的是在后台生成支付密钥的情况下使用,实际上一般也不允许你自己生成的。

官方文档地址,其实官方文档讲的挺清楚了,我记录下简化版而已

支付宝开放平台

首先添加依赖·······(废话来的)
compile files('libs/alipaySdk-20161009.jar')

然后就可以用了······
因为我没有加入网页支付,也就是说手机上必须装有支付宝才能使用,这是最最简单的方法

//支付宝回调
private final int SDK_PAY_FLAG = 1;


 * call alipay sdk pay. 调用SDK支付
 */
public void alipay(final String payInfo) {       //这里的payInfo是后台返回的,前端不用关心,用就是了,错了是后台的问题
    Runnable payRunnable = new Runnable() {

        @Override
        public void run() {
            PayTask alipay = new PayTask(PayPhotoActivity.this);
            Map<String, String> result = alipay.payV2(payInfo, true);
            Message msg = new Message();
            msg.what = SDK_PAY_FLAG;
            msg.obj = result;
            mHandler.sendMessage(msg);
        }
    };

    Thread payThread = new Thread(payRunnable);
    payThread.start();
}

上面是使用的,接着是回调

@SuppressLint("HandlerLeak")
private Handler mHandler = new Handler() {
    @SuppressWarnings("unused")
    public void handleMessage(Message msg) {
        switch (msg.what) {
            case SDK_PAY_FLAG: {
                @SuppressWarnings("unchecked")
                PayResult payResult = new PayResult((Map<String, String>) msg.obj);
                /**
                 对于支付结果,请商户依赖服务端的异步通知结果。同步通知结果,仅作为支付结束的通知。
                 */
                String resultInfo = payResult.getResult();// 同步返回需要验证的信息
                String resultStatus = payResult.getResultStatus();
                // 判断resultStatus 为9000则代表支付成功
                if (TextUtils.equals(resultStatus, "9000")) {
                    // 该笔订单是否真实支付成功,需要依赖服务端的异步通知。
                    //这里是支付成功,做后续操作
                } else {
                    // 该笔订单真实的支付结果,需要依赖服务端的异步通知。
                    showToast("支付失败");
                }
                break;
            }
            default:
                break;
        }
    }
};

好了支付宝的支付就是这么简单,简单到没人性······(曾经我以为不容易来着)

接下来是微信支付,这个略坑

微信支付文档

导包,吐槽下这个名字······
compile files('libs/libammsdk.jar')

然后建在工程里新建一个类,外面的包名给类名要一毛一样

![这样的]UU.png](http://upload-images.jianshu.io/upload_images/3412698-8779d8da66d421fa.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

这个类里面是这样子的

  public class WXPayEntryActivity extends BaseActivity implements IWXAPIEventHandler {
    
    private static final String TAG = "MicroMsg.SDKSample.WXPayEntryActivity";
    
    private IWXAPI api;
    private PayLongActivity payLongActivity ;

    // APP_ID 替换为你的应用从官方网站申请到的合法appId
    public static final String APP_ID = "11111111111111";
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.pay_result);
        
        api = WXAPIFactory.createWXAPI(this, APP_ID);
        api.handleIntent(getIntent(), this);
    }

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

    @Override
    public void onReq(BaseReq req) {
    }

    @Override
    public void onResp(BaseResp resp) {

        if (resp.getType() == ConstantsAPI.COMMAND_PAY_BY_WX) {
            if (resp.errCode==1) {
                sendBroadcast(new Intent(ConstantsConfig.ReceiverConfig.WX_PAY_SUCCESS));//成功广播
            }
            else sendBroadcast(new Intent(ConstantsConfig.ReceiverConfig.WX_PAY_FAIL));//失败广播
            finish();
        }
    }

没什么用的我都删了,当然是对我来说没什么用
这里吐槽下微信支付回调要另外弹出这个Activity,来告诉你成功还是失败,简直影响体验······
所以我修改成用广播通知,这个界面直接finish掉。
其实按照我的习惯用RxBus最好最方便了,之前有写过的,这个项目不允许就算了,后续回调你们自己看着来吧。

好,我们继续,这里是回调,接下来讲使用:

同样支付的数据都要从后台拿,微信的数据也是还要自己解析···我直接把json传进来了,
反正你只要把req里面的这几个参数赋值对了就行,怎么传过来都好

    private void wxpay(JSONObject json) throws JSONException {
        IWXAPI wxapi = WXAPIFactory.createWXAPI(this, null);
       //这个跟回调那里一样要拿到后台申请的那个ID
        wxapi.registerApp("11111111111");

        if (null != json && !json.has("retcode")) {
            PayReq req = new PayReq();
            //req.appId = "wxf8b4f85f3a794e77";  // 测试用appId
            req.appId = json.getString("appId");
            req.partnerId = json.getString("partnerId");
            req.prepayId = json.getString("prepayId");
            req.nonceStr = json.getString("nonceStr");
            req.timeStamp = json.getString("timeStamp");
            req.packageValue = json.getString("packageValue");
            req.sign = json.getString("sign");
            req.extData = "app data"; // optional
//            Toast.makeText(PayPhotoActivity.this, "正常调起支付", Toast.LENGTH_SHORT).show();
            // 在支付之前,如果应用没有注册到微信,应该先调用IWXMsg.registerApp将应用注册到微信
            wxapi.sendReq(req);
        } else {
//            Toast.makeText(PayPhotoActivity.this, "返回错误"+json.getString("retmsg"), Toast.LENGTH_SHORT).show();
        }
    }

好,微信代码里面的就到这里,这还不算坑,还过的去

问题出在要配置后台····

就是这个坑爹的东西

包名好说,复制粘贴就好

说的是应用签名

AS里面获取MD5的方法 http://jingyan.baidu.com/article/cbf0e500aca3232eaa289301.html

拿到后应该是这样的 81:6F:96:F7:2F:AE:7D:04:D4:73:F9:C5:EB:1C:4C:83

我们要吧冒号全部去掉,然后字母全部变成小写
去掉冒号一个txt自行解决
816F96F72FAE7D04D473F9C5EB1C4C83
然后我是用AS的快捷键 ctrl+shift+U 搞定的,你们有好的方法也行·······
816f96f72fae7d04d473f9c5eb1c4c83
好了这个就是填上去的应用签名了

注意这只是编译版本的

打包后你要重新配置,签名就是拿签名文件keystore里面的,获取方法嘛
cmd里面用这个代码 ***.keystore 为文件路径
keytool -v -list -keystore ***.keystore

这坑爹的东西没有配置对的话,第一次调用微信支付是可以的,然后第二次就不行了,
那时死命找原因才发现是这个地方的问题,话说这个也要我们弄也是坑······

好了支付宝支付和微信支付的就这么点东西,其实并不难······

接着,我想重新找家公司了,有人愿意要我或者帮忙内推下的么,有愿意帮忙的私信下我呗,万分感谢~

最后来句迟来的

祝大家新年大吉吧

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,378评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,356评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,702评论 0 342
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,259评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,263评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,036评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,349评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,979评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,469评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,938评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,059评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,703评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,257评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,262评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,485评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,501评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,792评论 2 345

推荐阅读更多精彩内容