void AndroidPayment::callPayment(std::string payCo, std::string money)
{
cocos2d::JniMethodInfo method;
jobject obj;
//通过cocos2dx的JniHelper获取java类中的静态成员函数,进行调用
//org.cocos2dx.cpp.AppActivity 调用java方法的包名+类名
//order: 为调用java的方法名
//"(Ljava/lang/String;Ljava/lang/String;)V":为jni定义的参数及返回类型
//具体jni的一些调用,可参考:http://zhiweiofli.iteye.com/blog/1830321
bool b = cocos2d::JniHelper::getStaticMethodInfo(method, "org.cocos2dx.cpp.AppActivity", "order", "(Ljava/lang/String;Ljava/lang/String;)V");
if(b)
{
jstring payCode = method.env->NewStringUTF(payCo.c_str());//"30000843784201"
jstring jMsg = method.env->NewStringUTF(money.c_str());//"30000843784202"
method.env->CallStaticVoidMethod(method.classID, method.methodID, payCode, jMsg);
method.env->DeleteLocalRef(payCode);
method.env->DeleteLocalRef(jMsg);
}
}
java中的函数定义:
public static void order(String payCode, String reserve){
AppActivity.mPaycode = payCode;
AppActivity.sContext.smsOrder(AppActivity.sContext, AppActivity.mListener);
}
//调用三方sdk的接口,进行order支付
public void smsOrder(Context context, OnPurchaseListener listener) {
try {
purchase.order(context, mPaycode, listener);
} catch (Exception e) {
e.printStackTrace();
}
}