论 《客户端集成支付宝》

随着手机支付的日渐频繁和深入千家万户。现在app十有八九需要集成几种支付方式,前几天有个单位的技术小哥问我写过支付宝支付没?我笑了,因为我就是电商公司出身啊。今天就说说支付宝支付这点小事吧。(所有操作都是在在lib包下alipaySdk-20180601.jar添加以后的前提下)

很多新人,公司给规定,“你给咱们app集成支付宝方式”。作为小白的你,肯定会说:好的,马上就写。可是作为一个没写过的小白来说,无疑就是打开百度,搜索怎么集成,最终会找到支付宝的网页下载demo&sdk.当你下载下来之后你会被一大片看不懂的代码吓蒙圈,比如:↓

   boolean rsa2 = (RSA2_PRIVATE.length() > 0);
Map<String, String> params = OrderInfoUtil2_0.buildOrderParamMap(APPID, rsa2);
String orderParam = OrderInfoUtil2_0.buildOrderParam(params);

String privateKey = rsa2 ? RSA2_PRIVATE : RSA_PRIVATE;
String sign = OrderInfoUtil2_0.getSign(params, privateKey, rsa2);
final String orderInfo = orderParam + "&" + sign;


还有比如:↓

/** 支付宝支付业务:入参app_id */
public static final String APPID = "";

/** 支付宝账户登录授权业务:入参pid值 */
public static final String PID = "";
/** 支付宝账户登录授权业务:入参target_id值 */
public static final String TARGET_ID = "";

今天告诉你,如果你想先完成任务再研究的话,可以先不用管以上代码。因为这些都不是写在移动端的。换句话说,这个是后台哥们的活。他噼啪一顿敲最后给你返回个  对象或者字符串,用接口返给你。你处理这个结果就好了。怎么处理呢?

↓↓↓

这个MainActivity就是你当前的 类名。resultMessage.getOther()就是后台返给你的值 例如:

resultMessage.getOther():"app_id=2018021321232199\u0026biz_content=%7b%22body%22%3a%22%e7%%a3%ab%e5%95%86%e5%8a%a1%e4%bc%91%e9Nd%2fNcghG3uHqjDvxAQZXW5ouZrQ2mpnRjPT5%2f5JJM%2bEoS1RCXai%2bj87POy1BdYuuwATm7N0x9yGB62qmpBlKzsjJeV02ywrDq90gnORIv64KXdUlweBYj%2bCtTLz5JNn9aNu79JDTFQOawDIXZCgY9YzRw%3d%3d"}

private void init(){

Runnable payRunnable = new Runnable() {
    @Override
    public void run() {
        PayTask alipay = new PayTask(MainActivity.this);
        Map<String, String> result = alipay.payV2(resultMessage.getOther(), true);
        Message msg = new Message();
        msg.what = SDK_PAY_FLAG;
        msg.obj = result;
        mHandler.sendMessage(msg);
    }
    
};
Thread payThread = new Thread(payRunnable);
payThread.start();
}
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();
                if (TextUtils.equals(resultStatus, "9000")) {
                } else {
                    StringUtils.Toast(con, "支付失败");
                }
                break;
            }
            default:
                break;
        }
    }
};

关键代码写完了,剩下的就是在清单文件添加一些权限了:↓↓↓

<!--支付宝↓-->
<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" />

<!--支付宝↑-->
<!--集成支付宝↓-->
<activity
    android:name="com.alipay.sdk.app.H5PayActivity"
    android:configChanges="orientation|keyboardHidden|navigation|screenSize"
    android:exported="false"
    android:screenOrientation="behind"
    android:windowSoftInputMode="adjustResize|stateHidden" />

<activity
    android:name="com.alipay.sdk.app.H5AuthActivity"
    android:configChanges="orientation|keyboardHidden|navigation"
    android:exported="false"
    android:screenOrientation="behind"
    android:windowSoftInputMode="adjustResize|stateHidden" />
<!--集成支付宝↑-->

支付宝sdk一直在升级,网上很多Demo跟不上版本更新,内容也不大一致。所以需要学习最终还是要根据版本

这一版本是 alipaySdk-20180601

//手敲操作 欢迎指正 

展开阅读全文

没有更多推荐了,返回首页