如何获取动态paypal html 表单上加密输入的值?我的服务器端语言是 php。
这是我的html
<form action="https://www.paypal.com/cgi-bin/webscr" method="POST" class="block">
<input name="'.Cart_Form_Cart::FORM_TRY.'" type="hidden" value="1" />
<input name="'.Cart_Form_Cart::FORM_ACTION.'" type="hidden" value="checkout" />
<input type="submit" class="form-submit blue-button pointer margin-top-20" value="Proceed to Checkout" />
<input type="hidden" name="cmd" value="_s-xclick" />
<input type="hidden" name="encrypted" value="**NEED THIS VALUE**" />
</form>
这是我的值数组和 curl
$sendData = array(
"METHOD" => "BMCreateButton",
"VERSION" => "65.2",
"USER" => "my-username",
"PWD" => "my-pass",
"SIGNATURE" => "my-sig",
"BUTTONCODE" => "ENCRYPTED",
"BUTTONTYPE" => "BUYNOW",
"BUTTONSUBTYPE" => "SERVICES",
"BUTTONCOUNTRY" => "GB",
"BUTTONIMAGE" => "reg",
"BUYNOWTEXT" => "BUYNOW",
"L_BUTTONVAR1" => "item_number=$order_id",
"L_BUTTONVAR2" => "item_name=purchase",
"L_BUTTONVAR3" => "amount=$subtotal",
"L_BUTTONVAR4" => "currency_code=GBP",
"L_BUTTONVAR5" => "no_shipping=1",
"L_BUTTONVAR6" => "no_note=1",
"L_BUTTONVAR7" => "notify_url=http://www.abc.co.uk/paypal/ipn.php",
"L_BUTTONVAR8" => "cancel_return=http://www.abc.co.uk/paypal/thanks",
"L_BUTTONVAR9" => "return=http://www.abc.co.uk/paypal/return.php"
);
$url = 'https://api-3t.paypal.com/nvp?';
这是 curl 调用
$curl = curl_init();
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_URL, $url.http_build_query($sendData));
$encrypt = curl_exec($curl);
curl_close($curl);
return $encrypt;
更新:
我将所有内容都绑定(bind)到 php 中的一个变量,然后将该变量作为文本输出到页面。所以对于行
$text .= '<input type="hidden" name="encrypted" value="-----BEGIN PKCS7-----'.$encryption.'-----END PKCS7-----" />';
我该如何制作“.$encryption”。在输入值中不缩进的新行开始?
最佳答案
您可以在这里阅读官方 Paypal 文档:https://developer.paypal.com/docs/classic/paypal-payments-standard/integration-guide/encryptedwebpayments/#id08A3I0P017Q 您可以使用他们的官方工具。
但是我使用的是这个 PHP 类的修改版本 https://github.com/josephholsten/swaplady/blob/master/library/PaypalEwp.php 代码陈旧且骇人听闻,但它确实有效。
您需要创建一个证书,将您的公共(public)证书上传到 paypal 并获取他们将在上传后生成的证书 ID。您还需要他们的公共(public)证书。您使用您的证书、私钥、证书 ID 和 Paypal 公共(public)证书配置该类的实例。
基本上,代码实际做的是使用您的证书对数据字段进行签名,然后使用 paypal 公共(public)证书。
这是我的版本,我将它与 symfony 一起使用,因此使用前缀和 sfConfig,但除此之外它只是 PHP:https://gist.github.com/dincho/7d8d4ca4e1f5dede925b
请注意示例文档(在类源代码中)HTML 字段值在新行上并且没有缩进 - 这非常重要!
关于php - Paypal Encrypted Button,加密值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25474646/