Browse Source

paypro: a more complete example of how to use server outputs.

patch-2
Christopher Jeffrey 11 years ago
parent
commit
3582ff32fc
  1. 45
      examples/PayPro/customer.js
  2. 71
      examples/PayPro/server.js

45
examples/PayPro/customer.js

@ -239,7 +239,7 @@ function sendPayment(msg, callback) {
var pay = new PayPro(); var pay = new PayPro();
pay = pay.makePayment(); pay = pay.makePayment();
pay.set('merchant_data', merchant_data); pay.set('merchant_data', merchant_data);
pay.set('transactions', [createTX()]); pay.set('transactions', [createTX(outputs)]);
pay.set('refund_to', refund_outputs); pay.set('refund_to', refund_outputs);
msg = msg || 'Hi server, I would like to give you some money.'; msg = msg || 'Hi server, I would like to give you some money.';
@ -273,6 +273,19 @@ function sendPayment(msg, callback) {
var memo = ack.get('memo'); var memo = ack.get('memo');
print('Our payment was acknowledged!'); print('Our payment was acknowledged!');
print('Message from Merchant: %s', memo); print('Message from Merchant: %s', memo);
payment = PayPro.Payment.decode(payment);
var pay = new PayPro();
payment = pay.makePayment(payment);
print(payment);
var tx = payment.message.transactions[0];
if (tx.buffer) {
tx.buffer = tx.buffer.slice(tx.offset, tx.limit);
var ptx = new bitcore.Transaction();
ptx.parse(tx.buffer);
tx = ptx;
}
var txid = tx.getHash().toString('hex');
print('First payment txid: %s', txid);
return callback(); return callback();
}); });
}); });
@ -324,7 +337,7 @@ function parseQS(query) {
return out; return out;
} }
function createTX() { function createTX(outputs) {
// Addresses // Addresses
var addrs = [ var addrs = [
'mzTQ66VKcybz9BD1LAqEwMFp9NrBGS82sY', 'mzTQ66VKcybz9BD1LAqEwMFp9NrBGS82sY',
@ -361,10 +374,13 @@ function createTX() {
]; ];
// define transaction output // define transaction output
var outs = [{ var outs = [];
address: addrs[2], outputs.forEach(function(output) {
amount: 0.00003000 outs.push({
}]; address: addrs[0], // dummy address
amount: 0 // dummy value
});
});
// set change address // set change address
var opts = { var opts = {
@ -379,6 +395,23 @@ function createTX() {
.sign(keys) .sign(keys)
.build(); .build();
outputs.forEach(function(output, i) {
var value = output.get('amount');
var script = output.get('script');
var v = new Buffer(8);
v[0] = (value.low >> 0) & 0xff;
v[1] = (value.low >> 8) & 0xff;
v[2] = (value.low >> 16) & 0xff;
v[3] = (value.low >> 24) & 0xff;
v[4] = (value.high >> 0) & 0xff;
v[5] = (value.high >> 8) & 0xff;
v[6] = (value.high >> 16) & 0xff;
v[7] = (value.high >> 24) & 0xff;
var s = script.buffer.slice(script.offset, script.limit);
tx.outs[i].v = v;
tx.outs[i].s = s;
});
print(''); print('');
print('Customer created transaction:'); print('Customer created transaction:');
print(tx.getStandardizedObject()); print(tx.getStandardizedObject());

71
examples/PayPro/server.js

@ -123,41 +123,42 @@ app.post('/-/request', function(req, res, next) {
var outputs = []; var outputs = [];
var po = new PayPro(); [2000, 1000].forEach(function(value) {
po = po.makeOutput(); var po = new PayPro();
// number of satoshis to be paid po = po.makeOutput();
po.set('amount', 0); // number of satoshis to be paid
// a TxOut script where the payment should be sent. similar to OP_CHECKSIG po.set('amount', value);
po.set('script', new Buffer([ // a TxOut script where the payment should be sent. similar to OP_CHECKSIG
118, // OP_DUP po.set('script', new Buffer([
169, // OP_HASH160 118, // OP_DUP
76, // OP_PUSHDATA1 169, // OP_HASH160
20, // number of bytes 76, // OP_PUSHDATA1
0xcf, 20, // number of bytes
0xbe, 0xcf,
0x41, 0xbe,
0xf4, 0x41,
0xa5, 0xf4,
0x18, 0xa5,
0xed, 0x18,
0xc2, 0xed,
0x5a, 0xc2,
0xf7, 0x5a,
0x1b, 0xf7,
0xaf, 0x1b,
0xc7, 0xaf,
0x2f, 0xc7,
0xb6, 0x2f,
0x1b, 0xb6,
0xfc, 0x1b,
0xfc, 0xfc,
0x4f, 0xfc,
0xcd, 0x4f,
136, // OP_EQUALVERIFY 0xcd,
172 // OP_CHECKSIG 136, // OP_EQUALVERIFY
])); 172 // OP_CHECKSIG
]));
outputs.push(po.message); outputs.push(po.message);
});
/** /**
* Payment Details * Payment Details

Loading…
Cancel
Save