首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从服务器检索支付数据google-play in-app和PayPal移动结账

从服务器检索支付数据google-play in-app和PayPal移动结账
EN

Stack Overflow用户
提问于 2013-11-26 09:39:53
回答 1查看 613关注 0票数 0

我正在打电话给服务器,让它交付一个数字产品,我想让服务器检查一下付款是否完成了。我在一个安卓应用中使用了应用内计费和PayPal的移动结账。

他们得到一个RESULT_OK,然后我打电话给服务器,但我想让服务器验证付款是否完成。

我找到了一些文档,但还不清楚我应该使用什么。

对于google play应用内,我应该能够查看这篇文章:

代码语言:javascript
复制
www.googleapis.com/androidpublisher/v1.1/applications/{packageName}/inapp/{productId}/purchases/{token}

我找不到productId是什么,但我猜它是我要发送的SKU,我从哪里获得令牌?

对于PayPal,我发现:

代码语言:javascript
复制
GET https://api.paypal.com/v1/payments/sale/{id}

这样就更清楚了,但我不知道如何将其转换为PHP:https://quar.me/paypal/rest/_sales_look-up-a-sale.html

但文档中的id看起来与我在应用程序中的有很大不同,并且无法正常工作。它不返回任何内容,我的ID类似于AP-8BH89990X7137743X:

代码语言:javascript
复制
{
  "name": "INVALID_RESOURCE_ID",
  "message": "The requested resource ID was not found",
  "information_link": "https://developer.paypal.com/webapps/developer/docs/api/#INVALID_RESOURCE_ID",
  "debug_id": "fec9d138aa55d"
}

越来越接近PayPal,我仍然不确定如何将其转换为PHP语言,以及在使用此表单时如何处理证书。似乎您应该根据PayPal帐户或信用卡的使用使用不同的验证,我如何知道用户使用的是哪种方法?:

代码语言:javascript
复制
curl -s --insecure
-H "X-PAYPAL-SECURITY-USERID: api_username"
-H "X-PAYPAL-SECURITY-PASSWORD: api_password"
-H "X-PAYPAL-SECURITY-SIGNATURE: api_signature"
-H "X-PAYPAL-REQUEST-DATA-FORMAT: NV"
-H "X-PAYPAL-RESPONSE-DATA-FORMAT: NV"
-H "X-PAYPAL-APPLICATION-ID: app_id"
https://svcs.sandbox.paypal.com/AdaptivePayments/PaymentDetails  -d
"payKey=AP-3TY011106S4428730
&requestEnvelope.errorLanguage=en_US"

一些示例代码会对我有很大帮助,我正在使用PHP。

EN

回答 1

Stack Overflow用户

发布于 2013-11-28 06:12:13

您可以使用以下函数:

代码语言:javascript
复制
function verify_play($signed_data, $signature) 
{
  global $public_key_base64;
  $pkey =  "-----BEGIN PUBLIC KEY-----\n".
    chunk_split($public_key_base64, 64,"\n").
    '-----END PUBLIC KEY-----';   
  //using PHP to create an RSA key
  $pkey = openssl_get_publickey($pkey);
  //$signature should be in binary format, but it comes as BASE64. 
  //So, I'll convert it.
  $signature = base64_decode($signature);   
  //using PHP's native support to verify the signature
  $result = openssl_verify(
      $signed_data,
      $signature,
      $pkey,
      OPENSSL_ALGO_SHA1);

  if (0 === $result) 
  {
    return false;
  }
  else if (1 !== $result)
  {
    return false;
  }
  else 
  {
    return true;
  }
} ;

function verify_paypal($payKey, $appID)
{
  global $payPalUser_Id, $payPalPassword, $payPalSig;
$headerArray = array(
'X-PAYPAL-SECURITY-USERID:'.$payPalUser_Id,
'X-PAYPAL-SECURITY-PASSWORD:'.$payPalPassword,
'X-PAYPAL-SECURITY-SIGNATURE:'.$payPalSig,
'X-PAYPAL-REQUEST-DATA-FORMAT:JSON',
'X-PAYPAL-RESPONSE-DATA-FORMAT:XML',
'X-PAYPAL-APPLICATION-ID:'.$appID
);


$url="https://svcs.paypal.com/AdaptivePayments/PaymentDetails?payKey={$payKey}&requestEnvelope.errorLanguage=en_US";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headerArray);
$adaptiveResponse = curl_exec($ch);
curl_close($ch);

echo $adaptiveResponse;

//check following and return true or false:
//Is completed ("status": "COMPLETED").
//Is the expected currency ("currencyCode": "USD").
//Has a paymentInfo within paymentInfoList that:
//Has a receiver with amount and email as expected.
//Is complete ("senderTransactionStatus": "COMPLETED").
};
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20207019

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档