我试图找出如何使用Braintree支付网关在我的Android应用中检查交易状态。
我已阅读他们的文件,如果没有足够的资金,有2001年的拒绝代码。但这仅指服务器端,我已将其实现为:
...
$nonce = $_POST["payment_method_nonce"];
$amount = $_POST["amount"];
$result = Braintree_Transaction::sale(array(
'amount' => $amount,
'paymentMethodNonce' => $nonce
));
if ($result->success) {
echo("Success! Transaction ID: " . $result->transaction->id);
} else if ($result->transaction->status) {
echo("Error: " . $result->message);
echo("<br/>");
echo("Code: " . $result->transaction->processorResponseCode);
}
...
但是当我检查支付现时,没有办法得到回复,我已经通过阅读标题尝试了,但是我没有得到任何回应:
android实现:
void postNonceToServer(String nonce) {
//set a boolean to veryfy transaction status, then send files in onResume (error if trying in onActivityResult)
transactionDone = true;
AsyncHttpClient client = new AsyncHttpClient();
RequestParams params = new RequestParams();
params.put("payment_method_nonce", nonce);
params.put("amount", total);
client.post("http://edmondvarga.com/laborator/brt_server/payment-methods.php", params,
new AsyncHttpResponseHandler() {
@Override
public void onSuccess(int i, Header[] headers, byte[] bytes) {
HashMap<String, String> result = new HashMap<String, String>(headers.length);
for (Header header : headers) {
result.put(header.getName(), header.getValue());
Log.i("header", "name/value: " + header.getName() + " " + header.getValue() + " or " + header.getName().toString() + " " + header.getValue().toString());
}
}
@Override
public void onFailure(int i, Header[] headers, byte[] bytes, Throwable throwable) {
Log.i("Nonce", "sending nonce failed!");
}
}
);
}
那么在我为客户提供服务之前,我怎么能验证交易的状态呢?
答案 0 :(得分:1)
我是Braintree的开发人员。通常,nonce不包含处理器验证信息,因为在您尝试使用nonce(使用服务器端调用)创建事务之前,这些验证不会运行。
如果您正在使用我们的插入式集成,您可以选择在创建enabling verifications in the control panel的随机数之前运行这些验证。在这种情况下,只有在验证通过时才会成功创建现时。
答案 1 :(得分:0)
PaymentMetodNonce
是一个随机整数。您需要Braintree令牌才能进行交易。您需要创建customer_id。使用customer_id和paymentmethodnonce,您可以生成braintree token
。点击此链接:
Correct way to link PayPal Accounts to vault with Braintree DropUI