目录:前言
android 建行龙支付教程2:传递支付url给建行,获取支付数据并处理
用户使用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");
}
}
好了,建行支付到这里结束