android 建行龙支付教程3:从建行app获取支付结果

目录:前言

            android 建行龙支付教程1:支付url的拼接

            android 建行龙支付教程2:传递支付url给建行,获取支付数据并处理

            android 建行龙支付教程3:从建行app获取支付结果

            demo下载

用户使用h5支付成功后,获取通知串的方法之前我们已经讲过了,参考:android 建行龙支付教程2:传递url给建行,获取支付数据

这一篇,我们会讲如何从建行app获取到支付结果

用户使用建行app支付后,建行app会传递通知串给我们指定需要接收通知串的activity,

通知串格式为

POSID=000000000&BRANCHID=110000000&ORDERID=19991101234&PAYMENT=500.00&CURCODE=01&REMARK1=&REMARK2=&ACC_TYPE=12&SUCCESS=Y&TYPE=1&REFERER=http://www.ccb.com/index.jsp&CLIENTIP=172.0.0.1&ACCDATE=20100907&USRMSG=T4NJx%2FVgocRsLyQnrMZLyuQQkFzMAxQjdqyzf6pM%2Fcg%3D&INSTALLNUM=3&ERRMSG=&USRINFO= T4NJx%2FVgocRsLyQnrMZLyuQQkFzMAxQjdqyzf6pM%2Fcg%3D&DISCOUNT=1.00&SIGN=317b7dd349c1fbcabc26a20ba117a778da5a685c588be5e7378682651062a25b0885e36ee237c19a143f7271c9529a0e9bf198c8735709dc74233d96e1a276cec9d4835422bee597100b0a47d11b44dbba74bdf9cbde0587f138141ce79a3536733d5f6b53ed119c13708dca52ee8d3fcf7e67dcdb20053889adff1989a8c859

获取支付结果的activity可以这样写:

首先,新建一个activity,取名为  CcbPayEntryActivity(类名可以随便取),对了,还记得android 建行龙支付教程1:支付url的拼接里我们讲过传递支付url时有个字符串参数THIRDAPPINFO吗?,在这里需要用到了!!

在AndroidManifest里定义activity属性,并添加

<intent-filter>
     <action android:name="此处为THIRDAPPINFO的值"/>
     <category android:name="android.intent.category.DEFAULT"/>
</intent-filter>

然后在activity的onCreate里调用 getIntent().getStringExtra("CCBPARAM") 即可获取到完整的通知码

整个流程为:

public class CcbPayEntryActivity extends AppCompatActivity {
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        String CCBPARAM = getIntent().getStringExtra("CCBPARAM");
        //CCBPARAM 即为回调结果
    }
}


 <activity android:name=".CcbPayEntryActivity">
            <intent-filter>
                <action android:name="此处为THIRDAPPINFO的值"/>
                <category android:name="android.intent.category.DEFAULT"/>
            </intent-filter>
 </activity>
public class CcbPayEntryActivity extends AppCompatActivity {
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        String CCBPARAM = getIntent().getStringExtra("CCBPARAM");
        //CCBPARAM 即为回调结果

        if(TextUtils.isEmpty(CCBPARAM)){
            //支付失败(null表示失败)
            return;
        }else if(CCBPARAM.contains("SUCCESS=Y")){
            //支付成功 SUCCESS=Y表示成功
        }else {
            //支付失败
        }
        
        //其实写到这里,我们已经获取到支付结果了,
        // 但有些要求,我们需要判断其他数据,这时可以把CCBPARAM分割成map,再提示我们需要的值,例如:
        //获取SUCCESS的值
        Map<String,String> map = new LinkedHashMap<>();

        String[] datas = CCBPARAM.split("&");
        for (String s :datas){
            String[] data = s.split("=");
            if(data.length == 2){
                map.put(data[0],data[1]);
            }
        }
        String SUCCESS = map.get("SUCCESS");

    }
}

好了,建行支付到这里结束

猜你喜欢

转载自blog.csdn.net/jingzz1/article/details/82349638