如何在没有商户账户的情况下使用 Braintree 进行买卖双方的付款?
Posted
技术标签:
【中文标题】如何在没有商户账户的情况下使用 Braintree 进行买卖双方的付款?【英文标题】:How to use Braintree for buyer to seller payments without Merchant account? 【发布时间】:2019-11-10 21:00:07 【问题描述】:我正在为物业租赁管理开发一个 android 应用程序,租户可以直接向房东支付租金。 我想使用 Braintree,因为它支持信用卡/借记卡、PayPal 和 谷歌支付。
到目前为止我已经尝试过,
-
我已经尝试过创建 Braintree 的沙盒账户并进行简单的支付转账给单个商家。
探索了 Stripe Connect,但文档看起来很耗时。
还探索了 Braintree Direct,但它显示的文档与单一商户支付转账相同。我已按照上述步骤进行操作,并引导我实施单一商家付款转移。
我的问题:
-
用户如何通过 Android SDK 或服务器上的 php sdk 使用 Braintree 直接向其他用户发送付款?
我需要 Braintree 的企业帐户来实施上述服务吗?
您能否推荐任何有关买方到卖方付款集成的示例,无论使用任何编程语言,但使用 Braintree / Paypal?
这是根据文档处理付款的服务器代码:
$result=Braintree_Transaction::sale([
'amount'=>$amount,
'paymentMethodNonce'=>$nonce,
'options'=> [
'submitForSettlement'=>True
]
]);
我愿意接受任何其他解决方案,只要它通过示例或参考文档符合我的需要。
那么,有没有什么参数可以让我们直接向收款人转账?
我知道上面有很多问题,但我真的很困惑,因为没有关于 android 应用程序的适当文档,也没有找到合适的集成示例。
任何指导都会有所帮助。
【问题讨论】:
好的,更新了我的问题。现在,如何使用braintree直接处理租户向房东支付的租金? 如果您问“如何避免创建商家帐户”,听起来您需要来自 articles.braintreepayments.com/get-started/… 的“仅网关集成”,并且需要直接联系 Braintree。否则,您应该更详细地解释 developers.braintreepayments.com/start/hello-client/android/v2 是如何不合适的。或链接到您引用的 PayPal 或 Braintree 文档。 @MorrisonChang ,我已经用我提到的文档链接更新了我的问题描述以及我对 Braintree 的需求。 @MorrisonChang 我主要担心的是没有单一的房东也没有单一的租户,所以 Braintree Direct 是否支持这种任何用户都可以直接向任何其他用户付款的设施? 我花了一段时间才找到,使用的关键字是“支付提供商”,用于向房东汇款。付款/付款使用不同的 API,因此您应该联系 Braintree about Hyperwallet 和/或自行调查 Hyperwallet 并检查他们的 developer documentation 【参考方案1】:这是实现 Braintree 的适当文档。看看这个 -
https://developers.braintreepayments.com/guides/drop-in/setup-and-integration/android/v2
在你的 gradle 中添加这个 -
dependencies
implementation 'com.braintreepayments.api:drop-in:3.7.1'
在您的付款按钮中调用 -
public void onBraintreeSubmit(View v)
DropInRequest dropInRequest = new DropInRequest().clientToken(clientToken);
startActivityForResult(dropInRequest.getIntent(this), REQUEST_CODE);
您将在 Activity 的 onActivtyResult 中获得一个随机数 -
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
if (requestCode == REQUEST_CODE)
if (resultCode == RESULT_OK)
// use the result to update your UI and send the payment method nonce to your server
DropInResult result = data.getParcelableExtra(DropInResult.EXTRA_DROP_IN_RESULT);
else if (resultCode == RESULT_CANCELED)
// the user canceled
else
// handle errors here, an exception may be available in
Exception error = (Exception) data.getSerializableExtra(DropInActivity.EXTRA_ERROR);
然后,如果您不使用卡,则调用配置不同的付款方式,例如 Google Pay 等。
希望对您有所帮助。
【讨论】:
感谢您的回答,但我已经完成了。我正在寻找来自 Braintree 的买方到卖方集成服务。请仔细阅读我的问题,我已经用链接更新了它以解释我想要实现的目标。 当然。感谢更新。【参考方案2】:public void getpaymentstatus(final Context context,String token,String user_id,String ride_id)
ApiServiceInterface service=getApiInstance(context);
try
service.Passengerpaymentstatus(token,user_id,ride_id)
.enqueue(new Callback<PaymentStatus>()
@Override
public void onResponse(Call<PaymentStatus> call, Response<PaymentStatus> response)
if (response.isSuccessful())
if (response!=null)
try
PaymentStatus paymentStatus=response.body();
passengerPaymentStatus.Passengerpaymentstatusclass(paymentStatus);
catch (Exception e)
e.printStackTrace();
@Override
public void onFailure(Call<PaymentStatus> call, Throwable t)
String message=context.getResources().getString(R.string.error_message);
PopupHelper.displayAlertDialog(context, message);
t.printStackTrace();
);
catch (Exception e)
e.printStackTrace();
【讨论】:
【参考方案3】:private ApiServiceInterface getApiInstance(Context context)
HttpLoggingInterceptor logInter = new HttpLoggingInterceptor();
logInter.setLevel(HttpLoggingInterceptor.Level.BODY);
OkHttpClient mIntercepter = new OkHttpClient.Builder()
.addInterceptor(logInter)
.build();
String BASE_URL = "http://192.168.0.14:80/api/auth/";
Retrofit retrofitInstance = new Retrofit.Builder()
//.addConverterFactory(new NullOnEmptyConverterFactory())
.addConverterFactory(GsonConverterFactory.create())
.baseUrl(BASE_URL)
.client(mIntercepter)
.build();
return retrofitInstance.create(ApiServiceInterface.class);
【讨论】:
以上是关于如何在没有商户账户的情况下使用 Braintree 进行买卖双方的付款?的主要内容,如果未能解决你的问题,请参考以下文章
来自paypal沙箱的消息:“此PayPal交易的货币必须与商户账户的货币匹配”