- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
大家好,我对在用户批准计费计划后在哪里可以找到计费协议(protocol) ID (BAID) 感到困惑。
使用 REST-API
目前paypal在我执行协议(protocol)后返回这个。
Agreement {#346 ▼
-_propMap: array:9 [▼
"id" => "I-N61SE6562BGN"
"state" => "Active"
"description" => "This is a subscription fee for using Talent Scout. It will be use to maintain the site and make users secure."
"payer" => Payer {#349 ▶}
"plan" => Plan {#350 ▶}
"links" => array:5 [▶]
"start_date" => "2019-06-17T07:00:00Z"
"shipping_address" => Address {#364 ▶}
"agreement_details" => AgreementDetails {#365 ▶}
]
}
我很困惑上面代码中的ID是不是BAID。如果它是我正在寻找的 BAID,那么我想将其插入结帐中,这样用户以后结帐时就不必再次登录。
用户选择和结帐时的代码
$payer = new Payer();
$payer->setPaymentMethod('paypal');
$total = 0;
Session::set('duration', $request['duration']);
if($request['duration'] == '1'){
$item_1 = new Item();
$item_1->setName('1 week duration') // item name
->setCurrency('PHP')
->setQuantity(1)
->setPrice($request['hiddenprice'][0]); // unit price
$total = $request['hiddenprice'][0];
}
elseif($request['duration'] == '2'){
$item_1 = new Item();
$item_1->setName('2 weeks duration') // item name
->setCurrency('PHP')
->setQuantity(1)
->setPrice($request['hiddenprice'][1]); // unit price
$total = $request['hiddenprice'][1];
}
elseif ($request['duration'] == '3') {
$item_1 = new Item();
$item_1->setName('3 weeks duration') // item name
->setCurrency('PHP')
->setQuantity(1)
->setPrice($request['hiddenprice'][2]); // unit price
$total = $request['hiddenprice'][2];
}
// add item to list
$item_list = new ItemList();
$item_list->setItems(array($item_1));
$amount = new Amount();
$amount->setCurrency('PHP')
->setTotal($total);
$transaction = new Transaction();
$transaction->setAmount($amount)
->setItemList($item_list)
->setDescription('Your transaction description');
$redirect_urls = new RedirectUrls();
$redirect_urls->setReturnUrl(\URL::route('payment.status'))
->setCancelUrl(\URL::route('payment.status'));
$payment = new Payment();
$payment->setIntent('Sale')
->setPayer($payer)
->setRedirectUrls($redirect_urls)
->setTransactions(array($transaction));
try {
$payment->create($this->_api_context);
} catch (\PayPal\Exception\PPConnectionException $ex) {
if (\Config::get('app.debug')) {
echo "Exception: " . $ex->getMessage() . PHP_EOL;
$err_data = json_decode($ex->getData(), true);
exit;
} else {
die('Some error occur, sorry for inconvenient');
}
}
foreach($payment->getLinks() as $link) {
if($link->getRel() == 'approval_url') {
$redirect_url = $link->getHref();
break;
}
}
// add payment ID to session
Session::put('paypal_payment_id', $payment->getId());
if(isset($redirect_url)) {
// redirect to paypal
return Redirect::away($redirect_url);
}
Session::flash('failed', 'Something went wrong!');
return Redirect::to('/home')
->with('error', 'Unknown error occurred');
}
支付成功代码
// Get the payment ID before session clear
$payment_id = Session::get('paypal_payment_id');
// clear the session payment ID
Session::forget('paypal_payment_id');
if (empty(Input::get('PayerID')) || empty(Input::get('token'))) {
Session::flash('failed', 'Something went wrong!');
return Redirect::to('/paymentprocess')
->with('error', 'Payment failed');
}
$payment = Payment::get($payment_id, $this->_api_context);
// PaymentExecution object includes information necessary
// to execute a PayPal account payment.
// The payer_id is added to the request query parameters
// when the user is redirected from paypal back to your site
$execution = new PaymentExecution();
$execution->setPayerId(Input::get('PayerID'));
//Execute the payment
$result = $payment->execute($execution, $this->_api_context);
// echo '<pre>';print_r($result);echo '</pre>';exit; // DEBUG RESULT, remove it later
// dd($result->id);
if ($result->getState() == 'approved') { // payment made
$data = new Paypalpayment;
$user = User::find(Session::get('id'));
$data->id = null;
$data->payment_id = $result->id;
$data->user_id = Session::get('id');
$data->firstname = $user['firstname'];
$data->lastname = $user['lastname'];
$data->state = 'pending';
$data->duration = Session::get('duration');
$data->save();
Session::forget('duration');
Session::flash('success', 'Payment Successful!');
return Redirect::to('/paymentprocess')
->with('success', 'Payment success');
}
Session::flash('failed', 'Payment failed!!');
return Redirect::to('/paymentprocess')
->with('error', 'Payment failed');
最佳答案
是的,执行协议(protocol)后返回对象中的ID就是计费协议(protocol)ID,以后可以用它来查询协议(protocol)的信息。
这是另一个可能有帮助的例子:https://github.com/paypal/PayPal-PHP-SDK/blob/master/sample/billing/ExecuteAgreement.php
关于php - 在哪里可以找到结算协议(protocol) ID 然后在结帐时使用它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42250216/
我似乎记得在某个地方看到过这个,但在我的一生中,搜索并没有出现我正在寻找的结果。这是我想要的: 我有一个项目存储库。我想将其他 svn 存储库中的库包含在我的项目中。当我对主项目执行 SVN 提交时,
我正在 Magento 中寻找我的结帐购物车页面的解决方案。当我将商品放入购物车时,购物车页面变得空白。!! 我已经尝试了几个选项,但它仍然显示为空白。我启用了 cookie 等,但仍然没有运气。我正
我有一个文件,其中包含 CVS 存储库中包含的许多标签。有没有一种方法可以只使用这些标签 checkout 所有文件及其相关目录,而无需 checkout 整个存储库? 我没有存储库中的目录列表,因此
我正在尝试为客户站点开发一个结帐系统,我想知道执行此操作的最佳方法。请让我知道我在下面尝试过的任何替代方法。 目前我有: 1) 购物车中的商品保存到 $_SESSION 变量 2) 当用户按下“结帐”
我真的很想为我正在开发的市场使用 Paypal。我需要允许用户输入他们的 paypal 电子邮件地址,每当客户购买该用户的产品时,我都会收取少量费用,然后剩下的钱会转到列出该产品的用户。 哪种 pay
有没有办法让输入信用卡信息的部分默认打开,而不是输入paypal信息的部分? 我真的很需要这个,但是到处都找不到! 最佳答案 做到这一点的唯一方法是使用 Express Checkout .在你的Se
我正在使用在 node 下运行的 Stripe Subscription。 我想创建一个预先填写电子邮件地址的新结帐。所以我尝试在客户端做: // Setup event handler to cre
我正在尝试使用 Checkout Dependencies Leiningen 中的功能用于使用 Flambo checkout 的项目.我的 project.clj 看起来像这样: (defproj
谁能告诉我如何使用 Maven 从 SVN 进行结账和进一步更新?我阅读了 maven.apache.org 上的文档,但似乎我对此太愚蠢了,因为我无法理解如何使用 scm:checkout 和 sc
我在 onepage/checkout/success 页面上遇到了麻烦,因为我想将根模板从 2columns-right.phtml 设置为 1column.phtml。应该问题不大... 我得到了
我使用 subversion 创建新存储库的正常工作流程是创建一个新存储库,检查存储库根目录,创建我的分支标签和主干文件夹,并将我的初始文件放在主干中。然后我提交这个“初始导入”,从我的硬盘驱动器中删
我已经使用以下代码向管理员用户添加了自定义元字段:`` function wporg_usermeta_form_field_birthday( $user ) { ?>
我想将 CVS 模块深处的特定文件夹 check out 到我的 Hudson/Jenkins 工作区中。剥离其他选项(例如修剪、分支等),CVS 命令是... cvs checkout -d wor
我正在尝试 git checkout Jenkinsfile跟随方式 stage ('Repo Checkout') { steps { dir('My-Repo') {
我们的大多数项目都使用很多通用代码。我们(最终)正朝着以统一方式管理共享代码的系统迈进。我们将共享代码视为 SVN 中的一个单独项目,然后将其作为外部引用。然而,我们倾向于在项目开发时将外部库指向开发
我已经使用 node.js 实现了 strip 结帐 product.photo是 https://test.s3.amazonaws.com/2213131 const session = awai
将产品添加到购物车时出现问题,它会转到结帐页面,但除了周围的页眉/页脚模板之外,该页面是空的。 我已经尝试了我能想到的一切,它不是主题(发生在所有主题上),我尝试禁用编译器和刷新缓存等.. 服务器日志
有什么方法可以禁用 Magento 中的购物卡/结账/送货选项吗? 我正在开发一个产品比较网站,其价格是从联属网站列出的。 我实际上并没有在我的网站上销售任何东西。 最佳答案 aDVo,如果禁用以下m
我正在做一个订购冰淇淋的程序,用户首先应该在圆锥体或杯子之间进行选择(作为按钮),当他单击按钮时,总数会显示在文本字段中,然后他可以继续选择口味作为复选框,每当他添加额外的 flavor 等时,总数就
我正在使用 HTML 5 required 属性进行表单验证。现在我想要的是,如果表单已经通过了 HTML 5 验证,它应该将用户带到 strip 结帐(我故意在下面的代码中为 SO 问题 xxx 输
我是一名优秀的程序员,十分优秀!